<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>得物技术</title>
    <link>https://wechat2rss.xlab.app/feed/f3a42bd249ec6e8834ae761d8d0f85a949950944.xml</link>
    <description>技术知识分享交流平台，与你一同走向技术的云端。&#xA;(wechat feed made by @ttttmr https://wechat2rss.xlab.app)</description>
    <managingEditor> (得物技术)</managingEditor>
    <image>
      <url>https://wx.qlogo.cn/mmhead/Q3auHgzwzM6shiaicMEVnBkOVxfksCbddUsmSmRaCWFb9k5Tf7kXpaPA/0</url>
      <title>得物技术</title>
      <link>https://wechat2rss.xlab.app/feed/f3a42bd249ec6e8834ae761d8d0f85a949950944.xml</link>
    </image>
    <item>
      <title>得物小摊 AI Native 演进实录：用 Harness 构建可控 AI 交付</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546690&amp;idx=1&amp;sn=8387c3c66eb9c1ebb2d9842a3bae9348</link>
      <description>AI Native 的上限不是生成速度。一人全栈的真实复盘，讲透如何用 Harness 把&#34;生成得快&#34;变成&#34;交付得稳&#34;——可检查、可复验、可追责。</description>
      <content:encoded><![CDATA[<p>原创 <span>正飞</span> <span>2026-09-02 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c5ee747c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvicVs4s2viadrQuuatapvdib3sbAo2PIIjLMLE1GPTWAtnzxa3h9CZMzhicr6yNUkPrTIK4Qa7jL9yTEsGP5ia2yuA0mN4GOLxf0Rw%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>AI Native 的上限不是生成速度。一人全栈的真实复盘，讲透如何用 Harness 把"生成得快"变成"交付得稳"——可检查、可复验、可追责。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、引言</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、一次语义分叉：一个数字如何影响整条交付链</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、从 Prompt 到 Harness：四个组件接管交付状态</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、Harness 第一层：Version Contract 锁定事实与边界</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、Harness 第二层：Evidence Gate 决定能不能往前走</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、Harness 第三层：Repair Loop 让系统在真实反馈后升级</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">七、真实战役：一笔多 SKU 订单穿过多个运行时</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">八、硬账本：已经建立的能力与待补齐的环节</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">九、结语：AI Native 的上限，不是生成速度</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">引言</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">得物小摊是一个从 0 到 1 孵化的创新业务。在一段时间里，我需要同时负责 H5、运营后台、Node 网关和 Go 服务的设计、实现、联调和交付。</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">随着业务推进和协作范围扩大，一次需求常常要穿过多个工程与运行时。我开始让 AI 并行参与这些模块的开发。代码产出速度明显提高，一个人也像拥有了一支&#34;虚拟全栈团队&#34;。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4824074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063036" src="https://wechat2rss.xlab.app/img-proxy/?k=057a4ba2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHu3FBGtIjaiaUeaP9icNcBtricUiasia6iaXQuYWXpypW5oWcqUd2TwyBB9Z6n7jhBXlJRV5ltibSx5HQ9hKEkWkQTQdbY1fSOY5le3zg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI 参与多模块协作后，一个人的有效工程半径得到扩展。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 80%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8606356968215159" data-s="300,640" data-type="png" data-w="1636" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063033" src="https://wechat2rss.xlab.app/img-proxy/?k=78e12435&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHto3yfKIQM0jL5iaIxia3bBo9hCgkYI17R3J2Kp0q15m5ibcdMIGXJmJKicl88yDaDJzD6eCu7huMicicibd7GicDazvO2lntqtQVh172M%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Codex 基于近期任务记录给出的开发能力评价。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">但工程半径扩大以后，新的问题随之出现：怎样保证同一条业务规则跨过不同运行时后仍不变形，改动不越界，验证、验收和发布仍然可追溯？为了解决它，我把工作重点从“写出更聪明的 Prompt”转向探索一套面向单人全栈交付的 Harness。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在这条链路里，AI 可以检索、实现、补测试、整理报告，甚至同时推动多个模块；但每一次状态跃迁都必须有合同和证据支撑：需求是否读对，改动是否越界，业务不变量是否跨运行时成立，产品是否在真实设备确认，生产发布是否留下可追溯锚点。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我把这套系统叫做 </span><strong style="box-sizing: border-box;"><span leaf="">Delivery Harness</span></strong><span leaf="">。它把一个人的工程判断固化成四个可复用组件：</span><strong style="box-sizing: border-box;"><span leaf="">Version Contract</span></strong><span leaf=""> 锁定事实，</span><strong style="box-sizing: border-box;"><span leaf="">Execution Boundary</span></strong><span leaf=""> 限制改动半径，Evidence Gate 控制状态跃迁，</span><strong style="box-sizing: border-box;"><span leaf="">Repair Loop</span></strong><span leaf=""> 把真实反馈变成下一次默认生效的规则。它不替代工程判断，而是把判断发生的时机、输入和结果留在可复查的链路里。即使由一个人推进，后续评审者也能看清为什么这样做、凭什么继续走。下面这篇复盘，讲的是它为什么出现、已经接住了什么，以及下一步还要继续建设什么。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">二</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一次语义分叉：一个数字如何影响整条交付链</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.412962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063035" src="https://wechat2rss.xlab.app/img-proxy/?k=4f790fb3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvpEziaUZ5GtnzYCMyvnxWaN6caiahicZhTDIYlSR0nphAwfUybSkfpZGgWHicrxMRQWR2ePicGHPYx0xYiaYId2VCbnbNIHwibaU689M%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">真正让我警惕的第一个语义分叉很小：拼团页面里一个看似普通的进度数字，目标人数究竟取最低成团数，还是当前可售库存？</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">两个数字都在系统里，也都能解释得通。最低成团数表达“达到什么条件才成团”，库存表达“最多还能卖多少”。公式很简单，危险的是如果我在这里猜错，错误会顺着接口、页面、分享海报和验收用例一路传下去。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">最初输入只是一段讨论。产品关心用户看到的进度是否合理，研发关心字段从哪里取，测试关心怎样构造可复现的状态。如果直接选一个“看起来更合理”的值开始写代码，后面的设计、实现和测试都会在错误前提上自洽。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这里的核心是一条业务语义分叉。AI 未必更容易猜错，却能用极高速度把一次猜测扩散成接口、页面、海报和测试里的共同前提。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px 5px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9873217115689382" data-s="300,640" data-type="png" data-w="1262" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063034" src="https://wechat2rss.xlab.app/img-proxy/?k=15b67fe1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtQGfkH9nzNExROhVAPcbx3dUoGvwu5Y6GlrV5drIhqftd6qVq1tDPQT9654wCF8bib2fuIAkBmd2QN0AOICFIoos5SO1nHxzRs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">原始讨论</span></p></div></div><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.43515625" data-s="300,640" data-type="png" data-w="1280" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063032" src="https://wechat2rss.xlab.app/img-proxy/?k=a20f05ef&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsbKeicFx6snGEg3kOjgm2icnjCdhdEyQhCrlkLfstwkPojibvpI70lmsZPe1IkicpaicKibCTwlPvzv7UjdPbv9mNUACRlZiayEVRuwo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 14px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">成团目标与满团目标讨论</span></p></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我随后把失真链拆成五个控制点：输入偏差、执行越界、验证缺位、缺陷逃逸和反馈断裂。它们会级联放大：输入漏掉一条规则，设计里便没有对应分支；测试再锚定已有实现，最终，一个不存在的业务路径可能带着“已验证”的标签进入验收。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Delivery Harness 的第一目标很直接：让错误在最便宜、最靠前的位置暴露，并阻止未经证明的状态继续向后传播。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">从 Prompt 到 Harness：四个组件接管交付状态</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这套 Harness 包裹在模型之外，接管四件事：任务读取哪份事实、可以修改多大范围、结果怎样被证明、什么条件下必须停止。模型负责生成与判断，Harness 负责边界与状态。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Prompt 继续承载意图和上下文；权限、发布与证据门禁则交给确定性系统。路径、分支、文档登记、仓库范围和发布锚点一旦有客观答案，就不该让模型在每次任务里重新猜。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">我会先区分两类问题：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">路径、分支、文件范围、接口是否经过统一网关、发布记录是否完整，这些有明确答案，适合脚本和门禁。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">产品口径、架构取舍、真实体验、跨文件语义，这些需要理解上下文，可以由受约束的 Agent 提出判断，但最终仍要有人负责。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四个组件共同形成一条闭环：Version Contract 给出事实；Execution Boundary 约束执行；Evidence Gate 决定是否推进；Repair Loop 再把真实反馈写回合同。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.23170731707317074" data-s="300,640" data-type="png" data-w="1804" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063022" src="https://wechat2rss.xlab.app/img-proxy/?k=6a7203af&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsC2PX6d1xWiaPHNqiab8MsprxS505qIibtXGjhK1AfpovplwOYFXK8L5AZHxnGnVWGhmfrcjJjVyDqLZwsfdTMDICqOmpMYIk9Qo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">四</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Harness 第一层：Version Contract 锁定事实与边界</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Version Contract 与 Execution Boundary 共同解决两个最容易失控的问题：</span></strong><span leaf="">本次交付究竟以什么为准，以及 Agent 到底被允许做什么。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“应该看什么”不是把所有资料一次性塞进上下文。事实应放在最接近它的位置：确认后的产品口径留在产品文档；影响范围和技术方案留在规格变更里；版本与交付仓库进入版本合同；验收结果进入统一报告；真实缺陷进入 Repair Case。任务开始时只加载本轮判断需要的部分。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这样做有一条硬边界：临时推断不能自动变成长期事实。只有被文档、代码或验证结果确认后，它才可以进入后续任务的默认上下文。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“允许做什么”则落到仓库和环境规则里。一次需求使用独立工作区和分支；跨仓改动要逐仓声明；客户端不能绕过统一请求层直连业务服务；测试环境的特殊入口不能顺手扩展到预发或生产；涉及外部写入、发布和消息发送时，没有明确授权就停止。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Worktree：把需求边界变成物理隔离</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在这个项目里，worktree 不是一个 Git 使用技巧，而是 Execution Boundary 的第一层实现。每个新的产品需求、缺陷或独立技术需求，在首次写入前都要从已核对的稳定基线创建专属 worktree；纯只读分析不创建。已确认版本按版本与主题命名；未排期原型按日期与主题命名；开发分支使用统一命名空间。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">同一需求从开发、UI 与接口联动、联调修复、验收整改到发布收口，全程复用第一次创建的 worktree 和分支。涉及多个代码仓时，每个仓库各保留一个工作现场。因此这里的隔离单位可以写成一句公式：一个需求 × 一个仓库 = 一个 worktree。多个仓库通过同一份版本合同关联，却不会共享未提交文件、分支状态和依赖现场。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 65%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.8166666666666667" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063030" src="https://wechat2rss.xlab.app/img-proxy/?k=861cc866&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtdVIS2p5Iewfia0XPBEib7ltsjmfOwewlZX029hP8zG7CndU0sNnREqHWsHeBSoGiaAp2KwuIdFb7zukr2u91kdG0FYS1K9LiaOZk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Worktree 生命周期：只读任务不建树；首次写入先核对基线，再按仓库隔离工作现场；开发到发布收口持续复用，生产证据完整后才能安全清理。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">清理也属于交付合同。只有生产发布记录成功、所有需保留提交已推送、发布记录完整且证据已经持久化，才允许从另一棵已注册工作树执行 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">git worktree remove</span></span><span leaf="">，再执行 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">git worktree prune</span></span><span leaf="">；禁止直接删除目录、禁止强制移除、也不会自动删除分支。这些约束进入版本合同和交付检查。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">下面是一份经过抽象的版本合同结构示意：多份需求与技术文档进入同一版本，不同代码仓分别声明交付范围；测试、预发、统一验收与生产发布分别记录状态，未完成项保持 pending。图中只展示结构，不对应真实版本、仓库或发布数据。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8646431501230517" data-s="300,640" data-type="png" data-w="1219" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063024" src="https://wechat2rss.xlab.app/img-proxy/?k=e29f56d0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtOdDEhnnGWX2a6NE3zFpC0JFMUzTuNbK3E9aZSWnI6Ko8lqKZHxI4e4YXY7Ag5KEJyEiblAq9l1zsvfs1Ux3v9L7w8JicX1ePIs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="png" data-w="1100" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063027" src="https://wechat2rss.xlab.app/img-proxy/?k=e92f304b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsKYERnBIFvq4lib5Lr5aHNO4mniaFTr6iaMiciaKoQ2BrSXQc3L3Zj9GIubekJgnQ4YA2pqnXORiauerWAFsM9eI3x2rYelZwgJSHicI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">五</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Harness 第二层：Evidence Gate 决定能不能往前走</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4824074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063038" src="https://wechat2rss.xlab.app/img-proxy/?k=ac9531cc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsDSaiaoxuQnNtVkFmTO1Dznj9CNS4goTxjLpwoc7vWetvuxeE2njhibcukOqDXt6awL8M71tz3lSvRCcJ8Qt1bwxwWSicXSyY3s0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Evidence Gate 不接受一句“代码完成”。编译、单测、接口验证、真实设备验收、生产发布和稳定分支合入，是六个不同状态；每一步都要拿出与结论匹配的证据。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">每次交付必须回答四个问题：本版本登记了哪些需求与仓库；每条产品规则对应哪个用例；用例产生了什么可复查证据；哪些体验判断仍必须由产品责任人完成。答不全，状态就停在原地。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">统一验收报告是一张“文档—需求—用例—证据”映射，而不是一段完成宣言。</span></strong><span leaf="">任何人都应能沿着它找到命令结果、真机截图、运行记录和未覆盖项。文档读取失败、规则没有用例、跨模块没有回执，状态统一保持 pending。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.1481481481481481" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063023" src="https://wechat2rss.xlab.app/img-proxy/?k=fa09a11f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHu8FibRExKGicHrib3G5p1iaI5JyZ1X86QQaWibo57MO721dnNA9gQARUzyVmx5pMnwsYTxtXibvHdyxVHiarYrQXVwQtlxgBdWXicoRfM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 14px;text-align: justify;font-family: PingFangSC-light;box-sizing: border-box;"><p style="text-align: center;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">匿名验收矩阵</span></p></div></div><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 68%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.6842105263157894" data-s="300,640" data-type="png" data-w="760" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063026" src="https://wechat2rss.xlab.app/img-proxy/?k=55b14b54&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuQwxzdnA3Ga7DeliaIpjH1spDpjxsDCa3Lrr4R2gT5GZj2KNQI2NuLfC6PgRhY8kvDy7ClTRNEdbetLbN35hgJRINVqStiaxHMU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 14px;text-align: justify;font-family: PingFangSC-light;box-sizing: border-box;"><p style="text-align: center;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">产品风格匿名 Mock</span></p></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这里最容易混淆的是交付状态。它们之间不能画等号：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">代码完成</span></code><br/><code><span leaf="">≠ 研发验证通过</span></code><br/><code><span leaf="">≠ 具备产品验收条件</span></code><br/><code><span leaf="">≠ 产品真实环境验收通过</span></code><br/><code><span leaf="">≠ 已生产发布</span></code><br/><code><span leaf="">≠ 已合入稳定分支</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">自动化适合检查接口、状态、边界和页面元素。真实设备里的操作是否别扭，文案是否容易误解，容器和网络条件下的体验是否符合预期，仍需要产品责任人判断。AI 可以整理证据，不能替责任人签字。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">下一阶段计划引入独立评估视角：由另一个评估 Agent 只读取需求、diff 和测试证据，再独立判断是否允许进入验收。生成与评估进一步分离后，证据门禁会更稳定。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">六</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Harness 第三层：Repair Loop 让系统在真实反馈后升级</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Repair Loop 处理的是系统记忆。对跨模块、跨环境或容易复发的问题，只记录“最后改了什么”没有价值；原始反馈、定位过程、失败基线、候选结果与回归结果必须落在同一个 Repair Case 里。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我给 Repair Case 设置了一个较严格的完成条件：在不同提交上，基线检查必须失败；候选修复必须通过；回归检查也必须通过。客观上无法建立 red/green 对照时，Case 停在较早阶段并说明限制。环境恢复不能写成代码修复；偶现问题也不能因为暂时没复现就宣布解决。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一条反馈只有改变了下一次任务的默认行为，才算真正被系统吸收：能写成测试的进入测试；能固化为权限边界的进入门禁；能成为版本不变量的进入合同。Repair Loop 的终点不是复盘文档，而是下一次同类错误更早失败。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">七</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">真实战役：一笔多 SKU 订单穿过多个运行时</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.412962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063031" src="https://wechat2rss.xlab.app/img-proxy/?k=6c2ab0fd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuLYKvx324nCyyWA2wEBj2IUtQQVFl7TUJnuCZKDJxOiale4ibBL4mNPDUImvMyh1x9DN8qpMgV3GwFIJe5N5uh4UTcs83uyI0jo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这套 Harness 第一次完整经受跨运行时考验，是一次多 SKU 履约改造。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一笔订单从用户端出发，经过管理端、Node 服务和 Go 服务，随后进入下游系统。任何一层把“订单”误解成“SKU”，都会制造局部正确、整体错误：前端显示完整，后台只处理一部分；接口返回成功，下游却生成多条互不关联的履约记录。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们先把唯一不能被拆散的业务不变量写进合同：订单是履约原子单位。多个 SKU 共享同一次履约决策，要么整单接受，要么整单失败；外部回执必须依靠持久化的稳定标识回到原订单，不能靠当前请求临时猜关联关系。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">多 SKU 履约的跨运行时链路。用户端、管理端、Node 服务与 Go 服务分属不同运行时，但必须共同保持订单级原子性。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.46640625" data-s="300,640" data-type="png" data-w="1280" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063025" src="https://wechat2rss.xlab.app/img-proxy/?k=7321baa7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHte3TnoZRKibddeznVzGzjzlhoqqRSF4iaT4iaN7O61Y23BG29QB7TNfNaFle4dmLzswSPeucXELudt40Y8nq7YiaCRa3UY0iaM09ic8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Delivery Harness 在这里做了一件关键的事：把“订单级原子性”从一句产品口径变成跨运行时不变量。产品文档定义语义；接口合同约束输入输出；服务端校验资源与状态；测试主动构造部分失败的反例；验收报告记录跨服务结果；相关代码仓分别保留分支、提交与发布证据。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">八</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">硬账本：已经建立的能力与待补齐的环节</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4824074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063037" src="https://wechat2rss.xlab.app/img-proxy/?k=cbd592e5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHv1Gq0gOWQuGowlVYlhOOvb8pXeuicFibK5nuMd5XAD8FQwd34NIRQySeoQzzV7rtQLe7Usa8AiaTFqMhNF1zMv2CSr06UcxMlG4Y%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这套系统已经可以运行，但还不是一张可以宣布&#34;大功告成&#34;的架构图。目前还有三个方面需要继续建设。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一：</span></strong><span leaf="">统一本地与持续集成的检查入口，让同一套规则覆盖真实提交与远端流水线。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第二：</span></strong><span leaf="">把完整的版本合同与交付合同接入流水线，使本地验证与远端门禁采用一致标准。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第三：</span></strong><span leaf="">统一稳定分支与版本合同的语义，让系统可以可靠判断版本是否已经进入稳定主线。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">下一阶段的目标：</span></strong><span leaf="">让独立评估 Agent 只读取需求、diff 与证据作出第二判断；把完整合同检查接入 CI；再用运行观测把线上反馈自动送回 Repair Loop。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">九</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">结语：AI Native 的上限，不是生成速度</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Delivery Harness</span></strong><span leaf=""> 会让一次任务多出几步：核对事实源、确认边界、运行合同检查、整理证据、等待真实环境验收。只看生成瞬间，它更慢；放到完整交付周期里，它是在提前偿还返工、越权、误报和不可复现的成本。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">它真正放大的是一个人的有效工程半径：</span></strong><span leaf="">我可以让 AI 同时进入四个运行时，却不必把所有质量判断留在自己的记忆里。合同负责守边界；证据负责推状态；真实反馈负责升级系统。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI Native 交付的终局，是让模型承担越来越多执行工作，同时让每一个交付结论都能被检查、被复验、被追责。速度可以由模型放大，质量秩序必须由系统托底。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">也正因为如此，我越来越确定，AI Native 改变的不会只是研发效率，也不会停在“产品写 PRD、研发拿 PRD 让 AI 生成代码”。当需求、版本、实现和证据开始由同一套 Harness 贯通，产研协作的基本单元会从文档交接变成</span><strong style="box-sizing: border-box;"><span leaf="">可验证假设：</span></strong><span leaf="">产品定义业务不变量和真实体验标准；研发把它们翻译成接口合同、状态机、门禁与观测；AI 在两者之间持续补全方案、生成实现、构造反例并回放证据。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">产品不必等到开发完成才第一次验收，研发也不必等到 PRD 看起来“百分之百完整”才开始工作。双方可以围绕同一事实源并行推进，但状态跃迁仍只有一套标准：假设是否被确认；边界是否被执行；证据是否足以支撑下一步。AI 负责扩大探索与执行速度，人负责业务判断、工程取舍和最终签字。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如果你对这个从 0 到 1 的创新业务感兴趣，也欢迎在</span><strong style="box-sizing: border-box;"><span leaf="">得物搜索“娃衣开团”</span></strong><span leaf="">，看看这套交付方式最终承载的真实产品体验。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.654296875" data-s="300,640" data-type="jpeg" data-w="1024" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063028" src="https://wechat2rss.xlab.app/img-proxy/?k=05c2d1a7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuziblIgweas1wPohRLzeXXaOKf6BotXML5Ha5FMkM20KZr2P3lNPYcPuymv1BGUcFpL0JJWtlXBWee8NwUoCzpgmXgoicoMAfY8%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546577&amp;idx=1&amp;sn=e958fbb5a7701d92612f0da1549ad0ad&amp;scene=21#wechat_redirect" textvalue="企业级 MultiAgent 的记忆系统：短期上下文与四层记忆架构实现｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">企业级 MultiAgent 的记忆系统：短期上下文与四层记忆架构实现｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546472&amp;idx=1&amp;sn=f81736e344109ae41c6f78127d847519&amp;scene=21#wechat_redirect" textvalue="EP-Harness：从个人 AI Coding 到团队级 Agent 工作流｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">EP-Harness：从个人 AI Coding 到团队级 Agent 工作流｜得物技术</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546472&amp;idx=1&amp;sn=f81736e344109ae41c6f78127d847519&amp;scene=21#wechat_redirect" textvalue="EP-Harness：从个人 AI Coding 到团队级 Agent 工作流｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">EP-Harness：从个人 AI Coding 到团队级 Agent 工作流｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546407&amp;idx=1&amp;sn=bf3d73aab43b7634074d2331a14764f5&amp;scene=21#wechat_redirect" textvalue="得物知识问答：复合检索 Agent 的系统设计实践" data-itemshowtype="0" linktype="text" data-linktype="2">得物知识问答：复合检索 Agent 的系统设计实践</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546363&amp;idx=1&amp;sn=e497e41b6f529e7efb771672bc6864a0&amp;scene=21#wechat_redirect" textvalue="实战从零开始构建一个Coding Agent：Violin ｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">实战从零开始构建一个Coding Agent：Violin ｜得物技术</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 / 正飞</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100063029" src="https://wechat2rss.xlab.app/img-proxy/?k=b8ba3f1e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHs69w7LORqQ6duTmDddrLOk2OJssZFkU5LH1hFah8ic157812xsT5ojBZBvBDlch5bbaxcdZFEIPTnK14sib2YqMiaFZZIRmbxia4g%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=3dc59436&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546690%26idx%3D1%26sn%3D8387c3c66eb9c1ebb2d9842a3bae9348">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 02 Sep 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>入职得物五年后</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546614&amp;idx=1&amp;sn=76de4b4d18e26eedc3c6d1dfb49a6675</link>
      <description>对话两位司龄5年的校招生，跟大家一起分享他们的故事～ 每年都有一批校招生走进得物技术部，他们大多都一样：有点紧张，有点期待，心里没底。五年后，他们怎么样了？</description>
      <content:encoded><![CDATA[<p>原创 <span>技术达人养成策划</span> <span>2026-08-31 12:00</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=58f75275&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHvWpe23D2Nu2ibHza3ZNctfaDZC26W2DC7fSxhly7cV7bE9X1Kia5kBbEdjicXunE78WDv9ASm73oV7ew6hibLatCicexRiajNluvzwU%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>对话两位司龄5年的校招生，跟大家一起分享他们的故事～ 每年都有一批校招生走进得物技术部，他们大多都一样：有点紧张，有点期待，心里没底。五年后，他们怎么样了？</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">每年都有一批校招生走进得物技术部，他们大多都一样：有点紧张，有点期待，心里没底。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五年后，他们怎么样了？</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这期我们找到了两位司龄5年的校招生——海狸和骅征，跟大家一起分享他们的故事。</span></p></div><div style="margin: 20px 0% 10px;text-align: center;box-sizing: border-box;"><div style="padding: 3px;display: inline-block;border-bottom: 5px solid rgb(3, 221, 221);color: rgb(3, 221, 221);box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“没有答案的时候，先把事情做起来”</span></p></div></div><div style="text-align: center;font-size: 14px;color: rgb(160, 160, 160);box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">海狸(Hayley)，2021年通过校招进入得物，</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">目前在交易平台做后端开发。</span></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6675925925925926" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062958" src="https://wechat2rss.xlab.app/img-proxy/?k=218c3f89&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsibicPKRVelU3yRDT5sAGZ2IwWeSG7H0BIhaiajUaPecL8biblUG8IvhUN9S51dXGtqwz0xPynAeoxa868JONEvTrEH1bzaG4kAD4%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-size: 14px;font-family: PingFangSC-light;color: rgb(0, 0, 0);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">海狸（Hayley）目前在交易平台从事后端开发。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">她给自己取“海狸”这个花名，是因为海狸擅长筑坝、修渠、搭巢，会主动改造自己的栖息环境。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“我觉得这和技术人的工作很像。不是只靠一时灵感做出一个漂亮的东西，而是通过持续建设，让系统和环境一点点变得更好。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">进入得物后，海狸从后端开发做起。参与AI导购项目后，她开始面对一类与过去不同的问题：需求并不总是清晰，答案也不一定只有一个。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">项目需要AI相关的生产和分发导购内容。相比传统的接口开发，内容生产涉及用户理解、业务判断和效果验证，很多事情无法在一开始就被完整定义。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">项目推进过程中，方案经历了多次调整。每一次变化，背后都对应着新的问题：如何让AI更稳定地完成任务，如何让系统能够持续运行，如何让方案真正适应业务场景。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“那段时间，每次升级，都像把之前搭好的积木推倒重来。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">海狸应对反复试错的方法，是把过程完整记录下来。每次架构调整、问题现象、决策原因和复盘结论，她都会及时留下记录。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“知道哪些坑踩过了、哪些路走不通，后面遇到类似问题时，就不用重新摸索。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这段经历也让她开始承担更多连接技术与业务的工作。除了原有的开发任务，她还需要参与业务对接、需求挖掘和方案落地。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">更大的变化在于，她不能只等待业务提出需求。业务同学未必能一开始就准确描述问题，而她需要进入具体场景，理解目标背后的真实痛点，再判断AI能否提供合适的解决方案。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“不能只是别人说什么我做什么。很多时候，要先把问题找出来，再去想技术怎么解决。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个过程并不轻松。技术、业务和项目推进之间不断切换，也让她重新认识了技术工作的边界：写出代码只是开始，真正重要的是让方案在真实环境中运转起来，并持续产生价值。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">从后端开发到参与复杂的业务和AI项目，从相对明确的技术任务到开放性的问题，海狸逐渐形成了自己的工作方法。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“短期可能靠小聪明，但长期真正重要的，是把一件事持续做对的能力。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">她也强调，要把自己当成系统的第一个用户。只有亲自进入流程、体验工具、观察问题，才能判断一个产品究竟只是“做出来了”，还是确实解决了问题。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">对海狸来说，技术工作的价值，不只是写出一段正确的代码，也包括在事情还没有答案的时候，先把问题拆开、把方案做起来，再在一次次实践中找到更好的方向。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“技术会过时，但解决问题的能力不会。没有答案的时候，先把事情做起来。”</span></p></div><div style="margin: 20px 0% 10px;text-align: center;box-sizing: border-box;"><div style="padding: 3px;display: inline-block;border-bottom: 5px solid rgb(3, 221, 221);color: rgb(3, 221, 221);box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“不管这件事有没有人看见，</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">都得把它做成自己拿得出手的样子”</span></p></div></div><div style="text-align: center;font-size: 14px;color: rgb(160, 160, 160);box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">骅征(huazheng)，2021年通过校招进入得物，</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">目前在国际技术做后端开发。</span></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6661458333333333" data-s="300,640" data-type="jpeg" data-w="1920" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062960" src="https://wechat2rss.xlab.app/img-proxy/?k=02d295fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuQxK3xberwhpHyZ2BEia6mOuwIaaF97NSGALtjictqd8JVYdcUl595HzJ31TI7FvjuKuY7lHictibbicbqEq0Q8ptBJFPIKJgiclLEo%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-size: 14px;font-family: PingFangSC-light;color: rgb(0, 0, 0);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">作为国际业务的研发，骅征入职后就参与了香港仓寄售项目，后面又参与了日本开仓、美国自建站搭建、全球买卖项目、BBMAX项目、韩国用户项目、三方开店项目。入职5年以来，经历了得物国际业务从香港进口、亚太扩张、美国建站（全球买卖雏型）、BBMAX+韩国（全球买卖一体化）到现在的海外用户+开店贸易的所有阶段。参与了国际业务几乎所有的大型项目。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">但问他有没有自己的高光时刻，他反而不觉得有什么特别的瞬间。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“其实没有太多的高光时刻，善战者无赫赫之功。功夫都花在平时，把每一个小的需求做好，就不会有太多需要力挽狂澜的高光时刻。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">比如国际火山云的多云迁移。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">交易的链路是核心域，牵扯个卖、企卖、保税、出海多个业务场景，数据一致性要求极高，C端要求低延时。上下游又依赖了支付、履约、库存、风控，同时还涉及MQ跨集群同步、DTS数据同步、内网域名修改等非代码的改造。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这类复杂而高风险的项目，往往不能当作一场孤注一掷的仗来打。它没有“发布一个炫酷新功能”那样的高光时刻——它的目标，就是让一切意外“不发生”。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“越是复杂的事情，越需要梳理出详尽的细节，否则一个小问题的遗漏，可能就会导致严重的后果。”骅征说。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">把复杂的事拆成几十个小任务项，梳理所有涉及的改动点，再反复“压榨”AI继续找遗漏，把之前没想到的迁移项也一个个揪出来，按类整理。真正切换的时候，一个环节一个环节确认；灰度阶段，盯着报错日志一遍遍排查。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">最终，整个迁移过程中RT只上涨了10-13毫秒，用户完全无感知，实现平稳迁移，并且显著降低了资源成本。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“没有高光时刻，就是最好的高光时刻。”他说。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">业余时间，骅征和国际团队的小伙伴们还一起开发了一个AI工作伙伴——DewuSmartClaw。没有产品提需求，他们自己跑到产运和开发同学那里，一个个搜集工作里对AI应用的痛点。针对AI Coding带来的稳定性挑战，他们还在DewuSmartClaw中内置了名为Dev zone的编程工具。通过OpenSpec流程驱动，覆盖需求探索、方案设计、代码实现、自动验证、知识归档、代码审查、缺陷修复七个阶段，并通过Harness组件进行约束限制。在运用AI提高效率的同时，保证了代码质量。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“我们把自己逼成&#39;半个产品经理&#39;去琢磨用户体验，逼成&#39;半个设计师&#39;去打磨交互细节，又逼成&#39;半个架构师&#39;去守住系统稳定。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">骅征有一个小本子，记了好几年。“记的都是当时觉得重要、以后可能用得上的东西，翻起来会想起很多事，也能看到自己在不同阶段关注的东西不一样了。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">回看加入得物5年以来自己最大的变化：“之前是‘把事情做完’就结束了，现在会问自己有没有‘把事情做明白’。想清楚一件事，比快速做完一件事要难得多，也重要得多。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“不管这件事有没有人看见，都得把它做成自己拿得出手的样子。”</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;background-color: rgb(245, 245, 245);height: auto;padding: 30px 20px;box-sizing: border-box;"><div style="text-align: justify;font-size: 14px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">用“凡事留痕”给自己找回确定，把每一个“万一”都堵在发生之前，让大事从不发生。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">成长，从来不是某个高光时刻。希望我们都能扎进自己的热爱中，耐心地下点“笨”功夫。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">技术新人的故事，还在继续。</span></p></div></div></div></div><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062964" src="https://wechat2rss.xlab.app/img-proxy/?k=a4835d00&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHvMZo5OLO8fich23rgOpTIaFCMZ7vdvAKzpABkicjvY7q4HVhHhWIGSdyTX4Hf9chFNTFzLyL5May3C3rkzmm9kgGoWbuct269DM%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=48ebba66&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546614%26idx%3D1%26sn%3D76de4b4d18e26eedc3c6d1dfb49a6675">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 31 Aug 2026 12:00:00 +0800</pubDate>
    </item>
    <item>
      <title>得物技术er又又又发「顶会论文」了？</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546598&amp;idx=1&amp;sn=63a547596cb1df4f1062b1aca0e16863</link>
      <description>中了！</description>
      <content:encoded><![CDATA[<p>原创 <span>得物技术</span> <span>2026-08-28 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=f9776718&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtb8poYLich4icVK4bAjDPIdRtu81tI1rIs4jicKicjAlcmHu9hcfPF8CxJy3cjjEz6zGns7UTgicmYicNN7fpsmHIYVc8g4opKbqKEs%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>中了！</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><p style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100062939" data-ratio="7.7796875" data-s="300,640" type="block" data-type="jpeg" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=56aea0ff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvZJzjh4MzROw52shjgbv3NVC5BnaMibVk0QMexNJyeZ675FPltdWOKeO9tMrpuFkemAfTkWzQVK9JMZJnEsb6VVjhMm96F6s6I%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="6.784375" data-s="300,640" data-type="jpeg" data-w="1280" type="block" data-imgfileid="100062940" src="https://wechat2rss.xlab.app/img-proxy/?k=a1ca54c1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHulwPgowhCoLKtnuqEljV84660vqx3VMbrhrFPpV0f5g2rj0Oq83Nod369quQsvAiaF9soPicp6Emlv8Zs2SkU93FU2lAz5FTdcE%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062949" src="https://wechat2rss.xlab.app/img-proxy/?k=bee2b373&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtLs91g8l2KOuDAIPQ2XaxkFMnUdBUWblwhb3zx7fV8ZRQfCo5YEiaqhKNZ7QsoM3EQrhjQaiczOkOdcDfQDY6SntURZN47Ay0R4%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=18f52c5d&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546598%26idx%3D1%26sn%3D63a547596cb1df4f1062b1aca0e16863">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 28 Aug 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>企业级 MultiAgent 的记忆系统：短期上下文与四层记忆架构实现｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546577&amp;idx=1&amp;sn=e958fbb5a7701d92612f0da1549ad0ad</link>
      <description>在 MultiAgent 平台中，Agent 要在多轮对话和跨会话协作中记住用户偏好与任务进展，记忆模块因此属于执行链路的一部分而非独立外挂。本文围绕长期记忆的写入与加载流程，涵盖 LLM 判断、语义检索、Token 预算控制、冲突处理等关键技术。</description>
      <content:encoded><![CDATA[<p>原创 <span>偶啦</span> <span>2026-08-26 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=0de8262c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtlhTeMtG0bKnlAhUnqwxcibq0wCmf69u40tsJfEssYRr3D0cCWwfibicA9MvTAjuBQfvmYohFQp684VQuonIiaO2qCajtgEcic5pg0%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>在 MultiAgent 平台中，Agent 要在多轮对话和跨会话协作中记住用户偏好与任务进展，记忆模块因此属于执行链路的一部分而非独立外挂。本文围绕长期记忆的写入与加载流程，涵盖 LLM 判断、语义检索、Token 预算控制、冲突处理等关键技术。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、背景及整体架构概览</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、记忆架构概览</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、短期记忆加载详情</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.关键实现</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.Redis 存储结构</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.Token 窗口控制策略</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、短期记忆写入详情</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、长期记忆加载实现详解</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.并行加载设计</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.语义检索实现</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.Token Budget 分配策略</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、长期记忆写入实现详解</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.写入入口与去重</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.LLM 智能判断</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.去重与冲突处理</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.先写后删策略</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">七、核心设计与运行观测</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">八、总结与后续工作</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">背景及整体架构概览</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在 MultiAgent 平台中，Agent 一次请求可能同时经过模型、MCP/A2A 工具、RAG、Workflow 和 Sandbox，还要在多轮对话和跨会话协作中记住用户偏好、任务进展与协作约定。因此记忆模块不是独立外挂，而是 Agent 执行链路的一部分。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在本项目中，记忆不是把全部历史简单拼到 Prompt，而是分别承接会话上下文、跨会话信息和上下文关联：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">会话延续：</span></strong><span leaf="">短期历史无法支持指代消解和任务延续。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">跨会话复用：</span></strong><span leaf="">跨会话无法复用用户偏好和稳定事实。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">上下文关联：</span></strong><span leaf="">新增消息无法与已有上下文建立关联。</span></p></li></ul></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">选型 MemOS：</span></strong><span leaf="">在 1540 个问题、10 个测试用户的评测中，综合得分 74.33%，单跳与多跳表现均达标（评测仅作选型参考，不代表生产 SLA）。</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">整体架构：</span></strong><span leaf="">后端基于 Spring Boot 3 和 Java 17，Agent 编排采用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">AgentScope</span></span><span leaf="">。新建 Agent 默认将 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">longMemoryProvider</span></span><span leaf=""> 设为 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MEMOS</span></span><span leaf="">，但 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">openLongMemory</span></span><span leaf=""> 默认关闭；开启后，请求开始时短期会话历史和长期记忆并行加载，会话结束后由 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">onSessionEndAsync</span></span><span leaf=""> 异步完成筛选、去重和长期沉淀。短期记忆以 MySQL 为持久化底座、Redis 为热点缓存，长期记忆以 MemOS 为主路径，同时保留 MySQL/Mem0 路由作为兼容路径。</span></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5982575" data-s="300,640" data-type="jpeg" data-w="1033" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062927" src="https://wechat2rss.xlab.app/img-proxy/?k=7e65a281&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuZQibicpC9M4kUozu5icbpM6MRMHHvkQczXI44mSjvNBRgniaicZiazql6nNqfGcsibomczuUefKe6eR9icbicAWxoUYZH0oXRW6tzXPS8%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">本文只展开记忆模块的实现：</span></strong><span leaf="">包括四层记忆模型、短期历史的读取与写入、MemOS 的按 scope 检索，以及会话结束后的异步沉淀。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">二</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">记忆架构概览</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6622002820874471" data-s="300,640" data-type="jpeg" data-w="1418" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062917" src="https://wechat2rss.xlab.app/img-proxy/?k=d50cc952&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsOOe8KcMeHmAjy8iagQm2psBhx1iaWOibUsia3Af59aCBpOaLia1kkyXjU2ia6bmTa5K9fo1iaIUribc6ywoZ4gp1CbsJTdx2HWVH79KA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.28671875" data-s="300,640" data-type="jpeg" data-w="1280" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-croporisrc="https://mmbiz.qpic.cn/sz_mmbiz_jpg/FMFU1P6sHHsw7RKzgrohFuSOibiajHLMvF9lWpgzJpheQyOcdWscJic9aCFIuGN2te8t6Qp1fs5Y6L4EM1YBrOFCxumsUxCWKAFOicfR6IeSebA/0?wx_fmt=jpeg&amp;from=appmsg" data-cropselx1="0" data-cropselx2="578" data-cropsely1="0" data-cropsely2="166" data-imgfileid="100062928" src="https://wechat2rss.xlab.app/img-proxy/?k=daec3a3b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsw7RKzgrohFuSOibiajHLMvF9lWpgzJpheQyOcdWscJic9aCFIuGN2te8t6Qp1fs5Y6L4EM1YBrOFCxumsUxCWKAFOicfR6IeSebA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Agent 四层记忆模型</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四层分别对应不同的生命周期：Working Memory 只服务当前一步推理；Session Memory 保存会话内的消息历史；User Memory 记录跨 Agent 共享的偏好和稳定事实，对应 MemOS 的 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">user_profile</span></span><span leaf="">；Agent Memory 保存某个 Agent 的任务经验和协作约定，对应 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">agent_{agentId}</span></span><span leaf="">。会话结束后，新增消息经过判断和去重，再从 Session 层沉淀到 User 或 Agent 层。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8044806517311609" data-s="300,640" data-type="png" data-w="982" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062922" src="https://wechat2rss.xlab.app/img-proxy/?k=044a775d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs0bBlMr0CpU2L9HsMIEialaNdqN4PVhnMIoPAkpdatZ22CbAxvXs91r8nrIFkEqUu8KzEjc7sr6207gk4bW2kkjejQZ6wMbl2w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Agent 四层记忆模型：Working、Session、User 与 Agent Memory 的读取、作用域和异步沉淀链路。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">记忆类型</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 50%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.2043956043956043" data-s="300,640" data-type="jpeg" data-w="910" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062912" src="https://wechat2rss.xlab.app/img-proxy/?k=16ba0c25&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuibvJqrXVRZ2Az7cCfW9ZibmC0le4zmrial17pnl6f0M1YTeu1E3pAJpJSNh1kZaqREx3MvgR7ammWsbISVHJXiaZCn1ApFib7VlBk%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四层模型与 MemOS 类型是两套分类维度：</span></strong><span leaf="">四层模型描述信息的生命周期和作用域；MemOS 的 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">text_mem</span></span><span leaf="">、</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">pref_mem</span></span><span leaf="">、</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">skill_mem</span></span><span leaf="">、</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">tool_mem</span></span><span leaf=""> 描述记忆内容形态，不能直接与四层一一对应。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.15085158150851583" data-s="300,640" data-type="png" data-w="1644" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062918" src="https://wechat2rss.xlab.app/img-proxy/?k=36c8d0ee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHu1xo2L85F7FOrqUG2cJKSYpkM35YDcjNWMfQhsrXr3dQOwb5UHEY0xQIzMncKXOulkqibWoZtsoQzJHicErBVqlpNibmy0z6qZtg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">当前路由行为：</span></strong><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">longMemoryProvider</span></span><span leaf=""> 未配置、Agent 不存在或读取配置异常时，</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MemoryRpcServiceImpl</span></span><span leaf=""> 选择 MySQL；明确配置为 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MEMOS</span></span><span leaf=""> 或 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">Mem0</span></span><span leaf=""> 时才进入对应 Provider。MemOS 查询异常由 Provider 自身记录日志并返回空结果，当前不会自动切换到 MySQL。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">记忆加载流程</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.72" data-s="300,640" data-type="jpeg" data-w="1700" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062919" src="https://wechat2rss.xlab.app/img-proxy/?k=0a37d853&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtd0656PjpkAnWN3gZCTlicJw845W7XNP5DtmaGcsicaqoicicXbr3Qs8U2dbp4DWQkicLFhJlnoYib7rQoeSmWKiaylJdbgh23QvBibR8%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一次请求的记忆路径</span></strong><span leaf="">可以概括为：</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">AgentExecutor<a class="wx_topic_link" topic-id="mt9nldm9-7ws0ny" style="color: #576B95 !important;" data-topic="1" data-recommend="">#execute</a></span></span><span leaf=""> 解析上下文参数后，在 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">memoryLoadExecutor</span></span><span leaf=""> 中并行启动短期记忆和长期记忆 Future。短期链路读取 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">ConversationMemory</span></span><span leaf="">；长期链路调用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">queryMemory</span></span><span leaf="">，由 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MemoryRpcServiceImpl</span></span><span leaf=""> 按 Agent 配置选择 MEMOS、Mem0 或 MySQL。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">长期记忆检索返回后，平台按 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">user_profile</span></span><span leaf=""> 与 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">agent</span></span><span leaf=""> 分组，过滤敏感或低相关内容，并限制每个 scope 的条数。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">随后以固定 tokens 为默认预算，优先满足用户画像，再把剩余预算分配给 Agent 专属记忆。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">最终结果写入 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">AgentContext</span></span><span leaf="">，与短期消息一起参与后续模型调用；会话结束后再异步触发长期记忆沉淀和上下文摘要。 </span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">实现边界：</span></strong><span leaf="">平台的 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">ConversationMemory</span></span><span leaf=""> 负责会话历史读取和窗口裁剪；AgentScope Harness 的 state store 负责会话状态持久化，有 Sandbox 时使用共享工作区文件存储，没有 Sandbox 时回退到内存存储。当前 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">ModelInvoker</span></span><span leaf=""> 主链路构造 Harness 消息时，以本轮 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">userMsg</span></span><span leaf=""> 为入口，因此不能简单理解为 Redis/MySQL 历史会被无条件直接拼进每一次 AgentScope Prompt。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">短期记忆 vs 长期记忆</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3734793187347932" data-s="300,640" data-type="png" data-w="1644" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062911" src="https://wechat2rss.xlab.app/img-proxy/?k=2858fa10&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtqxoKudLaae1jBGNb3eo5lzbYPx0tzp0cYGGeP5ib7uqpFrhR1HBeGrdkYytShJ4p5LJXYuu21MA3KQlVTBL3Bbj1KaQO8pBsI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">关键组件及方法</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.29683698296836986" data-s="300,640" data-type="png" data-w="1644" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062910" src="https://wechat2rss.xlab.app/img-proxy/?k=20c53476&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuiaQstc2dC1DETibdd639SEZtM204NrKPia5ntI8IJLOaMzfUFouSsYN3ZNB6WkfFZOGThIQeHkrere3kM5kv4GO3ibPVub9kfqjk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">短期记忆加载详情</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">短期记忆（Session Memory）保存当前会话中按时间排列的对话历史，是指代消解和多轮推理的直接上下文。实现重点是读取时延、Redis/MySQL 回退以及 Token 窗口控制。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 50%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.8728121353558926" data-s="300,640" data-type="jpeg" data-w="857" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062909" src="https://wechat2rss.xlab.app/img-proxy/?k=b17cfe6a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsicibmGaN0wCa47iaScMZ4z3lvzHDX4S4AuVmiaibXRibSicY9oIBQ303q3HM9jmUahQyfjBPiatGdFnP9W5vkOMPmmwQ5jrcoog5v7CI%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">加载流程图</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">调用链说明：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AgentExecutor 从 AgentContext 获取 AgentConfig → ModelBindConfigDto → contextRounds。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AgentExecutor 调用 chatMemory.get(conversationId, contextRounds * 3)。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">chatMemory 是 ConversationMemory 接口，由 ConversationApplicationServiceImpl 实现。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">实现类优先从 Redis 读取，失败则从 MySQL 回退。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">关键实现</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">完整实现还包括消息类型转换、system 消息拆分及工具调用信息处理。下面只保留“读取 → 交替校验 → Token 窗口判断”的主路径，便于理解短期记忆如何形成模型上下文。</span></p></div><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__comment">// DTO 已转换为 Message，system/tool 消息已拆分</span></span></code><br/><code><span leaf="">trimAlternationFromEnd(chatMsgs);</span></code><br/><code><span leaf=""><span class="code-snippet__built_in">int</span> windowSize = MAX_TOKEN_WINDOW_SIZE - SUMMARY_TOKEN_BUDGET;</span></code><br/><code><span leaf=""><span class="code-snippet__built_in">int</span> totalTokens = <span class="code-snippet__number">0</span>, recentTokens = <span class="code-snippet__number">0</span>;</span></code><br/><code><span leaf="">boolean overLimit = <span class="code-snippet__literal">false</span>;</span></code><br/><code><span leaf="">List&lt;Message&gt; recentWindow = <span class="code-snippet__keyword">new</span> ArrayList&lt;&gt;();</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">for</span> (<span class="code-snippet__built_in">int</span> i = chatMsgs.size() - <span class="code-snippet__number">1</span>; i &gt;= <span class="code-snippet__number">0</span>; i--) {</span></code><br/><code><span leaf="">    Message message = chatMsgs.<span class="code-snippet__keyword">get</span>(i);</span></code><br/><code><span leaf="">    <span class="code-snippet__built_in">int</span> tokens = TikTokensUtil.tikTokensCount(message.getText());</span></code><br/><code><span leaf="">    totalTokens += tokens;</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (!overLimit &amp;&amp; recentTokens + tokens &lt;= windowSize) {</span></code><br/><code><span leaf="">        recentWindow.<span class="code-snippet__keyword">add</span>(<span class="code-snippet__number">0</span>, message);</span></code><br/><code><span leaf="">        recentTokens += tokens;</span></code><br/><code><span leaf="">    } <span class="code-snippet__keyword">else</span> {</span></code><br/><code><span leaf="">        overLimit = <span class="code-snippet__literal">true</span>;</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">}</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> (totalTokens &lt;= MAX_TOKEN_WINDOW_SIZE) {</span></code><br/><code><span leaf="">    removeLeadingAssistant(chatMsgs);</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">return</span> mergeSystemAndChat(systemMsgs, chatMsgs);</span></code><br/><code><span leaf="">}</span></code><br/><code><span leaf="">removeLeadingAssistant(recentWindow);</span></code><br/><code><span leaf="">String summaryMd = iMemoryRpcService.getConversationSummaryMd(Long.parseLong(cid));</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> (StringUtils.isNotBlank(summaryMd)) {</span></code><br/><code><span leaf="">    recentWindow.<span class="code-snippet__keyword">add</span>(<span class="code-snippet__number">0</span>, <span class="code-snippet__keyword">new</span> SystemMessage(summaryMd));</span></code><br/><code><span leaf="">}</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">return</span> recentWindow;</span></code><br/></pre></p><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Redis 优先读取，类说明：</span></strong><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">ConversationApplicationServiceImpl<a class="wx_topic_link" topic-id="mt9nldma-26h8jx" style="color: #576B95 !important;" data-topic="1" data-recommend="">#getMessagesFromCache</a></span></span><span leaf=""> 先读取 Redis List，命中后把 JSON 转为 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">ChatMessageDto</span></span><span leaf="">，并翻转为 oldest-first；未命中或读取异常则查询 MySQL，再按倒序 leftPush 回写，设置 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">CACHE_TTL_SECONDS</span></span><span leaf="">，并用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">rightPop</span></span><span leaf=""> 按 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MAX_CACHED_MESSAGES</span></span><span leaf=""> 淘汰最旧消息。逐条解析和异常日志属于防御性代码，这里不展开。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Redis 存储结构实现细节</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">使用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">leftPush</span></span><span leaf=""> 写入，最新消息在 index 0；当前实现使用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">range(0, Long.MAX_VALUE)</span></span><span leaf=""> 读取 Redis 列表，再在应用层做窗口裁剪；使用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">rightPop</span></span><span leaf=""> 移除最旧消息 需要注意，</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">ConversationMemory<a class="wx_topic_link" topic-id="mt9nldma-utwfn1" style="color: #576B95 !important;" data-topic="1" data-recommend="">#get</a>(String, int)</span></span><span leaf=""> 的 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">lastN</span></span><span leaf=""> 参数当前未参与 Redis 的 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">range</span></span><span leaf=""> 边界计算；实际读取范围由 Redis 列表内容和后续 Token 窗口共同决定。Redis 只承担热点缓存，MySQL 仍是冷启动回源和持久化兜底。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Token 窗口控制策略</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 50%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="2.131" data-s="300,640" data-type="jpeg" data-w="1000" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062916" src="https://wechat2rss.xlab.app/img-proxy/?k=7d54e5d6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuYd4GUQoHY8QZJaoSA5uxhdh85hPs7Q7pdAsvKnrODribYA3chrZETicocMSCYjibm8xT5UuMlk5QhKXI5Dk1picwAdzueGhbeFwQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">短期记忆写入详情</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5698148729212426" data-s="300,640" data-type="jpeg" data-w="3187" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062920" src="https://wechat2rss.xlab.app/img-proxy/?k=9ae9316d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsXsCcVgico5GfzUyMasvo5JtDsian6bhbHS2jtmIYKTW83c1AjMLHVBg57qm0af7kQpuvjoIhRibultl0d7OgiamkQf9fuuZERvdQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">写入时序图</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">双写的意义——</span></strong><strong style="box-sizing: border-box;"><span leaf="">MySQL ：</span></strong><span leaf="">持久化兜底防止数据丢失。</span><strong style="box-sizing: border-box;"><span leaf="">Redis：</span></strong><span leaf=""> 高性能读取支撑实时对话。</span><strong style="box-sizing: border-box;"><span leaf="">回退机制：</span></strong><span leaf=""> Redis 失败时仍可从 MySQL 回退读取。</span></p></div><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="java"><code><span leaf="">messages.forEach(message -&gt; {</span></code><br/><code><span leaf="">    <span class="code-snippet__type">String</span> <span class="code-snippet__variable">conversationId0</span> <span class="code-snippet__operator">=</span> conversationId;</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (conversationId0.startsWith(<span class="code-snippet__string">&#34;agent:&#34;</span>)) {</span></code><br/><code><span leaf="">        <span class="code-snippet__comment">// 子 Agent 的非 ChatMessage 不写入主会话，避免虚拟会话污染主链路。</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">if</span> (message <span class="code-snippet__keyword">instanceof</span> ChatMessageDto) {</span></code><br/><code><span leaf="">            conversationId0 = conversationId.replace(<span class="code-snippet__string">&#34;agent:&#34;</span>, <span class="code-snippet__string">&#34;&#34;</span>);</span></code><br/><code><span leaf="">        } <span class="code-snippet__keyword">else</span> {</span></code><br/><code><span leaf="">            <span class="code-snippet__keyword">return</span>;</span></code><br/><code><span leaf="">        }</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">    <span class="code-snippet__type">ChatMessageDto</span> <span class="code-snippet__variable">chatMessage</span> <span class="code-snippet__operator">=</span> ...; <span class="code-snippet__comment">// 类型转换、清洗文本并补齐租户字段</span></span></code><br/><code><span leaf="">    <span class="code-snippet__type">ConversationMessage</span> <span class="code-snippet__variable">conversationMessage</span> <span class="code-snippet__operator">=</span> ...;</span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 先落 MySQL，Redis 只作为可失效的热点缓存。</span></span></code><br/><code><span leaf="">    <span class="code-snippet__type">Long</span> <span class="code-snippet__variable">messageId</span> <span class="code-snippet__operator">=</span> TenantFunctions.callWithTenantId(chatMessage.getTenantId(),</span></code><br/><code><span leaf="">        () -&gt; conversationDomainService.addConversationMessage(conversationMessage));</span></code><br/><code><span leaf="">    chatMessage.setIndex(messageId);</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">try</span> {</span></code><br/><code><span leaf="">        <span class="code-snippet__type">String</span> <span class="code-snippet__variable">key</span> <span class="code-snippet__operator">=</span> generateConversationKey(conversationId0);</span></code><br/><code><span leaf="">        redisUtil.leftPush(key, JSON.toJSONString(chatMessage));</span></code><br/><code><span leaf="">        redisUtil.expire(key, CACHE_TTL_SECONDS);</span></code><br/><code><span leaf="">        <span class="code-snippet__type">long</span> <span class="code-snippet__variable">size</span> <span class="code-snippet__operator">=</span> redisUtil.size(key);</span></code><br/><code><span leaf="">        <span class="code-snippet__comment">// 最新消息在表头，超出 200 条时从尾部淘汰最旧消息。</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">if</span> (size &gt; MAX_CACHED_MESSAGES) {</span></code><br/><code><span leaf="">            redisUtil.rightPop(key);</span></code><br/><code><span leaf="">        }</span></code><br/><code><span leaf="">    } <span class="code-snippet__keyword">catch</span> (Exception e) {</span></code><br/><code><span leaf="">        <span class="code-snippet__comment">// 缓存失败不回滚已完成的 MySQL 写入，读取时会回源数据库。</span></span></code><br/><code><span leaf="">        log.warn(<span class="code-snippet__string">&#34;Failed to cache message to Redis, conversationId={}&#34;</span>, conversationId0, e);</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">});</span></code><br/></pre></p><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">短期消息写入后，</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">onSessionEndAsync</span></span><span leaf=""> 还会检查会话摘要：当未被摘要覆盖的消息达到 20 条才触发摘要生成，摘要注入预算约 2000 tokens，并在 Redis 缓存 1 小时。这样做把高频对话写入与低频摘要合并拆开，避免每轮都调用摘要模型。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">长期记忆加载实现详解</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6956021845357861" data-s="300,640" data-type="jpeg" data-w="3479" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062921" src="https://wechat2rss.xlab.app/img-proxy/?k=44b04c57&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsExWJsNfXLPytmuv9hm6a1y22IRkp0qwTT5H37PEpcCb9CP0S7S97hVYtnvPNxjSnFRqUiabbMpl1QOrj5vvfM8UOibauLuw3Y8%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">加载时序图</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">并行加载设计</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在 Agent 执行入口 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">AgentExecutor<a class="wx_topic_link" topic-id="mt9nldma-08k6f3" style="color: #576B95 !important;" data-topic="1" data-recommend="">#execute</a></span></span><span leaf=""> 中，我们采用 CompletableFuture 实现短期记忆和长期记忆的并行加载：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="typescript"><code><span leaf="">final int finalContextRounds = contextRounds;</span></code><br/><code><span leaf=""><span class="code-snippet__title">CompletableFuture</span>&lt;<span class="code-snippet__title">List</span>&lt;<span class="code-snippet__title">Message</span>&gt;&gt; contextMessagesFuture = <span class="code-snippet__title">CompletableFuture</span>.<span class="code-snippet__title">supplyAsync</span>(() -&gt; {</span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// contextRounds=0 是合法配置，直接跳过短期历史读取。</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (finalContextRounds &lt;= <span class="code-snippet__number">0</span>) {</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">new</span> <span class="code-snippet__title">ArrayList</span>&lt;<span class="code-snippet__title">Message</span>&gt;();</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">return</span> <span class="code-snippet__keyword">new</span> <span class="code-snippet__title">ArrayList</span>&lt;&gt;(</span></code><br/><code><span leaf="">        chatMemory.<span class="code-snippet__title">get</span>(agentContext.<span class="code-snippet__title">getConversationId</span>(), finalContextRounds * <span class="code-snippet__number">3</span>));</span></code><br/><code><span leaf="">}, memoryLoadExecutor);</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__title">CompletableFuture</span>&lt;<span class="code-snippet__title">Map</span>&lt;<span class="code-snippet__title">String</span>, <span class="code-snippet__title">String</span>&gt;&gt; longMemoryFuture = <span class="code-snippet__title">CompletableFuture</span>.<span class="code-snippet__title">supplyAsync</span>(() -&gt; {</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (agentContext.<span class="code-snippet__title">getAgentConfig</span>().<span class="code-snippet__title">getOpenLongMemory</span>() != <span class="code-snippet__title">AgentConfig</span>.<span class="code-snippet__property">OpenStatus</span>.<span class="code-snippet__property">Open</span>) {</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__title">Collections</span>.<span class="code-snippet__title">emptyMap</span>();</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">try</span> {</span></code><br/><code><span leaf="">        <span class="code-snippet__title">AgentComponentConfigDto</span> modelComponentConfig =</span></code><br/><code><span leaf="">            agentContext.<span class="code-snippet__title">getAgentConfig</span>().<span class="code-snippet__title">getModelComponentConfig</span>();</span></code><br/><code><span leaf="">        <span class="code-snippet__comment">// queryMemory 需要绑定模型的 targetId，未绑定时不发起长期检索。</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">if</span> (modelComponentConfig == <span class="code-snippet__literal">null</span> || modelComponentConfig.<span class="code-snippet__title">getTargetId</span>() == <span class="code-snippet__literal">null</span>) {</span></code><br/><code><span leaf="">            <span class="code-snippet__keyword">return</span> <span class="code-snippet__title">Collections</span>.<span class="code-snippet__title">emptyMap</span>();</span></code><br/><code><span leaf="">        }</span></code><br/><code><span leaf="">        <span class="code-snippet__built_in">boolean</span> justKeywordMatch = <span class="code-snippet__title">resolveJustKeywordMatch</span>(agentContext);</span></code><br/><code><span leaf="">        <span class="code-snippet__comment">// originalMessage 是主查询词；此处 context 为空，短期历史不会反向增强本次 query。</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> conversationApplicationService.<span class="code-snippet__title">queryMemory</span>(</span></code><br/><code><span leaf="">            agentContext.<span class="code-snippet__title">getUser</span>().<span class="code-snippet__title">getTenantId</span>(), agentContext.<span class="code-snippet__title">getUser</span>().<span class="code-snippet__title">getId</span>(),</span></code><br/><code><span leaf="">            agentContext.<span class="code-snippet__title">getAgentConfig</span>().<span class="code-snippet__title">getId</span>(), modelComponentConfig.<span class="code-snippet__title">getTargetId</span>(),</span></code><br/><code><span leaf="">            agentContext.<span class="code-snippet__title">getOriginalMessage</span>(), <span class="code-snippet__string">&#34;&#34;</span>, justKeywordMatch,</span></code><br/><code><span leaf="">            agentContext.<span class="code-snippet__title">isFilterSensitive</span>());</span></code><br/><code><span leaf="">    } <span class="code-snippet__keyword">catch</span> (<span class="code-snippet__title">Exception</span> e) {</span></code><br/><code><span leaf="">        <span class="code-snippet__comment">// 长期记忆是增强能力，查询失败时让主对话继续。</span></span></code><br/><code><span leaf="">        log.<span class="code-snippet__title">warn</span>(<span class="code-snippet__string">&#34;查询长期记忆失败&#34;</span>, e);</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__title">Collections</span>.<span class="code-snippet__title">emptyMap</span>();</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">}, memoryLoadExecutor);</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__comment">// 这里才是并行结果的汇合点，主流程等待两条记忆链路都完成。</span></span></code><br/><code><span leaf="">agentContext.<span class="code-snippet__title">setContextMessages</span>(contextMessagesFuture.<span class="code-snippet__title">join</span>());</span></code><br/><code><span leaf=""><span class="code-snippet__title">Map</span>&lt;<span class="code-snippet__title">String</span>, <span class="code-snippet__title">String</span>&gt; longMemoryMap = longMemoryFuture.<span class="code-snippet__title">join</span>();</span></code><br/></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">设计要点：</span></strong><span leaf="">使用专用线程池 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">memoryLoadExecutor</span></span><span leaf="">，避免 ForkJoinPool.commonPool 争抢；长期记忆不阻塞短期记忆，用空 context 先行查询。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">边界与降级：</span></strong><span leaf="">关闭 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">openLongMemory</span></span><span leaf=""> 时长期 Future 直接返回空 Map；Agent 未绑定模型时跳过长期检索；查询异常也会记录 warning 并返回空结果，主对话继续执行。当前长期查询以 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">originalMessage </span></span><span leaf="">作为主检索词，和短期记忆的读取互不等待，因此并行带来的是执行重叠，不是&#34;短期历史已注入后再增强查询&#34;。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">语义检索实现</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">MemOS Search 请求保留以下参数；</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">context</span></span><span leaf=""> 非空时，平台只取前 200 个字符拼到 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">userMessage</span></span><span leaf=""> 后作为 query。调用链虽然携带 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">justKeywordSearch</span></span><span leaf="">，但当前 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MemosMemoryApplicationService</span></span><span leaf=""> 未据此切换检索模式，仍固定调用 MemOS Search。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="kotlin"><code><span leaf="">List&lt;String&gt; readableCubeIds = new ArrayList&lt;&gt;();</span></code><br/><code><span leaf="">readableCubeIds.add(<span class="code-snippet__string">&#34;user_profile&#34;</span>);</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> (agentId != <span class="code-snippet__literal">null</span>) {</span></code><br/><code><span leaf="">    readableCubeIds.add(<span class="code-snippet__string">&#34;agent_&#34;</span> + agentId);</span></code><br/><code><span leaf="">}</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">MemOSClient.SearchRequest searchRequest = new MemOSClient.SearchRequest();</span></code><br/><code><span leaf=""><span class="code-snippet__comment">// 一次 Search 同时覆盖用户画像和当前 Agent 的记忆 cube。</span></span></code><br/><code><span leaf="">searchRequest.setQuery(buildSearchQuery(userMessage, context));</span></code><br/><code><span leaf="">searchRequest.setUserId(memOSUserId);</span></code><br/><code><span leaf="">searchRequest.setTopK(DEFAULT_TOP_K);</span></code><br/><code><span leaf="">searchRequest.setMode(<span class="code-snippet__string">&#34;fast&#34;</span>);</span></code><br/><code><span leaf="">searchRequest.setRelativity(<span class="code-snippet__number">0.45</span>);</span></code><br/><code><span leaf="">searchRequest.setDedup(<span class="code-snippet__string">&#34;mmr&#34;</span>);</span></code><br/><code><span leaf="">searchRequest.setReadableCubeIds(readableCubeIds);</span></code><br/><code><span leaf="">searchRequest.setIncludePreference(<span class="code-snippet__literal">true</span>);</span></code><br/><code><span leaf="">searchRequest.setPrefTopK(<span class="code-snippet__number">6</span>);</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">List&lt;MemOSMemory&gt; searchResults =</span></code><br/><code><span leaf="">    memOSClient.searchMemory(searchRequest).getMemories();</span></code><br/><code><span leaf=""><span class="code-snippet__comment">// 转换阶段会过滤低分结果、截断单条内容，再按 score 降序返回。</span></span></code><br/><code><span leaf="">result.addAll(convertToMemoryUnitDTOs(searchResults, tenantId, userId, agentId));</span></code><br/><code><span leaf="">result.sort((a, b) -&gt; {</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (a.getScore() == <span class="code-snippet__literal">null</span> &amp;&amp; b.getScore() == <span class="code-snippet__literal">null</span>) <span class="code-snippet__keyword">return</span> <span class="code-snippet__number">0</span>;</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (a.getScore() == <span class="code-snippet__literal">null</span>) <span class="code-snippet__keyword">return</span> <span class="code-snippet__number">1</span>;</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (b.getScore() == <span class="code-snippet__literal">null</span>) <span class="code-snippet__keyword">return</span> -<span class="code-snippet__number">1</span>;</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">return</span> <span class="code-snippet__built_in">Double</span>.compare(b.getScore(), a.getScore());</span></code><br/><code><span leaf="">});</span></code><br/></pre></p></div><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">搜索参数说明：</span></strong></p><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24695863746958638" data-s="300,640" data-type="png" data-w="1644" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062915" src="https://wechat2rss.xlab.app/img-proxy/?k=192ff8b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvAn5icibOuV3CR5NZJ78DiaicM6Ejufed3cuToIlaYqXVnzgC0y95QbGUhCic0qtyZZ2LdZCAtLPbIxWMfNYnCaKoVeRLeQrLclZok%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">readableCubeIds</span></span><span leaf=""> 当前包含 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">user_profile</span></span><span leaf=""> 和 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">agent_{agentId}</span></span><span leaf="">；同时开启 preference 检索，</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">prefTopK=6</span></span><span leaf=""> 用于补充用户偏好。检索结果随后还会经过 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">score &lt; 0.3</span></span><span leaf=""> 过滤和单条 1000 字符截断，避免低相关或过长内容挤占上下文。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Token Budget 分配策略</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">以下片段承接 5.2 的检索结果，</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">userProfileRaw</span></span><span leaf=""> 与 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">agentMemoryRaw</span></span><span leaf=""> 分别是按 scope 汇总后的文本。为防止记忆撑爆 Agent 上下文，我们设计了 Token Budget 分配机制。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__built_in">int</span> budget = DEFAULT_LONG_MEMORY_TOKEN_BUDGET; <span class="code-snippet__comment">// 4000 tokens</span></span></code><br/><code><span leaf=""><span class="code-snippet__built_in">int</span> userProfileRawTokens =</span></code><br/><code><span leaf="">    TikTokensUtil.tikTokensCount(userProfileRaw != <span class="code-snippet__literal">null</span> ? userProfileRaw : <span class="code-snippet__string">&#34;&#34;</span>);</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__comment">// user_profile 最多占 60%；实际未用满时，剩余预算让给 Agent 记忆。</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> (userProfileRawTokens &lt;= budget * <span class="code-snippet__number">0.6</span>) {</span></code><br/><code><span leaf="">    userProfile = userProfileRaw;</span></code><br/><code><span leaf="">    agentMemory = truncateLongMemory(agentMemoryRaw, budget - userProfileRawTokens);</span></code><br/><code><span leaf="">} <span class="code-snippet__keyword">else</span> {</span></code><br/><code><span leaf="">    userProfile = truncateLongMemory(userProfileRaw, (<span class="code-snippet__built_in">int</span>) (budget * <span class="code-snippet__number">0.6</span>));</span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 重新计算截断后的 token 数，避免把截断前的估算带入剩余预算。</span></span></code><br/><code><span leaf="">    <span class="code-snippet__built_in">int</span> userProfileTokens =</span></code><br/><code><span leaf="">        TikTokensUtil.tikTokensCount(userProfile != <span class="code-snippet__literal">null</span> ? userProfile : <span class="code-snippet__string">&#34;&#34;</span>);</span></code><br/><code><span leaf="">    agentMemory = truncateLongMemory(agentMemoryRaw, budget - userProfileTokens);</span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">截断算法</span></strong><span leaf="">采用按行截断，保留完整语义：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="javascript"><code><span leaf=""><span class="code-snippet__title">String</span>[] lines = longMemory.<span class="code-snippet__title">split</span>(<span class="code-snippet__string">&#34;\n&#34;</span>, -<span class="code-snippet__number">1</span>);</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">for</span> (<span class="code-snippet__title">String</span> line : lines) {</span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 按行累计 token，尽量保留一条记忆的完整内容。</span></span></code><br/><code><span leaf="">    int lineTokens = <span class="code-snippet__title">TikTokensUtil</span>.<span class="code-snippet__title">tikTokensCount</span>(line + <span class="code-snippet__string">&#34;\n&#34;</span>);</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (currentTokens + lineTokens &gt; budget) {</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">break</span>;</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">    truncated.<span class="code-snippet__title">append</span>(line);</span></code><br/><code><span leaf="">    currentTokens += lineTokens;</span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">user_profile 最多占 60% 预算；如果实际占用更少，剩余空间分给 Agent 记忆。两类内容都按行累加 token，达到预算后停止追加，避免拆散单条记忆。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">长期记忆写入实现详解</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9069712110397335" data-s="300,640" data-type="jpeg" data-w="4203" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062923" src="https://wechat2rss.xlab.app/img-proxy/?k=a8ca37df&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuhwHYiaVR33pL5UILUGvT676BMeL5t3TrYHJ7oqxxf2ypLC3pa4JBusjBxtrEey07SSobMbBWwakjQadOf2kOBrphczrZWKkiaw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">写入时序图</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">写入入口与去重</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">会话结束时，系统触发记忆写入流程，首先使用 Redis Set 记录已处理消息的 hash 并做去重。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">类说明：</span></strong><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MemoryRpcServiceImpl</span></span><span leaf=""> 负责会话结束后的写入编排，</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">onSessionEndAsync</span></span><span leaf=""> 先获取会话级 Redis 锁，再由 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">processSessionEnd</span></span><span leaf=""> 按消息 hash 过滤本次新增内容并提前记录已处理 hash，随后根据 Agent 配置选择 provider：MemOS 路径先进行 LLM 记忆判断，再交给 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MemoryPersistenceServiceImpl</span></span><span leaf=""> 持久化；MySQL、Mem0 路径则组装完整上下文和最新 user 输入后调用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">createMemory</span></span><span leaf="">。记忆处理完成后，同一异步线程继续检查是否需要生成上下文摘要。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">设计要点：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">分布式锁防止并发处理同一会话。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">MD5(role:content) 生成消息唯一标识。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">TTL 7 天自动清理过期记录。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">onSessionEndAsync</span></span><span leaf=""> 使用 10 分钟的会话锁，已处理消息 hash 的 TTL 为 7 天。hash 会在 LLM 判断和 MemOS 持久化之前写入，用来挡住重复结束事件。但这一层属于 best-effort：Redis 读取失败时，当前实现会把整段会话作为新增内容继续处理；hash 写入失败也只记录日志。外部服务失败后没有自动回放，因此运行侧需要同时关注重复写入和处理未完成两类异常。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">LLM 智能判断</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">完整 Prompt 定义了记忆类别、scope、importance 和 JSON 输出约束，下面只保留新增消息标记与模型调用主线。</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">judge</span></span><span leaf=""> 会先调用 LLM；调用异常或返回为空时，降级到仅基于新增消息的规则判断。LLM 返回不为空时，还会统一补齐缺省字段、过滤空内容，并将单条记忆截断到 200 字符。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="typescript"><code><span leaf=""><span class="code-snippet__keyword">private</span> <span class="code-snippet__title">MemoryJudgeResult</span> <span class="code-snippet__title">judgeByLLM</span>(<span class="code-snippet__params"><span class="code-snippet__title">Long</span></span><span class="code-snippet__params"> tenantId, </span><span class="code-snippet__params"><span class="code-snippet__title">Long</span></span><span class="code-snippet__params"> modelId,</span></span></code><br/><code><span leaf="">        <span class="code-snippet__title">List</span>&lt;<span class="code-snippet__title">MemoryMessage</span>&gt; fullContext, <span class="code-snippet__title">List</span>&lt;<span class="code-snippet__title">MemoryMessage</span>&gt; newMessages) {</span></code><br/><code><span leaf="">    <span class="code-snippet__title">Set</span>&lt;<span class="code-snippet__title">String</span>&gt; newMessageKeys = newMessages.<span class="code-snippet__title">stream</span>()</span></code><br/><code><span leaf="">        .<span class="code-snippet__title">map</span>(m -&gt; (m.<span class="code-snippet__title">getRole</span>() != <span class="code-snippet__literal">null</span> ? m.<span class="code-snippet__title">getRole</span>() : <span class="code-snippet__string">&#34;user&#34;</span>)</span></code><br/><code><span leaf="">            + <span class="code-snippet__string">&#34;:&#34;</span> + (m.<span class="code-snippet__title">getContent</span>() != <span class="code-snippet__literal">null</span> ? m.<span class="code-snippet__title">getContent</span>() : <span class="code-snippet__string">&#34;&#34;</span>))</span></code><br/><code><span leaf="">        .<span class="code-snippet__title">collect</span>(<span class="code-snippet__title">Collectors</span>.<span class="code-snippet__title">toSet</span>());</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__title">StringBuilder</span> content = <span class="code-snippet__keyword">new</span> <span class="code-snippet__title">StringBuilder</span>(<span class="code-snippet__string">&#34;## 完整对话上下文\n\n&#34;</span>);</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">for</span> (<span class="code-snippet__title">MemoryMessage</span> message : fullContext) {</span></code><br/><code><span leaf="">        <span class="code-snippet__title">String</span> role = message.<span class="code-snippet__title">getRole</span>() != <span class="code-snippet__literal">null</span> ? message.<span class="code-snippet__title">getRole</span>() : <span class="code-snippet__string">&#34;user&#34;</span>;</span></code><br/><code><span leaf="">        <span class="code-snippet__title">String</span> text = message.<span class="code-snippet__title">getContent</span>() != <span class="code-snippet__literal">null</span> ? message.<span class="code-snippet__title">getContent</span>() : <span class="code-snippet__string">&#34;&#34;</span>;</span></code><br/><code><span leaf="">        content.<span class="code-snippet__title">append</span>(newMessageKeys.<span class="code-snippet__title">contains</span>(role + <span class="code-snippet__string">&#34;:&#34;</span> + text)</span></code><br/><code><span leaf="">                ? <span class="code-snippet__string">&#34;[[NEW] &#34;</span> : <span class="code-snippet__string">&#34;[&#34;</span>)</span></code><br/><code><span leaf="">            .<span class="code-snippet__title">append</span>(role).<span class="code-snippet__title">append</span>(<span class="code-snippet__string">&#34;]: &#34;</span>).<span class="code-snippet__title">append</span>(text).<span class="code-snippet__title">append</span>(<span class="code-snippet__string">&#34;\n&#34;</span>);</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__title">MemoryJudgeResult</span> result = iModelRpcService.<span class="code-snippet__title">call</span>(</span></code><br/><code><span leaf="">        tenantId, modelId, <span class="code-snippet__variable">JUDGE_SYSTEM_PROMPT</span>, content.<span class="code-snippet__title">toString</span>(),</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">new</span> <span class="code-snippet__title">ParameterizedTypeReference</span>&lt;<span class="code-snippet__title">MemoryJudgeResult</span>&gt;() {});</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">return</span> result == <span class="code-snippet__literal">null</span> ? <span class="code-snippet__literal">null</span> : <span class="code-snippet__title">validateAndFixResult</span>(result);</span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">判断要点：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">按 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">role:content</span></span><span leaf=""> 生成消息 key 并标记重点内容，相同内容的历史消息也可能一并命中。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">按 5 类信息定义 importance 区间（1-10）。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">明确 scope 归属规则。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">去重与冲突处理</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在持久化前进行本地相似度去重，减少不必要的写入：</span><strong style="box-sizing: border-box;"><span leaf="">类说明：</span></strong><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MemoryPersistenceServiceImpl<a class="wx_topic_link" topic-id="mt9nldma-sne5cf" style="color: #576B95 !important;" data-topic="1" data-recommend="">#calculateSimilarity</a></span></span><span leaf=""> 按 exact、contains、字符级 Jaccard（阈值 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">0.7</span></span><span leaf="">）和短文本 Levenshtein（阈值 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">0.8</span></span><span leaf="">）依次判断，相似即标记为重复；空值或未达到阈值则返回 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">none</span></span><span leaf="">。它只负责同批次的本地预去重，跨历史记忆的冲突仍交给后续冲突服务处理。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">batchPersist</span></span><span leaf=""> 完成本地去重后，先按 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">memCubeId</span></span><span leaf=""> 分组，再调用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">batchDetectConflict</span></span><span leaf=""> 获取每条候选记忆的冲突结果。下面只保留逐条决定&#34;写入新记忆、跳过，或记录待失效旧记忆&#34;的核心循环：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__keyword">for</span> (<span class="code-snippet__built_in">int</span> i = <span class="code-snippet__number">0</span>; i &lt; memoryList.size(); i++) {</span></code><br/><code><span leaf="">    MemoryToSave memory = memoryList.<span class="code-snippet__keyword">get</span>(i);</span></code><br/><code><span leaf="">    MemoryConflictResult conflict = i &lt; conflictResults.size()</span></code><br/><code><span leaf="">        ? conflictResults.<span class="code-snippet__keyword">get</span>(i) : MemoryConflictResult.noConflict();</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (!conflict.isHasConflict()) {</span></code><br/><code><span leaf="">        messagesToStore.<span class="code-snippet__keyword">add</span>(createMessage(memory.getContent()));</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">continue</span>;</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    ConflictResolutionResult resolution =</span></code><br/><code><span leaf="">        memoryConflictService.resolveConflict(</span></code><br/><code><span leaf="">            tenantId, memOSUserId, memCubeId,</span></code><br/><code><span leaf="">            memory.getContent(), conflict, modelId);</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (resolution.isShouldStoreNew()) {</span></code><br/><code><span leaf="">        messagesToStore.<span class="code-snippet__keyword">add</span>(createMessage(memory.getContent()));</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">if</span> (CollectionUtils.isNotEmpty(resolution.getMemoryIdsToExpire())) {</span></code><br/><code><span leaf="">            memoryIdsToDelete.addAll(resolution.getMemoryIdsToExpire());</span></code><br/><code><span leaf="">        }</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这里的“批量”主要指按 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">memCubeId</span></span><span leaf=""> 分组、复用一批待写入内容；冲突服务的批量方法在实现内部仍逐条调用检测接口，再逐条决定保留新记忆、跳过或标记旧记忆。因此它减少了分组和编排开销，但不能等同于一次网络请求完成全部冲突判断。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">先写后删策略</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为避免数据丢失，采用&#34;先写新记忆，后删旧记忆&#34;策略。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">类说明：</span></strong><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">MemoryPersistenceServiceImpl<a class="wx_topic_link" topic-id="mt9nldma-mx170g" style="color: #576B95 !important;" data-topic="1" data-recommend="">#batchPersist</a></span></span><span leaf=""> 按 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">memCubeId</span></span><span leaf=""> 组装 MemOS 的 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">AddMemoryRequest</span></span><span leaf="">，写入 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">userId</span></span><span leaf="">、</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">writableCubeIds</span></span><span leaf=""> 和 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">messages</span></span><span leaf="">，并以 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">async</span></span><span leaf="">、</span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">fine</span></span><span leaf=""> 模式调用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">addMemory</span></span><span leaf="">。只有返回结果中包含新增记忆时，才把冲突旧记忆 ID 交给 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">deleteMemories</span></span><span leaf="">；删除异常只记录 warning，已经写入的新记忆继续保留。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这是一种&#34;写入优先&#34;的风险控制，而不是事务级一致性：MemOS 是外部 HTTP 服务，平台无法用本地事务同时包住新增和删除。当前删除失败只记录 warning，属于 best-effort；旧记忆可能暂时保留，后续检索或下一次冲突处理再进行清理。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">七</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心设计与运行观测</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这套实现把记忆处理拆成两条独立链路：请求前并行加载短期历史和长期记忆，会话结束后异步完成筛选、去重和持久化。核心策略集中在四点：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">并行加载：</span></strong><span leaf="">短期记忆和长期记忆提交到同一个专用线程池，主流程在 join 处汇合。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">新增消息标记：</span></strong><span leaf="">使用 </span><span style="background-color: rgb(243, 243, 243);box-sizing: border-box;"><span leaf="">[[NEW]]</span></span><span leaf=""> 标记本次新增消息，让 LLM 借助完整上下文提取新信息。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">预算控制：</span></strong><span leaf="">短期历史采用滑动窗口并预留摘要空间，长期记忆按 scope 分组后分配固定 tokens。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">可靠写入：</span></strong><span leaf="">Redis 锁和 hash 负责幂等，MemOS 侧先写新记忆、再尽力删除冲突旧记忆。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">运行观测能力：</span></strong><span leaf="">系统提供运行概览、记忆类型分布、时间趋势、Top Agents 和 Cube 明细等查询能力，可用于了解记忆数据的规模、分类、来源及变化趋势，并支持按时间范围查看长期记忆搜索趋势，适合日常巡检、数据分布分析和异常定位。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">八</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">总结与后续工作</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">短期记忆负责把当前会话带入下一轮，长期记忆负责把经过筛选的用户事实和 Agent 经验带到后续会话。两条链路在请求前并行读取，在会话结束后通过异步任务衔接；长期记忆再按 scope 和 Token Budget 控制注入内容。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当前方案已覆盖 Redis/MySQL 回退、MemOS 语义检索、LLM 判断、本地去重、冲突处理和先写后删。仍需补齐生产流量下的延迟与失败率观测，以及外部记忆服务失败后的补偿机制。</span></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546472&amp;idx=1&amp;sn=f81736e344109ae41c6f78127d847519&amp;scene=21#wechat_redirect" textvalue="EP-Harness：从个人 AI Coding 到团队级 Agent 工作流｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">EP-Harness：从个人 AI Coding 到团队级 Agent 工作流｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546407&amp;idx=1&amp;sn=bf3d73aab43b7634074d2331a14764f5&amp;scene=21#wechat_redirect" textvalue="得物知识问答：复合检索 Agent 的系统设计实践" data-itemshowtype="0" linktype="text" data-linktype="2">得物知识问答：复合检索 Agent 的系统设计实践</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546363&amp;idx=1&amp;sn=e497e41b6f529e7efb771672bc6864a0&amp;scene=21#wechat_redirect" textvalue="实战从零开始构建一个Coding Agent：Violin ｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">实战从零开始构建一个Coding Agent：Violin ｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546316&amp;idx=1&amp;sn=cbe17a317044b279de6ad192302d9390&amp;scene=21#wechat_redirect" textvalue="AI Native 交易核心系统的研发范式｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI Native 交易核心系统的研发范式｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546265&amp;idx=1&amp;sn=46de88c503a39ae3a77bd1ab36b85aff&amp;scene=21#wechat_redirect" textvalue="推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理" data-itemshowtype="0" linktype="text" data-linktype="2">推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 / 偶啦</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062914" src="https://wechat2rss.xlab.app/img-proxy/?k=2704b1d6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvMxicMX9tW5LwJBRVZnzbqpnDywSu1ziaGofkFwCSiaCEDeEUEkm57U4mOTuu2ff7ez6MLNaUBQRbV5OA7OichGJua6swCZn71BMU%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=78649e5b&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546577%26idx%3D1%26sn%3De958fbb5a7701d92612f0da1549ad0ad">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 26 Aug 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>EP-Harness：从个人 AI Coding 到团队级 Agent 工作流｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546472&amp;idx=1&amp;sn=f81736e344109ae41c6f78127d847519</link>
      <description>个人用 AI 写代码方便，团队化却会暴露 Prompt 无人审、经验不沉淀、链路没闭环等问题。EP-Harness 把 Agent 当团队成员来管理，核心不是让模型更强，而是让它能在真实研发流程里正确工作，最终让 AI Coding 从个人工具变成可治理、可持续闭环的团队生产力。</description>
      <content:encoded><![CDATA[<p>原创 <span>方舟</span> <span>2026-08-19 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=0864c3ef&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuibyaHT7fpXvsJqPQov3qLGFRQgNicCZzYKdls1HV3GonI5PWibmsOXeg4JZ3zU9Wnv8g1YOvJb4TSCIiby27raMNPtxNyjNLiaDYQ%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>个人用 AI 写代码方便，团队化却会暴露 Prompt 无人审、经验不沉淀、链路没闭环等问题。EP-Harness 把 Agent 当团队成员来管理，核心不是让模型更强，而是让它能在真实研发流程里正确工作，最终让 AI Coding 从个人工具变成可治理、可持续闭环的团队生产力。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、本地 AI Coding 的团队级缺口</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、EP-Harness 的定位：团队级 Agent 工作系统</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.分层可组合架构</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.Backend.Execute：统一 Agent 执行契约</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、AI Coding 正在从工具使用走向工程系统</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.Agent 需要理解真实研发现场</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.Prompt 从个人技巧变成团队规程</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.Context 从“复制粘贴材料”变成结构化上下文</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.Harness：让 Agent 真正可执行、可观察、可治理</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.Loop：把重复工作变成可控闭环</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、落地效果</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.决策追溯</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.多 Agent 协作</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.自动化治理</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、后续演进</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、结语</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">本地 AI Coding 的团队级缺口</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">直接在本地使用 AI Coding 工具，短期看，很方便，但团队化之后会暴露出几个缺口。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Prompt 没有 Review</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">代码有 Code Review，prompt 没有。Agent 指令写得好不好、有没有歧义、有没有安全风险、能不能复用，往往只靠个人判断。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">经验无法沉淀</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">日志排查步骤、部署检查方式、开发提示词通常只留在个人本地文件里，下一个人还要重新摸索。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">过程缺少可见性</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">谁在用哪个 Agent？用了什么模型和 runtime？成功率、耗时、token 花费是多少？没有平台化就很难进入团队管理。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">研发链路没有闭环</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Agent 写完代码不是结束。代码审查、推送、部署、提测、CR 反馈、BUG 回流和日志巡检如果仍靠人手动接力，价值就停在局部提效。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">EP-Harness 的核心价值，就是把这些缺口从个人习惯问题变成平台能力。</span></strong></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">二</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">EP-Harness 的定位：团队级 Agent 工作系统</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">EP-Harness 可以理解为一个 Managed Agents 平台。它把 Agent 当成团队里的工作成员来管理：Agent 有身份、有任务、有状态、有执行记录、有可见性、有权限边界，也有自己的 instructions、skills、runtime 和历史产出。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">技术基座：</span></strong><span leaf="">EP-Harness 是基于开源项目 Multica 的二次开发。Multica 官方定位是 open-source managed agents platform，核心思路是把 coding agents 作为可分配任务、可跟踪进度、可沉淀技能的真实队友来管理；EP-Harness 在这个基座上，进一步贴合公司研发流程和内部系统。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">分层可组合架构</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5944444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062806" src="https://wechat2rss.xlab.app/img-proxy/?k=33e35a7c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHshnOG2IkvMUJxr9FRJzWXTTm9Sr8VGbmePPYNlFLgRwwUoccTQibrYHFbcnHh24oL198kBdttGfUmxfwADgBdgfAtibeiaicQCJHY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2212962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062807" src="https://wechat2rss.xlab.app/img-proxy/?k=62d658c6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvD1jyqjaVWsR0zUFAdzpPWtyJic0ejlkPiaAB5OIDcCRGrTTIIzSbQiaPNhVDy4x5tvpYGV4mW1JwXGDKeNNbyyGP8EepAic4f5NU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">从架构上看，Multica 由 server、daemon 和 AI 编程工具三部分协作：server 管理工作区、Issue、成员和任务队列，并承担实时更新；daemon 运行在开发者本机，领取任务并调用本地 AI 编程 CLI；实际的代码执行发生在本地工具链和工作目录中。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在 EP-Harness 里，任务不是散落在聊天窗口里，而是进入 Issue。Issue 可以关联项目、需求、应用分支、工作流、评论、执行日志、文件变更和后续反馈。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当 Agent 的任务进入 Issue，团队就可以追踪它。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当 Agent 的规则进入 Instructions 和 Workflow，团队就可以审查它。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当 Agent 的经验进入 Skills，团队就可以复用它。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当 Agent 的执行进入 Runtime 和日志，团队就可以复盘它。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当 Agent 的结果进入部署、评审和反馈链路，团队就可以让它持续闭环。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Backend.Execute：统一 Agent 执行契约</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">EP-Harness 在 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">server/pkg/agent/agent.go</span></span><span leaf=""> 中以 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">Backend.Execute(ctx, prompt, ExecOptions)</span></span><span leaf=""> 作为各 Agent Runtime 的统一入口。</span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">agent.New</span></span><span leaf=""> 根据 agentType 和 Config 选择具体 Provider Backend；Claude、Codex、OpenCode、ACP 等实现可以保留各自的参数、进程和传输协议，但对上层暴露一致的执行生命周期。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5722222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062809" src="https://wechat2rss.xlab.app/img-proxy/?k=269816a7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsIHfZ87yTGEkwjJbYuqRfdkz4U33jFe66xqvZFe1YsibTKl9duCPxm5FPmXN5iaRDVqO2icSkcvxkLfoR5hDMV5gfHU0DSvI27tw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">三</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI Coding 正在从工具使用走向工程系统</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI Coding 的使用方式正在经历四层变化。它们不是互相替代，而是逐层外扩：从&#34;怎么问&#34;，走向&#34;喂什么材料&#34;，再走向&#34;如何执行和约束&#34;，最终走向&#34;如何持续闭环&#34;。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24814814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062808" src="https://wechat2rss.xlab.app/img-proxy/?k=05391436&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHu8ZBrnGBYspZuDoiaax5POaqG9NvgGiaWVBtL65THD7EpMCsH8wQbS1YOecfbibL6T3spOl3f34WN75gAyBs4KLBYkD9Xvs1EAtE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">个人 AI Coding 工具通常解决前两层。EP-Harness 还解决后两层，并把四层能力放进团队研发流程。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5944444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062810" src="https://wechat2rss.xlab.app/img-proxy/?k=43906b72&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvspPH3rjlYLbOzzJRrBbTsfU6vMCx1lueCrt3gBRhrvYdVibGAQNibXkH1w1jEwPEu2QD9c1hXqAaRtpv7rwAzCv8AGy4iaBdMss%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Agent 需要理解真实研发现场</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通用 AI Coding 工具并不了解公司的研发体系。它不知道需求结构，不知道内部飞书文档权限，不知道应用分支如何创建，不知道代码管理和发布平台的实际流程，也不知道每个团队沉淀过哪些 Skills。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">EP-Harness 的价值，就是把这些内部系统接进 Agent 的工作环境里。它要解决的不是&#34;模型有没有能力写代码&#34;，而是&#34;模型能不能在我们的研发流程里正确工作&#34;。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3435185185185185" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062813" src="https://wechat2rss.xlab.app/img-proxy/?k=8e6344a1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvL2tibL1BVYt4qbAbECyiaiaAekxlba2T8cYpKo0AyBBn2AujvE5iaH19ibAeqVbWO1eAgLCMtlcoZL2OhRAMb0VGyTFvJQAsapye0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">外部工具能给你一个 Agent，EP-Harness 要给团队一个 Agent 可以工作的组织环境。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Prompt 从个人技巧变成团队规程</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">很多团队刚开始用 AI 时，会把重点放在 prompt 技巧上。但用得久了会发现，更重要的是把 prompt 变成可维护的规程。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2953703703703704" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062812" src="https://wechat2rss.xlab.app/img-proxy/?k=26159e10&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtvwZNxjtTEvibckS660qiaE4aFPDf2TicdzGicV8L0mtff2cRfUMKrwyAKV5fzCib0huxUCP4KXbu4x5H1kQEEJU2tl2TqELYicicsl8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Context 从“复制粘贴材料”变成结构化上下文</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Agent 做不好，很多时候不是模型不够强，而是上下文不对。需求背景、设计文档、验收标准、关联代码仓库、目标分支、历史讨论、失败记录和内部系统调用方式，不应该靠用户每次手动复制粘贴。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Issue：</span></strong><span leaf="">任务目标、评论、状态和历史记录。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">需求：</span></strong><span leaf="">业务背景、需求文档和迭代信息。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">项目：</span></strong><span leaf="">业务边界和仓库资源。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Workflow：</span></strong><span leaf="">阶段目标和交付要求。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Skills：</span></strong><span leaf="">团队沉淀的方法和工具说明。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Runtime：</span></strong><span leaf="">真实执行环境。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">飞书集成：</span></strong><span leaf="">通知、讨论和文档读取能力。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">运行记录：</span></strong><span leaf="">执行过程、产出和失败信息。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这样 Agent 不再只拿到一段文字描述，而是进入一个由 Issue、项目、文档、分支、评论和运行记录组成的工作现场。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Context Engineering 的重点不是把上下文塞满，而是让正确上下文在正确时机进入 Agent。</span></strong></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Harness：让 Agent 可执行、可观察、可治理</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一个裸模型没有工作目录，不会天然知道当前项目怎么测试，也不会自动遵守团队规范，更不会自己接入需求管理、代码管理、发布平台、飞书和日志平台。Harness 的价值，就是在模型外面补齐这些工程能力。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.39351851851851855" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062814" src="https://wechat2rss.xlab.app/img-proxy/?k=0f964dcd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtEJgcU0OMfLRcv6YCzJFfuibsn5uzoh1l2mTuN1c9ZibyMSO0FXPDibSJGO1DE8Yd5Re2uQ7371s28iaHR2a1wJWKgTspJ6RaWwMA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这让 Agent 从&#34;一个能说话的模型&#34;变成&#34;一个可管理的执行单元&#34;。对团队来说，更重要的不是 Agent 某次回答得多漂亮，而是它能否长期稳定地在工程约束里工作。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Loop：把重复工作变成可控闭环</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Loop Engineering 不是让 Agent 一直跑，也不是无限自动化。有价值的 Loop，需要包含发现、派发、执行、验证、记录和下一步决策。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">上游版本更新分析</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">自动化定时检查外部 release。 判断是否已有分析 Issue。 发现新版本后创建分析任务。 Agent 分析影响、风险、迁移建议和验证项。 需要落地时继续拆成迁移子任务。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">线上日志巡检</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">自动化按时间窗口拉取异常。 聚合错误 fingerprint、影响范围和样本。 Agent 分析可能根因。 生成修复建议和验证建议。 必要时创建后续修复 Issue。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这些场景的关键不是&#34;Agent 自动跑了&#34;，而是每一轮都有记录、判断、产出和后续动作。Loop 的价值在闭环，不在循环本身。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">落地效果</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5944444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062815" src="https://wechat2rss.xlab.app/img-proxy/?k=f16577c9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvgkmIibhwICicTw2Sgj0IvAQ1ia2AhZ4yEiatuBPcuawWBVdfViadukibpkm9FDAoCickHQftou7GPpyw1JMyGT03Z98uX4cZjibhHjia4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">决策追溯</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">需求交付完成后，可依托 Issue 中沉淀的决策记录、实现说明，快速还原当时的实现背景和关键取舍。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.10185185185185185" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062811" src="https://wechat2rss.xlab.app/img-proxy/?k=bb7e9804&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtRibgbMD8EJVqsAl3KCrlhIcOpMuNlYjL03tGXFy66HN0MuYVpTD9Jp61SlsZeTILZJpOyOlcRc1jDwtDJkriaMJajicdvC8gw84%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多 Agent 协作</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">案例结论：</span></strong><span leaf="">通过将交付流程拆分为提议、开发、评审、归档等阶段，并引入多 Agent 协作机制，形成从需求澄清、实现落地、质量评审到经验沉淀的闭环，持续提升代码质量。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24259259259259258" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062816" src="https://wechat2rss.xlab.app/img-proxy/?k=be387325&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuNmicnBHXqaFyicclaEiathgFPqHXKfUCxMIibgTbCeulegPF7L4d6WXeeibQUhD1WKITibeZ8ibTgvWQnALUVgqwsnGZdzbGt2Y139k%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">自动化治理</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">治理成效：累计自动化修复 100+ 个异常日志问题，异常日志从高频暴露逐步收敛，问题识别、归类和修复效率明显提升。典型高频问题由治理前每 4 小时 2400+ 条，降低到治理后的个位数。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24814814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062819" src="https://wechat2rss.xlab.app/img-proxy/?k=781be041&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvHSsw9MraKibBvLDCtu1afibXMZetZgibNX4WgNPQSQTbnICP14MgyXlAPERujq1wmSKSb02fGzgqEttyT58skh4SKg3jHsLnmbc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">后续演进</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5944444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062820" src="https://wechat2rss.xlab.app/img-proxy/?k=32101a37&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv2H3B5Seh4vib5y4aGqfZ7ApyIPIDc3Dv77v4Tib6aqRyib15yDS9lJLQfNeHJWm7y6aNwfVfb2iap0bpzvf6aWgAQrBibZnwmp6fw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.41574074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062818" src="https://wechat2rss.xlab.app/img-proxy/?k=718a9705&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsvQcQnVYiciaK6Ae0d6CrnGmeib5MEcRyjB6f82ia4YzH27szvZ4hSiaLSAMMyZrpFtvz7vyGGiadQnU3j6ztcXvDJn07OvM6P03WC0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">结语</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI Coding 的第一阶段，是个人把 Agent 当工具。下一阶段，是团队把 Agent 当协作成员。当 Agent 开始接触真实需求、真实代码、真实部署和真实反馈时，单纯依赖聊天窗口和本地 prompt 已经不够。团队需要一个平台，把 Agent 的任务、上下文、规则、执行、审查、反馈和度量都组织起来。当这套机制跑起来，Agent 才能从一个个人电脑里的助手，慢慢变成团队研发流程里可管理、可复用、可持续优化的生产力。</span></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546407&amp;idx=1&amp;sn=bf3d73aab43b7634074d2331a14764f5&amp;scene=21#wechat_redirect" textvalue="得物知识问答：复合检索 Agent 的系统设计实践" data-itemshowtype="0" linktype="text" data-linktype="2">得物知识问答：复合检索 Agent 的系统设计实践</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546363&amp;idx=1&amp;sn=e497e41b6f529e7efb771672bc6864a0&amp;scene=21#wechat_redirect" textvalue="实战从零开始构建一个Coding Agent：Violin ｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">实战从零开始构建一个Coding Agent：Violin ｜得物技术</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546316&amp;idx=1&amp;sn=cbe17a317044b279de6ad192302d9390&amp;scene=21#wechat_redirect" textvalue="AI Native 交易核心系统的研发范式｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI Native 交易核心系统的研发范式｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546265&amp;idx=1&amp;sn=46de88c503a39ae3a77bd1ab36b85aff&amp;scene=21#wechat_redirect" textvalue="推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理" data-itemshowtype="0" linktype="text" data-linktype="2">推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546214&amp;idx=1&amp;sn=1ea66a2621a684b57f05339341dde10f&amp;scene=21#wechat_redirect" textvalue="RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 / 方舟</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062817" src="https://wechat2rss.xlab.app/img-proxy/?k=63368b64&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHvWFh8a4bELTq0Yqm4TXFvWllbtzAcNK4lFK3yXEyzicQMkFfXCeLZOOSyEW16CT0MRGFF4jqicok43fJp9LPoSa3jU21qlFAHcs%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=1f9093e9&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546472%26idx%3D1%26sn%3Df81736e344109ae41c6f78127d847519">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 19 Aug 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>得物知识问答：复合检索 Agent 的系统设计实践</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546407&amp;idx=1&amp;sn=bf3d73aab43b7634074d2331a14764f5</link>
      <description>从&#34;搜到什么用什么&#34;到&#34;搜→筛→挖→验&#34;自主决策闭环——我们造了一个有判断力的 RAG Agent，不是套壳。</description>
      <content:encoded><![CDATA[<p>原创 <span>莲舟</span> <span>2026-08-12 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=2b77c52c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHu4tPyiboCQKmkUaxX3XmqU0tia9sibiaiadMM5RyAUCWsJGSa1ENCeZkLlib4J30muZ9IoIqIZ3P4oEdK4gJTlcpdBF5LjQ5PcAbXDQ%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>从"搜到什么用什么"到"搜→筛→挖→验"自主决策闭环——我们造了一个有判断力的 RAG Agent，不是套壳。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、AgentScope 2.0：Harness Agent 架构</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.我们重点使用的三个能力</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.基于框架能力构建的复合检索流程</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.当前定位：知识库 + 个人飞书数据</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、Agent 自主决策的复合检索架构</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.多源并行检索能力</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.自主决策能力</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.信息整合能力</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、检索质量：三阶段 Pipeline——不只靠搜，更要靠&#34;筛&#34;</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.查询扩展：为什么是自然语言句子而非关键词</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.问题：向量相似 ≠ 语义相关</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.方案：三阶段质量 Pipeline</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.实现方式：AgentScope Middleware</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.核心过滤逻辑代码示例</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、多模态：让图片成为提问的一部分</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.自动模型切换</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.图片全生命周期管理</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、生产级可靠性：多实例 SSE 断点续传</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.三种路径</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.关键设计决策</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.模型容灾</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、创新点总结与展望</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AgentScope 2.0：Harness Agent 架构</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">知识问答的核心挑战是</span><strong style="box-sizing: border-box;"><span leaf="">准确率和质量</span></strong><span leaf="">。一个回答要准确，需要：查得全（召回率），查得准（精准度），理解得对（多模态），看得对（权限隔离）。这些能力不是堆功能就能实现的，需要一个强大的 Agent 运行时来支撑。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们选择 AgentScope 2.0，核心原因是它的 </span><strong style="box-sizing: border-box;"><span leaf="">HarnessAgent</span></strong><span leaf=""> 架构——这是面向生产环境的 Agent 实现，内置了长期运行 Agent 必备的工程能力。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">我们重点使用的三个能力</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">HarnessAgent 提供了丰富的能力（ReAct 循环、Middleware、长期记忆、子 Agent 编排、沙箱隔离等），我们重点使用了三个与复合检索直接相关的能力：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">ReAct 循环：</span></strong><span leaf="">Agent 不是一次性检索然后回答，而是在「推理→行动→观察→再推理→再行动……」的循环中反复迭代，实现&#34;搜索→评估→精读→再搜索&#34;的复杂流程。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">中间件（Middleware）：</span></strong><span leaf="">在 Agent 执行流程的关键位置插入自定义逻辑，不侵入核心代码。我们在 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">onActing</span></span><span leaf=""> 钩子中实现三阶段质量过滤，对 Agent 完全透明。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">并行工具调用：</span></strong><span leaf="">当 Agent 决定调用多个工具时，框架自动并行执行，而非串行等待。这让&#34;多工具 + 多变体&#34;并行检索成为可能。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">基于框架能力构建的复合检索流程</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">流程概览：</span></strong><span leaf="">Agent 通过 ReAct 循环实现多轮自主决策，每一轮都是&#34;搜索 → 评估 → 决策&#34;的闭环。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多源并行检索：</span></strong><span leaf="">Agent 同时调用知识库、飞书文档、飞书消息、飞书妙记等多个工具，每个工具用不同的查询变体并行调用。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">自主评估与挖掘：</span></strong><span leaf="">Agent 评估检索结果的相关性、完整性和时效性，不够充分时触发补充检索或精读全文。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">质量过滤：</span></strong><span leaf="">检索结果经过三阶段质量 Pipeline（FastPass → Reranker → LLM Grading）过滤。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">信息整合：</span></strong><span leaf="">Agent 根据来源权威性优先级排序，多源信息交叉验证，生成有判断力的回答。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心：Agent 的自主决策权</span></strong><span leaf="">——Agent 决定用哪些工具、搜几次、是否需要精读、什么时候停止。用户不需要告诉 Agent&#34;你去查飞书文档&#34;，Agent 自己知道什么时候该查。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">当前定位：知识库 + 个人飞书数据</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当前产品的定位是</span><strong style="box-sizing: border-box;"><span leaf="">两条线并行：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">知识库线：</span></strong><span leaf="">企业知识库——产品文档、流程规范、FAQ 等，按业务领域或部门划分，由管理员统一维护。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">个人线：</span></strong><span leaf="">飞书生态数据——用户勾选飞书消息、飞书文档、飞书妙记时，Agent 检索的是该用户个人可见的数据，由飞书自身的权限体系控制。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">两条线在同一轮对话中可以同时激活——用户问&#34;SSO 接入流程&#34;，Agent 可能从知识库拿官方文档、从用户所在技术群拿最新讨论、从团队周会妙记拿相关决策。</span><strong style="box-sizing: border-box;"><span leaf="">知识库提供权威性和结构化的知识基座，个人数据提供实时性和上下文关联的补全</span></strong><span leaf="">——这是产品最核心的价值差异。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">二</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Agent 自主决策的复合检索架构</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6527777777777778" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062748" src="https://wechat2rss.xlab.app/img-proxy/?k=8b1cd08e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHumgk42bicOVUa9DVrpnaNuUzKBKsabug82SdTH4V4UymyD08JW36neBsib5zI4NkRoANKib1SR999ZUuPic63OEGmJdalIonBXbo4%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多源并行检索能力</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Agent 可用的工具覆盖知识库数据源 + 三类个人飞书数据源，全部根据用户的前端勾选和权限动态激活。Agent 自主判断何时调用哪个工具，整个过程对用户透明：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24814814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062745" src="https://wechat2rss.xlab.app/img-proxy/?k=beaf3932&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvGhiaQqwpqhULhjjUYNCwicxBapxia1ibV0BrWWlTN4aaQ2BNMY5OTOgtJEhpibsG1Aib3GzGhicMaloHCrpBPv9SxDwSsoMuvqOIuyY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">权限隔离的两个层面：</span></strong><span leaf="">知识库层按业务领域或部门划分，不同用户拥有不同的可访问知识库列表；飞书生态层通过 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">UserCallContext</span></span><span leaf=""> 注入用户的飞书 openId，API 按当前用户的身份返回数据。同一个问题，不同用户看到的结果是不同的。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">并行调用的技术实现：</span></strong><span leaf="">当 Agent 在一次推理中决定调用多个工具时，框架自动并行执行，由 AgentScope 的 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">Toolkit.parallel(true)</span></span><span leaf=""> + Java 21 Virtual Thread 支撑。工具调用是 I/O 密集型的（HTTP 请求到知识管理平台和飞书 API），虚拟线程在 I/O 阻塞时自动释放底层平台线程。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">自主决策能力</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 80%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.6083333333333334" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062747" src="https://wechat2rss.xlab.app/img-proxy/?k=2c4aed1c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuIlK3rdqicichSHR6LZhoic0az5ObdekMFvvzYB8aMfKAL5cI1HWMhliaxrlEWsAibRRWtwbrZrnmzc651FUgTQO6dYV9c2Ww7K3eo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">传统 RAG 的流程是单向的：用户提问 → 向量检索 → 拼接上下文 → 生成回答。Agent 在这个流程里是被动的——检索到什么就用什么，无法判断信息是否充分，也不会主动补充检索。 </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们的流程完全不同，核心在于两个关键决策点：</span><strong style="box-sizing: border-box;"><span leaf="">判断Agent 如何评估检索结果是否充分？</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Agent 拿到第一轮检索结果后，会基于结构化提示词中的策略进行多维度评估：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">相关性判断：</span></strong><span leaf="">检索结果是否直接回答了用户问题？还是只是&#34;词像但意思不对&#34;？</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">完整性判断：</span></strong><span leaf="">关键信息是否齐全？比如用户问&#34;SSO 接入流程&#34;，是否包含了配置步骤、权限申请、测试方法等必要环节？</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">时效性判断：</span></strong><span leaf="">文档是否是最新版本？是否有更新的版本在其他数据源中？ </span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如果评估结果是&#34;信息不足&#34;，Agent 不会盲目重试，而是根据判断结果选择下一步策略。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">挖掘：Agent 如何决定深挖方向？</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于判断结果，Agent 有三种挖掘策略：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">精读全文：</span></strong><span leaf="">如果搜索结果中有高价值文档的片段，但信息不完整，Agent 会调用 get_document_content 工具拉取完整文档。比如从知识库检索到&#34;SSO 接入指南&#34;的摘要，但缺少具体的配置参数，Agent 会精读全文获取完整信息。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">补充检索：</span></strong><span leaf="">如果当前数据源的信息不够，Agent 会调整查询策略，尝试其他数据源。比如知识库没有最新讨论，Agent 会转向飞书消息或妙记搜索。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">交叉验证：</span></strong><span leaf="">如果多个数据源返回了冲突信息，Agent 会根据来源权威性进行优先级排序——官方文档 &gt; 飞书文档 &gt; 消息/妙记，并在回答中明确指出冲突和建议采信的来源。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个流程的核心是 </span><strong style="box-sizing: border-box;"><span leaf="">Agent 的决策权</span></strong><span leaf="">——每一轮都是&#34;搜索 → 评估 → 决策&#34;，而不是预设的固定路径。Agent 决定用哪些工具、搜几次、是否需要精读、什么时候停止。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">决策依据：结构化提示词 + Middleware 兜底</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Agent 做决策的依据来自我们精心设计的结构化提示词中的策略引导——&#34;知识库权威性更高，优先使用&#34;、&#34;飞书文档检索范围更广，权威性一般&#34;——这些是优先级提示，帮助 Agent 判断不同来源的特性。但最终选哪些工具、怎么组合、哪一轮做什么，由 LLM 在提示词的策略框架内自主决定。用户不需要告诉 Agent&#34;你去查飞书文档&#34;，Agent 自己知道什么时候该查。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们在 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">AGENTS.md</span></span><span leaf=""> 中设计了一套结构化的 Agent 提示词，它不是简单的指令列表，而是一个完整的</span><strong style="box-sizing: border-box;"><span leaf="">决策流程图</span></strong><span leaf="">：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2759259259259259" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062746" src="https://wechat2rss.xlab.app/img-proxy/?k=0664576f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvygCib0macgCTJNe3Of3xsribUVWdgFH4KaF2cwpssUwN3jXZDQjnRygk2IQlzMZ4ZrsMJb3WbtEFnBjWg1KjaLJk94NZHmreFc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这套提示词的设计精髓在于：</span><strong style="box-sizing: border-box;"><span leaf="">它不是告诉 Agent 怎么做，而是告诉 Agent 做什么和为什么</span></strong><span leaf="">。Agent 在 ReAct 循环中自主决定具体的执行细节——用哪些工具、搜几次、是否需要精读、什么时候停止。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">同时，HarnessAgent 的中间件机制允许在 ReAct 循环的关键时机插入自定义逻辑。我们在 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">onActing</span></span><span leaf=""> 钩子中实现三阶段质量过滤（FastPass → Reranker → LLM Grading），当知识库检索工具执行完成、结果即将返回给大模型时，中间件拦截结果进行过滤。这个过程对 Agent 完全透明——Agent 看到的始终是过滤后的高质量结果。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">这种设计的优势在于：关注点分离。</span></strong><span leaf="">结构化提示词负责&#34;做什么&#34;（策略框架），Middleware 负责&#34;做得好&#34;（质量保障），ReAct 循环负责&#34;怎么做&#34;（执行流程）。三者各司其职，互不侵入。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们没有修改 AgentScope 的 ReAct 循环代码，而是通过结构化提示词和中间件，在循环的关键节点注入了我们的业务逻辑。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">信息整合能力</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当 Agent 自主选择多个数据源并行检索后，它拿到的不是零散的片段，而是一张信息拼图。这张拼图的价值体现在三个递进的层面：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一层：多角度并行搜索，最大化召回。</span></strong><span leaf="">Agent 发现知识库结果中有一份标记为&#34;废弃&#34;的旧版文档，同时飞书文档搜索找到了同文档的最新版本——它自动优先采用新版，标注旧版已废弃。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第二层：从搜索到精读，深挖关键文档。</span></strong><span leaf="">Agent 不是&#34;搜到什么就用什么&#34;。它从搜索结果中识别出最关键的文档，进一步调用精读工具拉取全文——因为向量检索只返回最相似的那几个片段，完整的上下文藏在同一篇文档的其他段落里。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第三层：多源交叉验证，有判断力的信息整合。</span></strong><span leaf="">Agent 拿到多源信息后，会根据来源权威性进行优先级排序——官方文档最高优先级，会议纪要作为背景补充。这不是&#34;多搜几个地方然后拼起来&#34;，而是有判断力的信息整合。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">实现要点：</span></strong><span leaf="">结构化提示词中明确规定了来源优先级（企业知识库 &gt; 飞书文档 &gt; 消息/妙记），并要求冲突时明确指出并建议用户以哪个为准。</span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">SourceCollector</span></span><span leaf=""> 组件按 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">sourceId</span></span><span leaf=""> 跨工具去重，每条关键信息在最终回答中标注 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">[src:sourceId]</span></span><span leaf="">，可追溯到来源。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">三</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">检索质量：三阶段 Pipeline——不只靠搜，更要靠&#34;筛</span></strong><span leaf=""><span textstyle="" style="font-weight: bold;">&#34;</span></span></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">RAG 系统的质量由两个指标决定：</span><strong style="box-sizing: border-box;"><span leaf="">召回率</span></strong><span leaf="">——有没有把相关文档找出来；</span><strong style="box-sizing: border-box;"><span leaf="">精准度</span></strong><span leaf="">——找出来的文档是不是真的相关。召回靠查询扩展，精准靠三阶段质量 Pipeline。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">向量检索本身我们</span><strong style="box-sizing: border-box;"><span leaf="">没有重复造轮子</span></strong><span leaf="">——知识库的文档解析、Chunk 切分、向量化、混合检索，全部由公司已有的知识管理平台提供。我们做的是&#34;在知识管理平台之上构建智能检索层&#34;。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">查询扩展：为什么是自然语言句子而非关键词</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在发起检索之前，第一件事是查询扩展——将用户的原始问题转化为更适合检索的查询语句。这不是简单的关键词提取，而是生成语义等价的完整自然语言句子。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么是自然语言而非关键词？</span></strong><span leaf="">Embedding 模型是在海量自然语言文本上训练的——完整的句子、段落、文档。模型对&#34;一句话&#34;的语义编码远比&#34;一串词&#34;精准。例如用户问&#34;怎么申请加薪&#34;，关键词方式「加薪 申请 流程 条件」缺乏语法结构，而自然语言变体「得物内部员工申请薪资调整的流程是什么」有完整的主谓宾结构，能生成更精准的语义向量。 </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">更关键的是，Agent 会生成多个不同角度的变体，并行发起检索。这些变体彼此互补——有的侧重流程描述，有的侧重政策条款，有的侧重申请入口——共同覆盖用户意图的各个侧面。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">问题：向量相似 ≠ 语义相关</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">查询扩展提升了召回率，但并不保证召回来的都是真正有用的。向量检索用余弦相似度比较 query 和 document 的 Embedding 向量，这个机制适合&#34;找看起来像的&#34;，但容易被高频词汇干扰。 </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">例如用户问「得物 App 的退货流程是什么」，向量检索返回 5 条结果中只有 2 条真正相关，噪声比例 60%。直接把这些喂给大模型，回答质量必然受影响。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">方案：三阶段质量 Pipeline</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们不是在向量检索结果上只做一次过滤，而是构建了一个三阶段 Pipeline，每个阶段解决不同层面的问题：</span></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 70%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.5405940594059406" data-s="300,640" data-type="png" data-w="1010" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062749" src="https://wechat2rss.xlab.app/img-proxy/?k=959f6eb1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHt1gpLEAEKHeWD2GWT5UpfAJibLNJLoFavbmd9TkP9WffhkxV2RNiauGojBbIGKAD0NS5Hl2CzAUZ4VFvXh9znMHibJzicticMVUsL8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">实现方式：AgentScope Middleware</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三阶段 Pipeline 通过 AgentScope 的 Middleware 机制接入，在 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">onActing</span></span><span leaf=""> 钩子中拦截 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">knowledge_search</span></span><span leaf=""> 工具结果。核心逻辑：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">识别 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">knowledge_search</span></span><span leaf=""> 工具调用。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">调用原始工具获取结果。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">按 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">toolCallId</span></span><span leaf=""> 分组独立处理：FastPass → Reranker → LLM Grading。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">重建事件流，用过滤后的结果替换原始工具输出。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">关注点分离：</span></strong><span leaf="">Agent 的推理逻辑和检索质量策略完全解耦。调整阈值、切换 Reranker 模型、开关 LLM Grading，都只需修改配置或 Middleware，不影响 Agent 核心代码。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心过滤逻辑代码示例</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Middleware 入口 — onActing 拦截 knowledge_search 结果：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cpp"><code><span leaf=""><span class="code-snippet__comment">// 实现 MiddlewareBase 接口，在工具执行前后注入过滤逻辑</span></span></code><br/><code><span leaf=""><span class="code-snippet__function">Flux&lt;AgentEvent&gt; </span><span class="code-snippet__function"><span class="code-snippet__title">onActing</span></span><span class="code-snippet__function"><span class="code-snippet__params">(Agent agent, ActingInput input, next)</span></span>{</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (!config.<span class="code-snippet__built_in">isEnabled</span>()) <span class="code-snippet__keyword">return</span> next.<span class="code-snippet__built_in">apply</span>(input);            <span class="code-snippet__comment">// 未启用，直接透传</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 1. 识别本轮是否包含 knowledge_search 工具调用</span></span></code><br/><code><span leaf="">    targetToolCalls = input.<span class="code-snippet__built_in">toolCalls</span>()</span></code><br/><code><span leaf="">        .<span class="code-snippet__built_in">filter</span>(tc -&gt; tc.name == <span class="code-snippet__string">&#34;knowledge_search&#34;</span>);</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (targetToolCalls.<span class="code-snippet__built_in">isEmpty</span>()) <span class="code-snippet__keyword">return</span> next.<span class="code-snippet__built_in">apply</span>(input);      <span class="code-snippet__comment">// 无目标工具，透传</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 2. 先让工具执行，收集所有事件后再统一处理</span></span></code><br/><code><span leaf="">    events = next.<span class="code-snippet__built_in">apply</span>(input).<span class="code-snippet__built_in">collectList</span>();</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">return</span> <span class="code-snippet__built_in">processEvents</span>(events, targetToolCalls);                <span class="code-snippet__comment">// 进入三阶段过滤</span></span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三阶段过滤主流程：</span></strong></p><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="javascript"><code><span leaf=""><span class="code-snippet__title">List</span>&lt;<span class="code-snippet__title">RetrievedItem</span>&gt; <span class="code-snippet__title">filter</span>(<span class="code-snippet__params"><span class="code-snippet__built_in">String</span></span><span class="code-snippet__params"> query, List&lt;RetrievedItem&gt; items</span>){</span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// ── Stage 0: FastPass ──</span></span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 条件：结果数 ≤ 2 且全部原始 score ≥ 0.7</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (items.<span class="code-snippet__title">size</span>() &lt;= <span class="code-snippet__number">2</span> &amp;&amp; items.<span class="code-snippet__title">allMatch</span>(i -&gt; i.<span class="code-snippet__property">originalScore</span> &gt;= <span class="code-snippet__number">0.7</span>)) {</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> items;  <span class="code-snippet__comment">// 高置信度，跳过过滤，零额外延迟</span></span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// ── Stage 1: Reranker 粗筛 ──</span></span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 调用交叉编码器模型重新打分，过滤&#34;词像但意思不对&#34;的结果</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (config.<span class="code-snippet__property">rerankerEnabled</span>) {</span></code><br/><code><span leaf="">        scores = rerankerService.<span class="code-snippet__title">rerank</span>(query, items.<span class="code-snippet__property">snippets</span>);   <span class="code-snippet__comment">// 调用 gte-rerank-v2 模型</span></span></code><br/><code><span leaf="">        items = items</span></code><br/><code><span leaf="">            .<span class="code-snippet__title">filter</span>(i -&gt; scores[i.<span class="code-snippet__property">index</span>] &gt;= <span class="code-snippet__number">0.3</span>)                  <span class="code-snippet__comment">// 阈值 0.3，过滤低相关</span></span></code><br/><code><span leaf="">            .<span class="code-snippet__title">sortByDescending</span>(i -&gt; i.<span class="code-snippet__property">rerankerScore</span>)</span></code><br/><code><span leaf="">            .<span class="code-snippet__title">limit</span>(<span class="code-snippet__number">8</span>);                                            <span class="code-snippet__comment">// 取 Top-8</span></span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// ── Stage 2: LLM Grading 精评 ──</span></span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 用大模型逐条打分（0.1~1.0 四级），过滤&#34;主题对但不够直接&#34;的结果</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> (config.<span class="code-snippet__property">llmGradeEnabled</span> &amp;&amp; !items.<span class="code-snippet__title">isEmpty</span>()) {</span></code><br/><code><span leaf="">        graded = llmScoringService.<span class="code-snippet__title">gradeInBatch</span>(query, items);    <span class="code-snippet__comment">// 最多 10 条，30s 超时</span></span></code><br/><code><span leaf="">        items = graded</span></code><br/><code><span leaf="">            .<span class="code-snippet__title">filter</span>(g -&gt; g.<span class="code-snippet__property">score</span> &gt;= <span class="code-snippet__number">0.5</span>)                          <span class="code-snippet__comment">// 阈值 0.5，过滤不够直接的结果</span></span></code><br/><code><span leaf="">            .<span class="code-snippet__title">sortByDescending</span>(i -&gt; i.<span class="code-snippet__property">relevanceScore</span>);</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">return</span> items;  <span class="code-snippet__comment">// 过滤后的结果重建为文本，替换原始工具输出，对 Agent 透明</span></span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">设计要点：</span></strong></p></div><p style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">整个 Pipeline 通过 AgentScope 的 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">MiddlewareBase</span></span><span leaf=""> 接口接入 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">onActing</span></span><span leaf=""> 钩子，与 Agent 核心推理逻辑完全解耦。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">fastPass() 确保高置信度场景（≤ 2 条高分结果）零额外延迟，不增加不需要的过滤开销。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">每阶段独立可开关（</span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">rerankerEnabled / llmGradeEnabled</span></span><span leaf="">），可按场景灵活组合——例如对时效性要求高的场景可关闭 LLM Grading 以降低延迟。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">过滤后结果重建为与原始工具输出格式完全一致的文本，Agent 无需感知 Middleware 的存在，做到&#34;关注点分离&#34;。</span></p></li></ul></p><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多模态：让图片成为提问的一部分</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在实际使用中，用户遇到问题时往往第一反应是截图——报错信息、界面异常、配置页面，一张图比千言万语更直观。支持图片输入，让&#34;截图即提问&#34;成为可能，大幅降低了用户的表达成本。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">自动模型切换</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">用户上传图片后，系统检测到上下文包含图片，自动判断模型策略：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">未指定模型 → 自动切换到视觉语言模型。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">指定了视觉模型 → 正常执行。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">指定了纯文本模型 → 拒绝并提示，防止调用失败。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个校验不仅检查本轮上传的图片，还检查</span><strong style="box-sizing: border-box;"><span leaf="">历史对话中是否有图片</span></strong><span leaf="">。因为大模型无状态，历史图片也需要每轮重新发送——即使本轮没传新图，只要历史中有，同样强制使用视觉模型。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">图片全生命周期管理</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">从上传到在回答中展示，图片经历了完整的生命周期：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">上传阶段：</span></strong><span leaf="">拖拽/粘贴/点击，最多 6 张，校验类型和大小。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">发送阶段：</span></strong><span leaf="">从对象存储内网读取图片字节，Base64 编码，与文本一起构造多模态消息。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">历史回放：</span></strong><span leaf="">多轮对话中，历史图片按消息聚合回放，按用户归属过滤，总大小受预算控制。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">回答嵌入：</span></strong><span leaf="">Agent 可以在回答中插入检索到的图片辅助说明，图片和文字引用统一编号。</span></p></li></ul></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">生产级可靠性：多实例 SSE 断点续传</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">SSE 断点续传的需求，不止来自&#34;服务器宕机&#34;这种极端情况。实际上，高频触发断点续传的是用户的正常操作：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">页面切到后台太久，浏览器断开了 SSE 连接。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">刷新页面（F5），前端重新挂载，需要重建 SSE 流。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">关闭标签页后重新打开，用户期望回到刚才的对话。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">移动端切换网络（Wi-Fi → 5G），IP 变了，连接中断。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们的方案是</span><strong style="box-sizing: border-box;"><span leaf="">多实例 SSE 断点续传</span></strong><span leaf="">：无论因为什么断开——服务器宕机、页面刷新、网络切换——浏览器自动重连，从断开的地方继续接收，完全看不到中断痕迹。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三种路径</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">系统同时支持三种恢复路径，按优先级自动选择：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">路径一：</span></strong><span leaf="">同实例恢复（最常见——页面刷新、切后台、网络闪断）用户断开后重连，请求打到同一个实例。本地内存中仍有 Agent 的运行状态，直接发送一个完整快照恢复历史，然后续传后续内容。零延迟、零 Redis 开销。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">路径二：</span></strong><span leaf="">跨实例转发（负载均衡调度、网络切换导致 IP 变化）用户重连时被负载均衡分到了另一个实例。新实例通过 Redis 路由表查到原实例的地址，内部转发请求。原实例像对待本地客户端一样直接推送 SSE 流，新实例透传。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">路径三：</span></strong><span leaf="">快照重建兜底（原实例宕机或不可达）如果原实例确实不可达，系统从 Redis 中重建完整会话，已产生的所有内容可以完整恢复，用户不会丢失任何信息。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">以下为三种恢复路径的对比图：</span></strong></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4361111111111111" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062750" src="https://wechat2rss.xlab.app/img-proxy/?k=d9bfafe9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsB7PL4FxtUc7sLTwxib0Kk0yYI3xYSfYjPWibQcn33jNfibjD7S8kkG0n4PhT3ngTsiaicT7Gfx8tMcMXcqUG7OEibjhJUhh5Qy30vM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">关键设计决策</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么用快照一帧恢复而不是逐条重放？</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">早期的方案是&#34;把所有历史事件按顺序重新发送一遍&#34;。在一个典型的多轮 Agent 对话中可能意味着几百个事件——如果逐条重放，前端 React 组件接收到密集的批量更新，浏览器渲染引擎会把这些更新合并成&#34;一段一段&#34;的跳变。快照方案把所有这些事件折叠成一个完整的&#34;当前状态&#34;——就像游戏存档，一帧恢复。 </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么用路由表 + 内部转发，而不是 Redis Pub/Sub？</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一个更&#34;直觉&#34;的多实例方案是：每个实例的事件写入 Redis Pub/Sub，其他实例订阅。但 Pub/Sub 有一个致命问题——订阅生效有延迟。新订阅者连上 Pub/Sub 时，可能已经错过了前面几条消息。我们的方案核心思路是：Redis 只存路由信息，不参与事件推送。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf=""> 心跳保活：</span></strong><span leaf="">工具调用期间可能长时间无新事件，系统通过定期发送 SSE 注释行（心跳，每 10 秒）保持连接活跃，对业务逻辑完全透明。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf=""> 分布式锁：</span></strong><span leaf="">用户快速双击发送按钮，可能导致同一会话产生两个并发请求。系统通过 Redis 的原子 SETNX 操作实现分布式锁，锁带 TTL 自动过期，防止死锁。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">模型容灾</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">大模型服务偶尔波动。当主模型出现可重试错误时（5xx 服务端错误、限流、超时、网络异常），自动切换到备用版本继续服务，用户无感知。4xx 客户端错误不触发切换，直接返回错误让用户修正。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">创新点总结与展望</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">回到最初的问题。我们的答案不在某一个算法或某一项技术上，而在系统设计的整体思路。以下是与&#34;标准 RAG 套壳&#34;的六个关键差异：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.32407407407407407" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062752" src="https://wechat2rss.xlab.app/img-proxy/?k=6c52672d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsNOdCgkO42YmsdxlUwnHCTA6PsGX7utHxYw71QiaGKE5icicozwibn8kdTYAqshUUyqP9Z0Pe6e0GnMPOOAGNr5IcVHIsoQqf2yec%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心创新点</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">复合检索不是&#34;多搜几个地方&#34;</span></strong><span leaf="">——大多数多源 RAG 的做法是&#34;各搜各的然后拼起来&#34;。我们的做法是 Agent 根据问题自主选择最合适的来源组合，搜索和精读交替推进，交叉验证、分层整合。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">质量 Pipeline 不只是 Reranker</span></strong><span leaf="">——很多系统在向量检索后只加一个 Reranker。我们做了三级：FastPass 快速通道、Reranker 粗筛、LLM Grading 精评，每一级解决不同层面的问题。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">SSE 断点续传不靠 Pub/Sub</span></strong><span leaf="">——我们用了路由表 + 内部转发的方案，Redis 只存路由信息不参与推送，跨实例重连时直接 HTTP 转发到原实例。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">展望：从知识问答到个人知识助手</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当前产品已经实现了复合检索 Agent 的核心能力：四源融合检索、三阶段质量过滤、多模态支持、以及生产级的 SSE 断点续传。基于这些能力，未来的演进可以分为两个层次。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">短期优化：精细化检索与总结策略 </span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当前系统对飞书文档、会议、消息等数据源采用统一的总结逻辑，但实际上不同数据源的信息特征差异很大。例如：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">飞书文档：</span></strong><span leaf="">通常是结构化的流程说明或技术规范，需要提取关键步骤和配置参数</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">飞书消息：</span></strong><span leaf="">包含大量日常讨论噪声，需要识别关键决策点和时间线</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">飞书妙记：</span></strong><span leaf="">会议记录包含结论、待办、责任人等多维度信息，需要根据会议类型（技术评审、项目周会、需求讨论）采用不同的总结侧重点</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">未来可以针对这些数据源特性，设计差异化的总结策略，进一步提升回答的精准度和实用性。同时，评测体系也会持续完善，覆盖更多业务场景和边界情况。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">长期愿景：个人知识助手</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当前产品打通了&#34;公共知识 + 个人数据&#34;的双通道，但每次对话仍然是独立的。未来的方向是让 Agent 具备长期记忆能力——记住用户的身份、职责、偏好，主动关联相关信息和过往对话，实现&#34;公共知识 + 个人数据 + 长期记忆&#34;三重叠加的检索优势。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AgentScope 框架已内置长期记忆、对话压缩、技能系统、子代理编排等能力，当前处于&#34;已禁用但可激活&#34;状态，后续功能可直接迭代优化，不需要推倒重来。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">七</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">附录：问答评测结果与框架选型对比</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于不同业务维度的三组评测集（覆盖知识库、飞书文档、飞书消息、飞书妙记四类数据源），全量人工标注，评测结果如下：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3453703703703704" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062753" src="https://wechat2rss.xlab.app/img-proxy/?k=4ab673e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs0d3ozKsAiaOQYaaJrQylxN8kSgnWUN7yol5NNJhHtViatBaJsBfibicc871Vl9zAaOdZXevfzxOhczQBVRjMq650Giaxkp2YjeI9w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">另外在技术选型阶段，我们将 AgentScope 2.0 与 Java 生态的主流 AI 框架进行了详细对比：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7703703703703704" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062754" src="https://wechat2rss.xlab.app/img-proxy/?k=114283c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsyZ6eXicib4pCGFEJ2I0rIWicrjIicvgdkvS6XDWT01pjVLicegNqlsRlxT2K7ZdHO7CIsU7ib4RopKtW6C1oV05DCsdqEH6uEH03Ck%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546363&amp;idx=1&amp;sn=e497e41b6f529e7efb771672bc6864a0&amp;scene=21#wechat_redirect" textvalue="实战从零开始构建一个Coding Agent：Violin ｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">实战从零开始构建一个Coding Agent：Violin ｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546316&amp;idx=1&amp;sn=cbe17a317044b279de6ad192302d9390&amp;scene=21#wechat_redirect" textvalue="AI Native 交易核心系统的研发范式｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI Native 交易核心系统的研发范式｜得物技术</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546265&amp;idx=1&amp;sn=46de88c503a39ae3a77bd1ab36b85aff&amp;scene=21#wechat_redirect" textvalue="推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理" data-itemshowtype="0" linktype="text" data-linktype="2">推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546214&amp;idx=1&amp;sn=1ea66a2621a684b57f05339341dde10f&amp;scene=21#wechat_redirect" textvalue="RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546029&amp;idx=1&amp;sn=bfd40c235e8c5bdbab9acac15aea8bcf&amp;scene=21#wechat_redirect" textvalue="从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 /</span><span leaf="">莲舟</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062751" src="https://wechat2rss.xlab.app/img-proxy/?k=706498f3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsqb3ht78wpibkpWiaL4fnZ3TCknnC1KkRDyhIYqfy3fR167xcV6BwpE76kFo92egwfHubKenTgPh0ibdMuHyFl39ibJVhwlcgdDvg%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=6bdf0134&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546407%26idx%3D1%26sn%3Dbf3d73aab43b7634074d2331a14764f5">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 12 Aug 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>实战从零开始构建一个Coding Agent：Violin ｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546363&amp;idx=1&amp;sn=e497e41b6f529e7efb771672bc6864a0</link>
      <description>理解了 coding agent 的构建原理，也就掌握了理解其他 agent 的一把钥匙。笔者对每天都在使用的 agent 原理很感兴趣，于是决定自己写一个：violin。</description>
      <content:encoded><![CDATA[<p>原创 <span>酒米</span> <span>2026-08-05 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=597893da&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHthkQXH4msZnLWHSric9UvjbHyyPO2ttkVibsCLU8UeIOADhqzzYKBZiaMXC8hoAmXc7AYzwibDJG4qc16KP4PJYib7PAvPBkWYoQBg%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>理解了 coding agent 的构建原理，也就掌握了理解其他 agent 的一把钥匙。笔者对每天都在使用的 agent 原理很感兴趣，于是决定自己写一个：violin。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、背景</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、效果预览</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、分层实现介绍</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.Agent Loop（一切的核心）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.AI 模型适配层（Agent Loop 调用的是谁）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.Tool System（Agent Loop的手和脚）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.Product层（循环之外的事）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.Event System（插件实现的基础）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    6.网络层（客户端实现的基础）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    7.Python Client 实现</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、总结</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">背景</span></b></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">从 24 年冬天开始，各类 coding agent 层出不穷——从 Gemini CLI 的起步，到 Claude Code 的尝试，再到如今 Codex、OpenCode、PI、Qoder 等百花齐放。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6666666666666666" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062694" src="https://wechat2rss.xlab.app/img-proxy/?k=d4014468&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtu8A0jXbeU0vhiavdvI612Kq9dNExlibC9KtCr7jahnBIWecLMC4FAE8wdPL2WV7rn2ZEGXC7N95UUIpfrEkflhL4ichKmceeHFQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">短短一年多的时间，agent 从大模型的一个附属品，逐渐演变成模型能力的放大器，成为 AI 工程化的关键载体。市面上各类业务 agent——客服、数据分析、工作流编排等——追根溯源，基本都是 coding agent 的泛化变种。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">理解了 coding agent 的构建原理，也就掌握了理解其他 agent 的一把钥匙。笔者对每天都在使用的 agent 原理很感兴趣，于是决定自己写一个：violin。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.562962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062695" src="https://wechat2rss.xlab.app/img-proxy/?k=b9f9091e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvmhFXdiafsvdcOP4WJ9scNLK1YibpdDNCDf8Y9nTYC0TAg7vK11JhrKL3PrtTJSsHlzZWTaGE2icj1w1pHtqh3NSxxmMpYPCSszo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">二</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">效果预览</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7888888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062693" src="https://wechat2rss.xlab.app/img-proxy/?k=05336d45&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvSosQz3tUF7ndghx1qhNVrg9m5NfyuDFJqzDiaV8zTDOtoCfwIPib8ib7cB5g8DPmadGQdY9GYlztyGqIxoCHg0iaoBxWoSDIYG84%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">虽然有点丑，但是基本的功能（多模态、skill、插件）已经完备了。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">整体架构</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Violin 的架构设计深度借鉴了 Pi 的设计理念。Pi 作为一个 TypeScript 实现的 AI coding agent，其最突出的特点是简洁而可扩展的架构——</span><strong style="box-sizing: border-box;"><span leaf="">三层分离</span></strong><span leaf="">（模型适配层 / 内核层 / 产品层）、EventBus 事件驱动、工具注册表和插件系统，每个模块各司其职且松耦合。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6574074074074074" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062691" src="https://wechat2rss.xlab.app/img-proxy/?k=ebddc3cd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsvMkdOD8WXHsiboZUq6dD5M7VUicUicNxjgvgAhBC5JusiaLaKOTazn583Bicibujt83NwRurxNaicylIEnZaxBTYmbXRudfzd4OibOs0%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">更难得的是，Pi 的代码完全开源，这不仅让 Violin 有了一个扎实的参考蓝本，也让它本身成为一个极佳的 Agent 工程学习范本：代码结构清晰、注释详尽、每层职责明确。想要学习 Pi 架构的，强烈推荐这个项目：how-pi-agent-works。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">可以说，读懂了 Pi 的架构，就理解了现代 AI coding agent 的核心设计模式。Violin 在保持这一架构精髓的同时，用 Zig 替换了 TypeScript，在内存安全和性能上做了进一步的探索。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Violin agent 的架构如下：</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6712962962962963" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062692" src="https://wechat2rss.xlab.app/img-proxy/?k=04c9c7fb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsKmjoF9ziaLXayzG5R1HVvib5Xeich6JACd5qMUGibiaX01aFyesNSiaEpicHwoDgd7gIW4SxXxNww9t2h7LmxcNqLdtZicj54GkFibicbw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Why Zig?</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Violin 的架构设计深度借鉴了 Pi 的三层分离和 EventBus 方案，但在实现语言上做了完全不同的选择。既然每一层通过接口（或网络协议）解耦，那么不同层用不同语言实现是完全可行的——不需要也不可能「全部用一种语言写完」。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Violin 的分工是：Agent Loop、模型适配、会话管理等底层引擎用 Zig 实现，追求极致的性能和内存可控性；而 Client 端用 Python 实现，利用 Python 的生态快速搭建终端交互 UI。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">两者通过 TCP + JSON line 协议通信，Server 不关心 Client 用什么语言写的。笔者的技术栈恰好是 Zig + Python，不会 JS、不熟悉 Rust，但这个组合正好覆盖了「引擎」和「界面」两端，分工清楚，各取所长。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">每层为什么存在</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.562962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062696" src="https://wechat2rss.xlab.app/img-proxy/?k=e60bca8e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsBXa73ySKxmcbAhrWPzVO14iaqvaQxUBxAOc6SoSZiahJI6djqkvibNd5apDZFuTzTbyveDKr1VYkOdGcI16ibA1rZg5h2Oicl6mBM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">ai</span></strong></span><strong style="box-sizing: border-box;"><span leaf="">：把供应商拍平</span></strong></p></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">不同模型 API 对工具调用、推理内容、缓存、错误、OAuth、流式协议的表达都不同。Violin 把这些差异统一成 </span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">Message</span></span><span leaf="">、</span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">Tool</span></span><span leaf="">、</span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">AssistantMessageEvent</span></span><span leaf=""> 和 </span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">streamSimple()</span></span><span leaf="">。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这样上层 Agent Loop 不需要知道「这是 Anthropic 的 tool_use，还是 OpenAI Responses 的 function call」。它只关心统一后的 </span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">toolCall</span></span><span leaf=""> 内容块。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">agent-core</span></strong></span><strong style="box-sizing: border-box;"><span leaf="">：只管 Agent 运行时</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19907407407407407" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062697" src="https://wechat2rss.xlab.app/img-proxy/?k=d11551fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtLZJhn3MkldSMDoLHwsLbric9tsq4kucPNbpJ061CZRS1lmibJNc02H4lpl4IoEBKnqsNAtPTVnbmrJLUrJ76dUrEYTApPejqBk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">product</span></strong></span><strong style="box-sizing: border-box;"><span leaf="">：把 Agent 变成可用产品</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">写一个 Agent Loop 不难，难的是把它变成每天能用的开发工具。产品层负责这些「麻烦但关键」的事情：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2962962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062698" src="https://wechat2rss.xlab.app/img-proxy/?k=04e00bfd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsrM4S0klGLDv874wlhOqlDWl96CNR6eZLZNzrF8eBL6Z6vZMbOv47akicOCiaPofEDcOn2By52DeC9osylS9ZPxI3VnQmIlesxs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">server</span></strong></span><strong style="box-sizing: border-box;"><span leaf="">：把 Agent 能力包装为一个TCP Server</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为了让客户端实现与语言无关，我们需要将 agent 能力包装为一套通信协议 + 一个 TCPServer。TCPServer 流式通信 + 全双工，天生适合这个场景。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">分层实现介绍</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Agent Loop（一切的核心）</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Agent Loop 是什么？一个 while 循环，在</span><strong style="box-sizing: border-box;"><span leaf="">「问模型」</span></strong><span leaf="">和</span><strong style="box-sizing: border-box;"><span leaf="">「执行工具」</span></strong><span leaf="">之间来回切换，直到模型给出最终答案。它不关心模型是 OpenAI 还是 Anthropic，不关心工具是读文件还是跑命令，只关心两件事：模型要不要调工具？如果要，调完继续问；如果不要，结束。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.562962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062700" src="https://wechat2rss.xlab.app/img-proxy/?k=b6de47ab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvZZhaQgoPNdxcmcoLftK0jQyUSjryiaTjTAFLXPrsxd8UB3MkAhcWMQUuxYaOWeQsxIicqLoYHURY2lnGx7wyoAGtBibISI0Hnck%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这是 Agent Loop 的核心代码（简化后）：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__keyword">while</span> (turn &lt; max_turns) : (turn += <span class="code-snippet__number">1</span>) {</span></code><br/><code><span leaf="">   <span class="code-snippet__comment">// 1. 调模型</span></span></code><br/><code><span leaf="">   <span class="code-snippet__keyword">const</span> assistant = <span class="code-snippet__keyword">try</span> model.complete(.{</span></code><br/><code><span leaf="">       .messages = messages.items,</span></code><br/><code><span leaf="">       .tools = tool_registry.definitions(),</span></code><br/><code><span leaf="">   });</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">   <span class="code-snippet__comment">// 2. 检查是否有工具调用</span></span></code><br/><code><span leaf="">   <span class="code-snippet__keyword">const</span> has_tool_calls = assistant.toolCalls().len &gt; <span class="code-snippet__number">0</span>;</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">   <span class="code-snippet__comment">// 3. 没有 → 结束；有 → 逐个执行工具</span></span></code><br/><code><span leaf="">   <span class="code-snippet__keyword">if</span> (!has_tool_calls) <span class="code-snippet__keyword">break</span>;</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">   <span class="code-snippet__keyword">for</span> (assistant.content) |block| {</span></code><br/><code><span leaf="">       <span class="code-snippet__keyword">if</span> (block == .tool_call) {</span></code><br/><code><span leaf="">           <span class="code-snippet__keyword">const</span> result = tool_registry.execute(tc.name, tc.<span class="code-snippet__keyword">args</span>);</span></code><br/><code><span leaf="">           messages.append(result);  <span class="code-snippet__comment">// 回写给模型</span></span></code><br/><code><span leaf="">       }</span></code><br/><code><span leaf="">   }</span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">这里需要注意：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么要有 max_turns</span></strong><span leaf=""> — 模型可能陷入无限工具循环，上限是安全阀。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么工具结果要 append 回 messages</span></strong><span leaf=""> — 模型需要看到结果才能决定下一步。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么 tools 定义要传进 complete() </span></strong><span leaf="">— 模型要提前知道有哪些工具可用。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当然不管是 LLM 调用还是工具调用，都有失败的可能，所以我们需要在 AgentLoop 这一层加入重试机制。首先我们需要区分错误种类，是不是一个可以重试的错误，Violin 中做了简单分类：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24444444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062699" src="https://wechat2rss.xlab.app/img-proxy/?k=f5e8712b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvODE8TMmQDKNibvW3dvMvm2iay12cYwWJicH4L5WdHptjhuZ1mfZLicAVRhH9HguapIticRpHAwUYxaicz0UcqOyUTvhqBtrgJn1kGA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Agent Loop 只关心</span><strong style="box-sizing: border-box;"><span leaf="">「循环」</span></strong><span leaf="">，不关心消息从哪里来、执行结果存到哪里。这些「循环之外」的事——会话历史的加载和保存、上下文压缩后的重试、Arena 内存管理——由上一层产品层（product/agent.zig）封装。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">agent.zig 调用 loop.run() 时传入历史消息，loop 返回后它负责把新消息持久化到 Session，并在 ContextOverflow 时截断上下文重试。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI 模型适配层</span></strong></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">（Agent Loop 调用的是谁）</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">模型适配层的职责只有一句话：把不同 LLM Provider 的 API 差异封装在一个 Model.complete() 接口后面。Agent Loop 只认这个接口，不关心背后是 OpenAI 还是 Anthropic。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">简化后的核心逻辑（伪代码）：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__keyword">interface</span> <span class="code-snippet__title">ModelAdapter</span> {</span></code><br/><code><span leaf="">    complete(input: CompleteInput) -&gt; <span class="code-snippet__function">AssistantMessage</span></span></code><br/><code><span leaf="">    <span class="code-snippet__title">name</span>() -&gt; <span class="code-snippet__built_in">string</span></span></code><br/><code><span leaf="">}</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__comment">// 每个 Provider 实现这个接口：</span></span></code><br/><code><span leaf=""><span class="code-snippet__comment">// OpenAIAdapter      — 调用 /chat/completions</span></span></code><br/><code><span leaf=""><span class="code-snippet__comment">// AnthropicAdapter   — 调用 /v1/messages</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">struct</span> CompleteInput {</span></code><br/><code><span leaf="">    system_prompt: <span class="code-snippet__built_in">string</span>,</span></code><br/><code><span leaf="">    messages: Message[],</span></code><br/><code><span leaf="">    tools: ToolDefinition[],</span></code><br/><code><span leaf="">    max_tokens: <span class="code-snippet__built_in">int</span>,</span></code><br/><code><span leaf="">    temperature: <span class="code-snippet__built_in">float</span>,</span></code><br/><code><span leaf="">    stream_callback: optional callback,  <span class="code-snippet__comment">// 流式输出</span></span></code><br/><code><span leaf="">}</span></code><br/><code></code><br/></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">实际 Zig 实现使用函数指针表（Zig 没有 trait 和虚函数，用函数指针实现多态），每个适配器提供三个函数指针（complete、name、deinit），通过统一接口调用。适配器内部状态（如 base_url/api_key）通过类型擦除的指针在回调中还原。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Violin 适配了目前最流行的 2 种 LLM 协议：</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.14907407407407408" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062701" src="https://wechat2rss.xlab.app/img-proxy/?k=c73330ee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHs9LYbNUNdHricK0XcugqIVb1BXQyo9UHiaWC6OiaQstG24icS6aQqXLH8csHc0piaDKjgBUhy8lxrEZ6tMrxGTjymCMFibfNuHoVpuA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">两个适配器代码量差不多（531 vs 558 行），因为它们各自要处理 JSON 序列化、HTTP 请求、SSE 流式解析、错误映射。</span><strong style="box-sizing: border-box;"><span leaf="">差异主要在：</span></strong><span leaf="">请求体格式不同（OpenAI 用 messages[]，Anthropic 用 content[]）。工具调用的结构不同（OpenAI 是 tool_calls[]，Anthropic 是 content[] 中的 tool_use block）。流式协议不同（OpenAI 用 data: 行，Anthropic 用 event: 行）。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">LLM 生成一个回答可能需要几秒甚至十几秒。如果等全部生成完再返回，用户只能干等。为了客户端体验的流畅，目前主流 Agent 都采用了流式输出，这个问题的解决方案是流式（SSE）。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__comment">// 模型适配器在收到 SSE 的每个 chunk 时，调用 stream_callback</span></span></code><br/><code><span leaf=""><span class="code-snippet__comment">// Agent Loop 收到回调后，立即通过 EventBus 发射 message_update 事件</span></span></code><br/><code><span leaf=""><span class="code-snippet__comment">// Client 收到事件后，实时追加到终端显示</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">pub <span class="code-snippet__keyword">const</span> StreamCallback = *<span class="code-snippet__function"><span class="code-snippet__keyword">const</span></span><span class="code-snippet__function"><span class="code-snippet__title">fn</span></span><span class="code-snippet__function"> (</span><span class="code-snippet__function"><span class="code-snippet__params">ctx, chunk: StreamChunk</span></span><span class="code-snippet__function">) </span><span class="code-snippet__function"><span class="code-snippet__built_in">bool</span></span>;</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Violin 没有内置任何模型，全部从 </span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">~/.violin/agent/models.json</span></span><span leaf=""> 中加载模型配置，再由客户端决定使用哪个模型：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="bash"><code><span leaf="">{</span></code><br/><code><span leaf=""><span class="code-snippet__string">&#34;providers&#34;</span>: {</span></code><br/><code><span leaf="">   <span class="code-snippet__string">&#34;openai&#34;</span>: {</span></code><br/><code><span leaf="">     <span class="code-snippet__string">&#34;base_url&#34;</span>: <span class="code-snippet__string">&#34;<a href="https://api.openai.com/v1" target="_blank">https://api.openai.com/v1</a>&#34;</span>,</span></code><br/><code><span leaf="">     <span class="code-snippet__string">&#34;api&#34;</span>: <span class="code-snippet__string">&#34;openai-completions&#34;</span>,</span></code><br/><code><span leaf="">     <span class="code-snippet__string">&#34;api_key&#34;</span>: <span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$OPENAI_API_KEY</span></span><span class="code-snippet__string">&#34;</span>,</span></code><br/><code><span leaf="">     <span class="code-snippet__string">&#34;models&#34;</span>: [</span></code><br/><code><span leaf="">       { <span class="code-snippet__string">&#34;id&#34;</span>: <span class="code-snippet__string">&#34;gpt-4o&#34;</span>, <span class="code-snippet__string">&#34;name&#34;</span>: <span class="code-snippet__string">&#34;GPT-4o&#34;</span>, <span class="code-snippet__string">&#34;contextWindow&#34;</span>: 128000 }</span></code><br/><code><span leaf="">     ]</span></code><br/><code><span leaf="">   }</span></code><br/><code><span leaf=""> }</span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Tool System</span></strong></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">（Agent Loop的手和脚）</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">模型适配层让 Agent Loop 可以调任何模型，工具系统让 Agent Loop 可以做任何事。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">工具的定义：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf="">pub <span class="code-snippet__keyword">const</span> Tool = <span class="code-snippet__keyword">struct</span> {</span></code><br/><code><span leaf="">  name: []<span class="code-snippet__keyword">const</span> u8,</span></code><br/><code><span leaf="">  description: []<span class="code-snippet__keyword">const</span> u8,</span></code><br/><code><span leaf="">  parameters: []<span class="code-snippet__keyword">const</span> u8,  <span class="code-snippet__comment">// JSON Schema</span></span></code><br/><code><span leaf="">  execute: ToolExecuteFn,</span></code><br/><code><span leaf="">};</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Violin 内置了 6 个基本工具，和 Pi 的设计保持一致：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3435185185185185" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062703" src="https://wechat2rss.xlab.app/img-proxy/?k=b525df07&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsQgdnFWqZXadPzYjagpiaJrcCibLpqGzETTg27yIAjroGgs9Snz20icHGyHQu6ia0IzMqwqKZ1TNYrgpj124IZmHaeiaDt9ibg3Iicog%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为了方便管理这些 tools，Violin 中实现了一个工具注册表（伪代码）：实际 Zig 实现使用 HashMap 存储工具，按名称快速查找。definitions() 将工具列表编码为模型可识别的 JSON Schema 格式。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__comment">// 简化后的工具注册表逻辑：</span></span></code><br/><code><span leaf="">classToolRegistry:</span></code><br/><code><span leaf="">    tools: <span class="code-snippet__function">Map&lt;</span><span class="code-snippet__function"><span class="code-snippet__built_in">string</span></span><span class="code-snippet__function">, Tool&gt;</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__title">funcregister</span>(<span class="code-snippet__params">name, description, execute_fn</span>):</span></code><br/><code><span leaf="">        tools[name] = Tool(name, description, execute_fn)</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__function">func </span><span class="code-snippet__function"><span class="code-snippet__title">get</span></span><span class="code-snippet__function">(</span><span class="code-snippet__function"><span class="code-snippet__params">name</span></span><span class="code-snippet__function">) -&gt; Tool:</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> tools[name]</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    func <span class="code-snippet__title">definitions</span>() -&gt; ToolDefinition[]:</span></code><br/><code><span leaf="">        <span class="code-snippet__comment">// 返回所有工具定义，发送给模型</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> [t.<span class="code-snippet__title">definition</span>() <span class="code-snippet__keyword">for</span> t <span class="code-snippet__keyword">in</span> tools.<span class="code-snippet__title">values</span>()]</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    func <span class="code-snippet__title">execute</span>(<span class="code-snippet__params">name, </span><span class="code-snippet__params"><span class="code-snippet__keyword">args</span></span>) -&gt; ToolResult:</span></code><br/><code><span leaf="">        tool = tools[name]</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> tool.execute(<span class="code-snippet__keyword">args</span>)</span></code><br/><code></code><br/></pre></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Product层（循环之外的事）</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24814814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062704" src="https://wechat2rss.xlab.app/img-proxy/?k=54f96473&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvdQyY9ao8o0x2RicPBwCsriaZG0gBqoJGOoEJTIicJDTLY5UeibZX6TV9CQciayxgzMHfbYF1AkI0jLkTflpyY0UCKTYP3ZfuGwIT4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">agent.zig — 胶水层，但最关键</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">product/agent.zig 只有 123 行，却是把整个项目「粘起来」的那层。它做的事情很简单：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">从 Session 加载历史消息。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">传给 loop.run () 执行。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">loop 返回后，把所有新消息保存到 Session。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如果 loop 抛了 ContextOverflow，调用 compaction 压缩后重试。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">展示核心逻辑（简化）：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="swift"><code><span leaf=""><span class="code-snippet__comment">// 简化后的 agent.run() 逻辑：</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">func</span> <span class="code-snippet__title">run</span>(config, user_input) -&gt; <span class="code-snippet__type">AgentResult</span>:</span></code><br/><code><span leaf="">    history <span class="code-snippet__operator">=</span> load_history(config.session)</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">while</span> <span class="code-snippet__type">True</span>:</span></code><br/><code><span leaf="">        loop_result <span class="code-snippet__operator">=</span> loop.run(</span></code><br/><code><span leaf="">            model<span class="code-snippet__operator">=</span>config.model,</span></code><br/><code><span leaf="">            initial_messages<span class="code-snippet__operator">=</span>history,</span></code><br/><code><span leaf="">            input<span class="code-snippet__operator">=</span>user_input</span></code><br/><code><span leaf="">        )</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">if</span> loop_result <span class="code-snippet__operator">==</span> <span class="code-snippet__type">ContextOverflow</span>:</span></code><br/><code><span leaf="">            compact_session()     <span class="code-snippet__comment">// 压缩历史，保留关键信息</span></span></code><br/><code><span leaf="">            <span class="code-snippet__keyword">continue</span>              <span class="code-snippet__comment">// 压缩后重试</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">        <span class="code-snippet__comment">// 保存新消息到会话</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">for</span> msg <span class="code-snippet__keyword">in</span> loop_result.new_messages:</span></code><br/><code><span leaf="">            session.appendMessage(msg)</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__type">AgentResult</span>(text<span class="code-snippet__operator">=</span>loop_result.final_text)</span></code><br/><code></code><br/></pre></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">session.zig — 对话的「记忆」</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">没有 Session，Agent 每次对话都是「失忆」的。</span><strong style="box-sizing: border-box;"><span leaf="">存储格式：</span></strong><span leaf="">JSONL，每行一个独立 JSON 对象。第一行是会话头（id, created_at, cwd），后续每行是一条消息。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="json"><code><span leaf=""><span class="code-snippet__punctuation">{</span><span class="code-snippet__attr">&#34;id&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;sess_001&#34;</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;created_at&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__number">1717234567</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;cwd&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;/project&#34;</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;model&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;gpt-4o&#34;</span><span class="code-snippet__punctuation">}</span></span></code><br/><code><span leaf=""><span class="code-snippet__punctuation">{</span><span class="code-snippet__attr">&#34;id&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__number">1</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;parent_id&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__literal"><span class="code-snippet__keyword">null</span></span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;timestamp&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__number">1</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;role&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;user&#34;</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;content&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;帮我读 README.md&#34;</span><span class="code-snippet__punctuation">}</span></span></code><br/><code><span leaf=""><span class="code-snippet__punctuation">{</span><span class="code-snippet__attr">&#34;id&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__number">2</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;parent_id&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__number">1</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;timestamp&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__number">2</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;role&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;assistant&#34;</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__attr">&#34;content&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;我来帮你读...&#34;</span><span class="code-snippet__punctuation">}</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">violin 为了管理 Session，添加一个 SessionStore 的数据结构</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__comment">// 简化后的 SessionStore 数据结构：</span></span></code><br/><code><span leaf="">classSessionStore:</span></code><br/><code><span leaf="">    file_path: <span class="code-snippet__built_in">string</span>          <span class="code-snippet__comment">// JSONL 文件路径</span></span></code><br/><code><span leaf="">    entries: Map&lt;id, Entry&gt;    <span class="code-snippet__comment">// 消息索引，支持随机访问</span></span></code><br/><code><span leaf="">    leaf_id: <span class="code-snippet__built_in">int</span> | <span class="code-snippet__literal">null</span>        <span class="code-snippet__comment">// 当前叶子节点（最新消息）</span></span></code><br/><code><span leaf="">    next_id: <span class="code-snippet__built_in">int</span>               <span class="code-snippet__comment">// 自增 ID，用于生成新消息 ID</span></span></code><br/><code><span leaf="">    header: SessionHeader      <span class="code-snippet__comment">// 会话头信息</span></span></code><br/><code></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">实际 Zig 实现使用 ArenaAllocator 统一管理内存（所有分配来自 arena，deinit 时一次性释放），省去逐条 free 的麻烦。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心方法如下：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">消息持久化 writeEntry 的核心逻辑（伪代码）：</span></p></li></ul></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="swift"><code><span leaf=""><span class="code-snippet__comment">// 简化后的消息持久化逻辑：</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">func</span> <span class="code-snippet__title">writeEntry</span>(entry):</span></code><br/><code><span leaf="">    json_line <span class="code-snippet__operator">=</span> serialize_to_json(entry) <span class="code-snippet__operator">+</span> <span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__subst">\n</span></span><span class="code-snippet__string">&#34;</span></span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 写入临时文件，然后追加到会话文件</span></span></code><br/><code><span leaf="">    <span class="code-snippet__comment">// 用临时文件方式，避免处理特殊字符的麻烦</span></span></code><br/><code><span leaf="">    write_temp_file(json_line)</span></code><br/><code><span leaf="">    append_to_session_file(temp_file)</span></code><br/></pre></p></div><p style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">追加消息（伪代码）：</span></p></li></ul></p><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="php"><code><span leaf=""><span class="code-snippet__comment">// 简化后的追加消息逻辑：</span></span></code><br/><code><span leaf=""><span class="code-snippet__title">func appendMessage</span>(message) -&gt; entry_id:</span></code><br/><code><span leaf="">    id = next_id++</span></code><br/><code><span leaf="">    entry = <span class="code-snippet__title">Entry</span>(</span></code><br/><code><span leaf="">      <span class="code-snippet__attr">  id</span>: id,</span></code><br/><code><span leaf="">        <span class="code-snippet__attr">parent_id</span>: current_leaf_id,  // 挂在当前消息后面</span></code><br/><code><span leaf="">        <span class="code-snippet__attr">timestamp</span>: <span class="code-snippet__title">now</span>(),</span></code><br/><code><span leaf="">        <span class="code-snippet__attr">message</span>: message</span></code><br/><code><span leaf="">    )</span></code><br/><code><span leaf="">    entries[id] = entry</span></code><br/><code><span leaf="">    leaf_id = id                     <span class="code-snippet__comment">// 新消息成为最新消息</span></span></code><br/><code><span leaf="">    <span class="code-snippet__title">writeEntry</span>(entry)                <span class="code-snippet__comment">// 持久化到 JSONL 文件</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">return</span> id</span></code><br/></pre></p></div><div style="margin: 0px;box-sizing: border-box;"><p style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">session 从文件恢复（伪代码）：</span></p></li></ul></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__comment">// 简化后的会话恢复逻辑：</span></span></code><br/><code><span leaf=""><span class="code-snippet__function">func </span><span class="code-snippet__function"><span class="code-snippet__title">load</span></span><span class="code-snippet__function">():</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">if</span> <span class="code-snippet__keyword">not</span> <span class="code-snippet__title">file_exists</span>(<span class="code-snippet__params">file_path</span>):</span></code><br/><code><span leaf="">        <span class="code-snippet__title">createSession</span>()       <span class="code-snippet__comment">// 文件不存在，新建会话</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">for</span> each line <span class="code-snippet__keyword">in</span> <span class="code-snippet__title">read_lines</span>(<span class="code-snippet__params">file_path</span>):</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">if</span> is_first_line:</span></code><br/><code><span leaf="">            header = parse_header(line)  <span class="code-snippet__comment">// 首行 = 会话头</span></span></code><br/><code><span leaf="">            is_first_line = <span class="code-snippet__literal">false</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">else</span>:</span></code><br/><code><span leaf="">            entry = parse_entry(line)    <span class="code-snippet__comment">// 后续行 = 消息</span></span></code><br/><code><span leaf="">            <span class="code-snippet__keyword">if</span> entry <span class="code-snippet__keyword">is</span> valid:</span></code><br/><code><span leaf="">                entries[entry.id] = entry</span></code><br/><code><span leaf="">            <span class="code-snippet__keyword">else</span>:</span></code><br/><code><span leaf="">                log_warn(<span class="code-snippet__string">&#34;跳过损坏的消息&#34;</span>)  <span class="code-snippet__comment">// 损坏行跳过，不崩</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">与 Pi 的对比：</span></strong><span leaf="">Pi 的 Session 也是 JSONL + 树结构，支持了树形对话结构，支持分支 fork 和回滚，Violin 继承了这些能力。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">compaction.zig — 对话的「脑容量管理」</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当 token 超过阈值时，把旧消息压缩成一条摘要，保留最近 N 条消息。Agent 层的重试循环会检查压缩结果并重新执行 loop。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">LLM 有上下文窗口限制，一个 Coding Agent 的对话可能持续几十轮，累积数千 token。如果不做处理，早期消息会被窗口截断，模型「忘记」了之前的上下文。当 token 超过阈值时，把旧消息压缩成一条摘要，保留最近的消息不变。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="makefile"><code><span leaf=""><span class="code-snippet__section">压缩前:</span></span></code><br/><code><span leaf="">[消息1] [消息2] [消息3] ... [消息N-10] [消息N-9] ... [消息N]</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__section">压缩后:</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">[摘要: 之前讨论的要点] [消息N-9] [消息N-8] ... [消息N]</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心设计：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Token 预算</span></p></li></ul></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__comment">// 不引入 tokenizer，用 字符数/4 近似。够用就行——压缩决策不需要精确到个位数。</span></span></code><br/><code><span leaf=""><span class="code-snippet__function">pub fn </span><span class="code-snippet__function"><span class="code-snippet__title">estimateTokens</span></span><span class="code-snippet__function">(</span><span class="code-snippet__function"><span class="code-snippet__params">text: []</span></span><span class="code-snippet__function"><span class="code-snippet__params"><span class="code-snippet__keyword">const</span></span></span><span class="code-snippet__function"><span class="code-snippet__params"> u8</span></span><span class="code-snippet__function">) usize</span> {</span></code><br/><code><span leaf="">   <span class="code-snippet__keyword">return</span> text.len / <span class="code-snippet__number">4</span>;</span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><p style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">触发条件</span></p></li></ul></p><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="go"><code><span leaf=""><span class="code-snippet__function"><span class="code-snippet__keyword">func</span></span><span class="code-snippet__function"><span class="code-snippet__title">needsCompaction</span></span><span class="code-snippet__function"><span class="code-snippet__params">(messages, config)</span></span> -&gt; <span class="code-snippet__type">bool</span>:</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">return</span> estimateMessagesTokens(messages) &gt; config.max_tokens</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">默认阈值 100K token，保留最近 10 条消息，摘要目标长度 500 token。</span></p></div><p style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">摘要生成</span></p></li></ul></p><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="markdown"><code><span leaf="">把旧消息拼接成文本，调用模型生成摘要：</span></code><br/><code><span leaf="">[<span class="code-snippet__symbol">user</span>]: <span class="code-snippet__link">帮我写一个 HTTP 服务器</span></span></code><br/><code><span leaf="">[<span class="code-snippet__symbol">assistant</span>]: <span class="code-snippet__link">可以用 Zig 的 std.http...</span></span></code><br/><code><span leaf="">[<span class="code-snippet__symbol">tool_call</span>]: <span class="code-snippet__link">write_file(&#34;server.zig&#34;, ...)</span></span></code><br/><code><span leaf="">[<span class="code-snippet__symbol">tool_result</span>]: <span class="code-snippet__link">文件已写入</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">---&gt;</span></code><br/><code><span leaf="">用户要求编写 HTTP 服务器，助手使用 Zig 标准库创建了 server.zig，实现了基本的请求处理。</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">violin 的压缩系统分成了 2 层：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.15092592592592594" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062702" src="https://wechat2rss.xlab.app/img-proxy/?k=6b0fd4a3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuPuzExCNTS0iaw2vHiaiaVicaibPSnK4qdgaQk1IUG7J1gAe295od0c4mzic0xYcQLNcKTcnwyOic9UDG67BL4yGnn6lU9ksup8YPibFU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">resources.zig — 资源加载「为Agent注入灵魂」</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Resources 从文件系统加载项目规则（AGENTS.md）和技能（SKILL.md），解析 frontmatter，格式化为 system prompt 注入给 LLM，让模型知道它有哪些工具和能力可用。ResourceLoader 负责从文件系统加载三类资源，格式化为 system prompt 供 LLM 使用：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">项目规则 </span></strong><span leaf="">— AGENTS.md/ CLAUDE.md。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">技能 </span></strong><span leaf="">— .agent/skills/ 下的 SKILL.md 文件。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">数据结构（伪代码）如下：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cs"><code><span leaf=""><span class="code-snippet__comment">// 简化后的数据结构：</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">struct</span> Skill {</span></code><br/><code><span leaf="">    name: <span class="code-snippet__built_in">string</span>           <span class="code-snippet__comment">// 技能名称</span></span></code><br/><code><span leaf="">    description: <span class="code-snippet__built_in">string</span>    <span class="code-snippet__comment">// 技能描述</span></span></code><br/><code><span leaf="">    filePath: <span class="code-snippet__built_in">string</span>       <span class="code-snippet__comment">// SKILL.md 文件路径</span></span></code><br/><code><span leaf="">    source: <span class="code-snippet__built_in">enum</span>           <span class="code-snippet__comment">// &#34;global&#34; 或 &#34;project&#34;</span></span></code><br/><code><span leaf="">    content: <span class="code-snippet__built_in">string</span>        <span class="code-snippet__comment">// SKILL.md 原文</span></span></code><br/><code><span leaf="">}</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">struct</span> Resources {</span></code><br/><code><span leaf="">    rules: ProjectRules</span></code><br/><code><span leaf="">    skills: Skill[]</span></code><br/><code><span leaf="">    cwd: <span class="code-snippet__built_in">string</span></span></code><br/><code><span leaf="">}</span></code><br/><code></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">资源的搜索路径如下：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="bash"><code><span leaf="">项目规则（优先级从高到低）:</span></code><br/><code><span leaf=""> {cwd}/AGENTS.md</span></code><br/><code><span leaf=""> {cwd}/CLAUDE.md</span></code><br/><code><span leaf=""> ~/.violin/agent/AGENTS.md</span></code><br/><code><span leaf=""> ~/.violin/agent/CLAUDE.md</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">技能（项目先，全局后，同名冲突时项目赢）:</span></code><br/><code><span leaf=""> {cwd}/.agent/skills/*/SKILL.md</span></code><br/><code><span leaf=""> {cwd}/.agents/skills/*/SKILL.md</span></code><br/><code><span leaf=""> ~/.violin/agent/skills/*/SKILL.md</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">loadAll()</span></code><br/><code><span leaf=""> ├─ loadProjectRules()</span></code><br/><code><span leaf=""> │   ├─ 尝试 {cwd}/AGENTS.md</span></code><br/><code><span leaf=""> │   ├─ 尝试 {cwd}/CLAUDE.md</span></code><br/><code><span leaf=""> │   ├─ 尝试 ~/.violin/agent/AGENTS.md</span></code><br/><code><span leaf=""> │   └─ 尝试 ~/.violin/agent/CLAUDE.md</span></code><br/><code><span leaf=""> │</span></code><br/><code><span leaf=""> └─ loadSkills()</span></code><br/><code><span leaf="">     ├─ 扫描 {cwd}/.agent/skills/*/SKILL.md</span></code><br/><code><span leaf="">     ├─ 扫描 {cwd}/.agents/skills/*/SKILL.md</span></code><br/><code><span leaf="">     └─ 扫描 ~/.violin/agent/skills/*/SKILL.md</span></code><br/><code><span leaf="">         └─ 同名冲突时报告 diagnostic，跳过</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">SKILL.md 文件都会携带一个 YAML frontmatter，violin 会解析这部分内容，并构建成一个 XML 数据，最终会注入到系统提示词中：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="xml"><code><span leaf=""><span class="code-snippet__tag">&lt;</span><span class="code-snippet__tag"><span class="code-snippet__name">available_skills</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/><code><span leaf="">    <span class="code-snippet__tag">&lt;</span><span class="code-snippet__tag"><span class="code-snippet__name">skill</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/><code><span leaf="">      <span class="code-snippet__tag">&lt;</span><span class="code-snippet__tag"><span class="code-snippet__name">name</span></span><span class="code-snippet__tag">&gt;</span>basedpyright<span class="code-snippet__tag">&lt;/</span><span class="code-snippet__tag"><span class="code-snippet__name">name</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/><code><span leaf="">      <span class="code-snippet__tag">&lt;</span><span class="code-snippet__tag"><span class="code-snippet__name">description</span></span><span class="code-snippet__tag">&gt;</span>Python static type checking<span class="code-snippet__tag">&lt;/</span><span class="code-snippet__tag"><span class="code-snippet__name">description</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/><code><span leaf="">      <span class="code-snippet__tag">&lt;</span><span class="code-snippet__tag"><span class="code-snippet__name">location</span></span><span class="code-snippet__tag">&gt;</span>/path/to/skill/SKILL.md<span class="code-snippet__tag">&lt;/</span><span class="code-snippet__tag"><span class="code-snippet__name">location</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/><code><span leaf="">    <span class="code-snippet__tag">&lt;/</span><span class="code-snippet__tag"><span class="code-snippet__name">skill</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/><code><span leaf=""><span class="code-snippet__tag">&lt;/</span><span class="code-snippet__tag"><span class="code-snippet__name">available_skills</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/></pre></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Event System</span></strong><strong style="box-sizing: border-box;"><span leaf="">（插件实现的基础）</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Agent Loop 在跑，但外界怎么知道它跑到了哪一步？—— 事件系统就是答案。Agent Loop 每做一件事（开始一轮、生成一个 token、调一个工具），就往 EventBus 上发一个事件。谁关心这个事件，谁就注册回调。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.562962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062705" src="https://wechat2rss.xlab.app/img-proxy/?k=50a66fdc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvpE8iaQznJLwDNwqibezia4HS9vq0jskyaCpVlQCrP9zM8B96icdP3lf6rGUiboLVglkWJXCfdCZGuYBDzBGBSbibrz2yOoibZdibRudw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">插件的优势在于即插即用、动态加载，刚开始考虑有如下的方案：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19907407407407407" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062706" src="https://wechat2rss.xlab.app/img-proxy/?k=46fcd362&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsvTEhFslr49614ClDc3IiahgeAc7hIia1p8uY9xuuJOMu7fKI9QwKagCjpMiaMFrBMLIwW76ZQGOxDpR9Gj6ULXLGRtYAwHkPWr4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">最终我选了 Lua。不是因为 Lua 是最好的语言，而是因为它是最小的对的那一个。500KB 的运行时，20 年 proven 的嵌入场景（从 WoW 到 Redis 到 Nginx），一 C 函数就能调 — 对 Zig 项目来说，这是路径最短的选择。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">插件系统的架构如下：</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.3972222222222221" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062708" src="https://wechat2rss.xlab.app/img-proxy/?k=59232cd0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHus07xjDkXDdt6kW7ws6gU6y9HrQ2nWpO9FY8pLuqXb7zicOevqAOQfKxuicdHBbiczUribJGnIqicO3ZJXcr2SYdGJKXf1LhEDRYMw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">核心机制非常简单：EventBus 有三个回调槽（agent /session/compaction），install () 把原回调保存下来，换成自己的 dispatch 包装函数。先执行原回调（写 socket 流式返回给客户端），再遍历所有已注册的 Lua 插件，逐个调用对应的 hook 函数。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">插件长什么样子？</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="javascript"><code><span leaf="">-- ~<span class="code-snippet__regexp">/.violin/</span>plugins/bash-guard.<span class="code-snippet__property">lua</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">return</span> {</span></code><br/><code><span leaf="">    name = <span class="code-snippet__string">&#34;bash-guard&#34;</span>,</span></code><br/><code><span leaf="">    version = <span class="code-snippet__string">&#34;0.2.0&#34;</span>,</span></code><br/><code><span leaf="">    description = <span class="code-snippet__string">&#34;拦截危险 bash 命令，自动加安全前缀&#34;</span>,</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    -- tool_start：执行工具前拦截</span></code><br/><code><span leaf="">    on_tool_start = <span class="code-snippet__keyword">function</span>(<span class="code-snippet__params">event</span>)<span class="code-snippet__keyword">if</span> event.<span class="code-snippet__property">tool_name</span> == <span class="code-snippet__string">&#34;bash&#34;</span> then-- 阻止危险命令<span class="code-snippet__keyword">if</span> event.<span class="code-snippet__property">arguments</span>:<span class="code-snippet__title">find</span>(<span class="code-snippet__string">&#34;rm -rf&#34;</span>, <span class="code-snippet__number">1</span>, <span class="code-snippet__literal">true</span>) thenreturn { action = <span class="code-snippet__string">&#34;block&#34;</span>, reason = <span class="code-snippet__string">&#34;危险命令已阻止&#34;</span> }</span></code><br/><code><span leaf="">            end-- 修改命令（加安全前缀）<span class="code-snippet__keyword">return</span> { action = <span class="code-snippet__string">&#34;modify&#34;</span>, <span class="code-snippet__variable">arguments</span> = <span class="code-snippet__string">&#34;set -e; &#34;</span> .. event.<span class="code-snippet__property">arguments</span> }</span></code><br/><code><span leaf="">        end-- 不 <span class="code-snippet__keyword">return</span> = allowend,</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    -- tool_end：修改工具执行结果</span></code><br/><code><span leaf="">    on_tool_end = <span class="code-snippet__keyword">function</span>(<span class="code-snippet__params">event</span>)<span class="code-snippet__keyword">if</span> event.<span class="code-snippet__property">tool_name</span> == <span class="code-snippet__string">&#34;bash&#34;</span> and event.<span class="code-snippet__property">is_error</span> thenreturn { action = <span class="code-snippet__string">&#34;modify&#34;</span>, content = <span class="code-snippet__string">&#34;错误已自动处理&#34;</span>, is_error = <span class="code-snippet__literal">false</span> }</span></code><br/><code><span leaf="">        endend,</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    -- context：在 <span class="code-snippet__variable">LLM</span> 调用前注入系统指令</span></code><br/><code><span leaf="">    on_context = <span class="code-snippet__keyword">function</span>(<span class="code-snippet__params">event</span>)<span class="code-snippet__keyword">return</span> { action = <span class="code-snippet__string">&#34;modify&#34;</span>, inject_text = <span class="code-snippet__string">&#34;使用 bash 时注意安全&#34;</span>, inject_role = <span class="code-snippet__string">&#34;system&#34;</span> }</span></code><br/><code><span leaf="">    end,</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    -- agent_start：阻止 agent 启动</span></code><br/><code><span leaf="">    on_agent_start = <span class="code-snippet__keyword">function</span>(<span class="code-snippet__params">event</span>)-- 在某些条件下阻止 agent 启动-- <span class="code-snippet__keyword">return</span> { action = <span class="code-snippet__string">&#34;block&#34;</span>, reason = <span class="code-snippet__string">&#34;当前不允许执行&#34;</span> }end,</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">    -- session_before_compact：阻止手动压缩</span></code><br/><code><span leaf="">    on_session_before_compact = <span class="code-snippet__keyword">function</span>(<span class="code-snippet__params">event</span>)<span class="code-snippet__keyword">if</span> event.<span class="code-snippet__property">reason</span> == <span class="code-snippet__string">&#34;manual&#34;</span> thenreturn { action = <span class="code-snippet__string">&#34;block&#34;</span>, reason = <span class="code-snippet__string">&#34;禁止手动压缩&#34;</span> }</span></code><br/><code><span leaf="">        endend,</span></code><br/><code><span leaf="">}</span></code><br/></pre></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">网络层（客户端实现的基础）</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">网络层定义了 Violin 客户端与服务端之间如何通信 —— 客户端发一条消息，服务端把思考过程、工具调用、最终回答一条条推送给客户端，就像看一个人边想边做边说的直播。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.562962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062709" src="https://wechat2rss.xlab.app/img-proxy/?k=63777389&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuibT7zfuHxKX5hllkzPIrSnuynqiauqbSn1IxuoE0cBia38N4ib2rSLz1E2mDUtt8mdibmxmibmIDfx68PbwzajVCN9dQjSsnkW7ibnQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么是 C/S 架构？</span></strong><span leaf="">大多数 Coding Agent 是一体式的 ——Agent 引擎直接嵌入编辑器或 CLI 工具里，启动、加载模型、执行工具、管理会话都在一个进程里完成。</span></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Violin 选择了前后端分离：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="makefile"><code><span leaf=""><span class="code-snippet__section">一体式:  [agent + UI + 会话]  — 一个进程，跑在本地</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__section">Violin:  [Zig 服务端 (daemon)]  ←TCP/JSON-lines→  [Python TUI 客户端]</span></span></code><br/><code><span leaf="">                               也可以接其他客户端</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个设计选择也是受到了 ACP 协议的启发，ACP 协议复杂度较高，而且 zig 没有很好的 ACP 实现依赖，violin 作为一个 toy 项目，选择了最小最容易的方式 ——</span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">TCP + JSON LINES</span></span><span leaf="">。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我在项目中维护了一个详细的通信协议说明，如果用户想用其他语言实现客户端，只需要把通信协议交给 AI 即可 vibe 出一个新的客户端。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">受到篇幅限制，我只简单介绍几个核心协议：</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">握手</span></strong></p></div></div></div></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="css"><code><span leaf="">客户端 → 服务端:</span></code><br/><code><span leaf="">{&#34;type&#34;:<span class="code-snippet__string">&#34;handshake&#34;</span>,<span class="code-snippet__string">&#34;cwd&#34;</span>:<span class="code-snippet__string">&#34;/home/user/project/violin&#34;</span>}</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">服务端 → 客户端:</span></code><br/><code><span leaf="">{&#34;type&#34;:<span class="code-snippet__string">&#34;models_result&#34;</span>,<span class="code-snippet__string">&#34;models&#34;</span>:[...],<span class="code-snippet__string">&#34;default&#34;</span>:<span class="code-snippet__string">&#34;deepseek-v4-flash&#34;</span>}</span></code><br/><code><span leaf="">{&#34;type&#34;:<span class="code-snippet__string">&#34;skills_result&#34;</span>,<span class="code-snippet__string">&#34;global_skills&#34;</span>:[...],<span class="code-snippet__string">&#34;project_skills&#34;</span>:[...]}</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">cwd 用于加载项目技能 </span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">{cwd}/.agent/skills/ </span></span><span leaf="">和注入系统提示词。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">聊天请求</span></strong></p></div></div></div></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="css"><code><span leaf="">客户端 → 服务端:</span></code><br/><code><span leaf="">{&#34;type&#34;:<span class="code-snippet__string">&#34;chat&#34;</span>,<span class="code-snippet__string">&#34;content&#34;</span>:<span class="code-snippet__string">&#34;列出目录下文件&#34;</span>,<span class="code-snippet__string">&#34;model&#34;</span>:<span class="code-snippet__string">&#34;deepseek-v4-flash&#34;</span>}</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">可选字段：session_id、temperature、max_tokens、system_prompt、images。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">事件流</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">服务端处理 chat 请求时，流式推送事件。Violin 设计了 8 个事件类型来完善对话需求：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4425925925925926" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062707" src="https://wechat2rss.xlab.app/img-proxy/?k=2cf867d9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs9kjCeicQUk035BKLOpATuk8SakTSbnZGfiblbRCoa2nqMOT7t6k63v5P7YN9YFeDHRHmmianxTsPrJsKYbVUOicVo5n5E18ibL9gY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">完整事件流示例：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="swift"><code><span leaf=""><span class="code-snippet__comment">// Client 发送</span></span></code><br/><code><span leaf=""><span class="code-snippet__operator">→</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;chat&#34;</span>,<span class="code-snippet__string">&#34;content&#34;</span>:<span class="code-snippet__string">&#34;帮我读 README.md&#34;</span>}<span class="code-snippet__comment">// Server 开始流式返回</span></span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;turn_start&#34;</span>,<span class="code-snippet__string">&#34;session_id&#34;</span>:<span class="code-snippet__string">&#34;sess_001&#34;</span>,<span class="code-snippet__string">&#34;model&#34;</span>:{<span class="code-snippet__string">&#34;id&#34;</span>:<span class="code-snippet__string">&#34;gpt-4o&#34;</span>,<span class="code-snippet__string">&#34;provider&#34;</span>:<span class="code-snippet__string">&#34;openai&#34;</span>,<span class="code-snippet__string">&#34;label&#34;</span>:<span class="code-snippet__string">&#34;GPT-4o&#34;</span>},<span class="code-snippet__string">&#34;context&#34;</span>:{<span class="code-snippet__string">&#34;tokens&#34;</span>:<span class="code-snippet__number">5400</span>,<span class="code-snippet__string">&#34;window&#34;</span>:<span class="code-snippet__number">128000</span>,<span class="code-snippet__string">&#34;usage_pct&#34;</span>:<span class="code-snippet__number">4.2</span>}}</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;delta&#34;</span>,<span class="code-snippet__string">&#34;text&#34;</span>:<span class="code-snippet__string">&#34;我来&#34;</span>}</span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;delta&#34;</span>,<span class="code-snippet__string">&#34;text&#34;</span>:<span class="code-snippet__string">&#34;帮你&#34;</span>}</span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;delta&#34;</span>,<span class="code-snippet__string">&#34;text&#34;</span>:<span class="code-snippet__string">&#34;读&#34;</span>}</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;tool_start&#34;</span>,<span class="code-snippet__string">&#34;name&#34;</span>:<span class="code-snippet__string">&#34;read_file&#34;</span>,<span class="code-snippet__string">&#34;args&#34;</span>:{<span class="code-snippet__string">&#34;path&#34;</span>:<span class="code-snippet__string">&#34;README.md&#34;</span>}}<span class="code-snippet__comment">// ... 等待工具执行 ...</span></span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;tool_end&#34;</span>,<span class="code-snippet__string">&#34;name&#34;</span>:<span class="code-snippet__string">&#34;read_file&#34;</span>,<span class="code-snippet__string">&#34;ok&#34;</span>:<span class="code-snippet__literal">true</span>,<span class="code-snippet__string">&#34;output&#34;</span>:<span class="code-snippet__string">&#34;# Violin</span><span class="code-snippet__string"><span class="code-snippet__subst">\n</span></span><span class="code-snippet__string">...&#34;</span>}</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;delta&#34;</span>,<span class="code-snippet__string">&#34;text&#34;</span>:<span class="code-snippet__string">&#34;文件&#34;</span>}</span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;delta&#34;</span>,<span class="code-snippet__string">&#34;text&#34;</span>:<span class="code-snippet__string">&#34;内容是：&#34;</span>}</span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;delta&#34;</span>,<span class="code-snippet__string">&#34;text&#34;</span>:<span class="code-snippet__string">&#34;Violin是一个AI助手&#34;</span>}</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;turn_end&#34;</span>,<span class="code-snippet__string">&#34;turn&#34;</span>:<span class="code-snippet__number">0</span>,<span class="code-snippet__string">&#34;usage&#34;</span>:{<span class="code-snippet__string">&#34;input_tokens&#34;</span>:<span class="code-snippet__number">5400</span>,<span class="code-snippet__string">&#34;output_tokens&#34;</span>:<span class="code-snippet__number">18</span>,<span class="code-snippet__string">&#34;cost_usd&#34;</span>:<span class="code-snippet__number">0.0115</span>}}</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__operator">←</span> {<span class="code-snippet__string">&#34;type&#34;</span>:<span class="code-snippet__string">&#34;result&#34;</span>,<span class="code-snippet__string">&#34;text&#34;</span>:<span class="code-snippet__string">&#34;我来帮你读...&#34;</span>,<span class="code-snippet__string">&#34;turns&#34;</span>:<span class="code-snippet__number">1</span>,<span class="code-snippet__string">&#34;aborted&#34;</span>:<span class="code-snippet__literal">false</span>,<span class="code-snippet__string">&#34;session_id&#34;</span>:<span class="code-snippet__string">&#34;sess_001&#34;</span>,<span class="code-snippet__string">&#34;usage_total&#34;</span>:{<span class="code-snippet__string">&#34;input_tokens&#34;</span>:<span class="code-snippet__number">5400</span>,<span class="code-snippet__string">&#34;output_tokens&#34;</span>:<span class="code-snippet__number">18</span>,<span class="code-snippet__string">&#34;cost_usd&#34;</span>:<span class="code-snippet__number">0.0115</span>}}</span></code><br/></pre></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Python Client 实现</span></strong></p></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">有了上一节网络协议的铺垫，我们可以写一个简单的 Violin Python 客户端。Python Client 的核心是一个 async TCP 连接 + 事件分发器：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="python"><code><span leaf="">classViolinClient:</span></code><br/><code><span leaf=""><span class="code-snippet__string">&#34;&#34;&#34;Async Violin protocol client (no UI, just I/O).&#34;&#34;&#34;</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">def__init__(<span class="code-snippet__variable">self</span>, host=<span class="code-snippet__string">&#34;127.0.0.1&#34;</span>, port=<span class="code-snippet__number">9877</span>):</span></code><br/><code><span leaf="">        <span class="code-snippet__variable">self</span>.reader = <span class="code-snippet__literal">None</span></span></code><br/><code><span leaf="">        <span class="code-snippet__variable">self</span>.writer = <span class="code-snippet__literal">None</span></span></code><br/><code><span leaf="">        <span class="code-snippet__variable">self</span>.models = []</span></code><br/><code><span leaf="">        <span class="code-snippet__variable">self</span>.session_id = <span class="code-snippet__string">&#34;&#34;</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 回调——UI 层注册这些，实现与展示分离</span></span></code><br/><code><span leaf="">        <span class="code-snippet__variable">self</span>.on_delta = <span class="code-snippet__literal">None</span></span></code><br/><code><span leaf="">        <span class="code-snippet__variable">self</span>.on_tool_start = <span class="code-snippet__literal">None</span></span></code><br/><code><span leaf="">        <span class="code-snippet__variable">self</span>.on_tool_end = <span class="code-snippet__literal">None</span></span></code><br/><code><span leaf="">        <span class="code-snippet__variable">self</span>.on_result = <span class="code-snippet__literal">None</span></span></code><br/><code><span leaf="">        ...</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">asyncdefconnect(<span class="code-snippet__variable">self</span>, retries=<span class="code-snippet__number">3</span>):</span></code><br/><code><span leaf=""><span class="code-snippet__string">&#34;&#34;&#34;TCP 连接 → handshake → 收 models_result + skills_result&#34;&#34;&#34;</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">for</span> i inrange(retries):</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">try</span>:</span></code><br/><code><span leaf="">                r, w = <span class="code-snippet__keyword">await</span> asyncio.open_connection(*<span class="code-snippet__variable">self</span>.addr)</span></code><br/><code><span leaf="">                <span class="code-snippet__variable">self</span>.reader = r</span></code><br/><code><span leaf="">                <span class="code-snippet__variable">self</span>.writer = w</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">await</span> <span class="code-snippet__variable">self</span>._send({<span class="code-snippet__string">&#34;type&#34;</span>: <span class="code-snippet__string">&#34;handshake&#34;</span>, <span class="code-snippet__string">&#34;cwd&#34;</span>: os.getcwd()})</span></code><br/><code><span leaf="">                msg = <span class="code-snippet__keyword">await</span> <span class="code-snippet__variable">self</span>._read_msg()</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> msg <span class="code-snippet__keyword">and</span> msg.get(<span class="code-snippet__string">&#34;type&#34;</span>) == <span class="code-snippet__string">&#34;models_result&#34;</span>:</span></code><br/><code><span leaf="">                    <span class="code-snippet__variable">self</span>.models = msg.get(<span class="code-snippet__string">&#34;models&#34;</span>, [])</span></code><br/><code><span leaf="">returnTrue</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">except</span> ConnectionRefusedError:</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">await</span> asyncio.sleep(<span class="code-snippet__number">0.5</span> * (<span class="code-snippet__number">2</span> ** i))</span></code><br/><code><span leaf="">returnFalse</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">asyncdefhandle_messages(<span class="code-snippet__variable">self</span>, state):</span></code><br/><code><span leaf=""><span class="code-snippet__string">&#34;&#34;&#34;事件分发——读 socket → 按 type 调用对应回调&#34;&#34;&#34;</span></span></code><br/><code><span leaf="">whileTrue:</span></code><br/><code><span leaf="">            msg = <span class="code-snippet__keyword">await</span> <span class="code-snippet__variable">self</span>._read_msg()</span></code><br/><code><span leaf="">            mt = msg.get(<span class="code-snippet__string">&#34;type&#34;</span>, <span class="code-snippet__string">&#34;&#34;</span>)</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> mt == <span class="code-snippet__string">&#34;delta&#34;</span>:</span></code><br/><code><span leaf="">                state[<span class="code-snippet__string">&#34;full_text&#34;</span>] += msg.get(<span class="code-snippet__string">&#34;text&#34;</span>, <span class="code-snippet__string">&#34;&#34;</span>)</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> <span class="code-snippet__variable">self</span>.on_delta:</span></code><br/><code><span leaf="">                    <span class="code-snippet__variable">self</span>.on_delta(msg[<span class="code-snippet__string">&#34;text&#34;</span>])</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">elif</span> mt == <span class="code-snippet__string">&#34;tool_start&#34;</span>:</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> <span class="code-snippet__variable">self</span>.on_tool_start:</span></code><br/><code><span leaf="">                    <span class="code-snippet__variable">self</span>.on_tool_start(msg[<span class="code-snippet__string">&#34;name&#34;</span>], msg[<span class="code-snippet__string">&#34;args&#34;</span>])</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">elif</span> mt == <span class="code-snippet__string">&#34;result&#34;</span>:</span></code><br/><code><span leaf="">                <span class="code-snippet__variable">self</span>.session_id = msg.get(<span class="code-snippet__string">&#34;session_id&#34;</span>, <span class="code-snippet__variable">self</span>.session_id)</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> <span class="code-snippet__variable">self</span>.on_result:</span></code><br/><code><span leaf="">                    <span class="code-snippet__variable">self</span>.on_result(msg[<span class="code-snippet__string">&#34;text&#34;</span>], msg.get(<span class="code-snippet__string">&#34;usage_total&#34;</span>, {}))</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">return</span> msg[<span class="code-snippet__string">&#34;text&#34;</span>]</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">elif</span> mt == <span class="code-snippet__string">&#34;error&#34;</span>:</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> <span class="code-snippet__variable">self</span>.on_error:</span></code><br/><code><span leaf="">                    <span class="code-snippet__variable">self</span>.on_error(msg[<span class="code-snippet__string">&#34;msg&#34;</span>])</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">return</span><span class="code-snippet__string">&#34;&#34;</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">elif</span> mt == <span class="code-snippet__string">&#34;ping&#34;</span>:</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">await</span> <span class="code-snippet__variable">self</span>._send({<span class="code-snippet__string">&#34;type&#34;</span>: <span class="code-snippet__string">&#34;pong&#34;</span>})</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">return</span> state[<span class="code-snippet__string">&#34;full_text&#34;</span>]</span></code><br/><code></code><br/></pre></p></div><div style="margin: 15px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">总结</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">整个项目做下来，最大的感受是：coding agent 的核心没有什么魔法。剥开各种花哨的 UI 和功能，底层就是一个 while 循环 —— 问模型、拿结果、要不要调工具、调完再问。Violin 的每一层都是在给这个循环打补丁：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">模型适配层解决 &#34;问谁&#34;。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">工具系统解决 &#34;能干嘛&#34;。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">资源层解决 &#34;记不记得住、SKILL 在哪&#34;。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">插件解决 &#34;能力扩充&#34;。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个玩具距离一个成熟的 Coding Agent 还有一堆没填的坑：buildJson 里 tools 参数还没序列化，模型根本收不到工具定义。插件没有权限隔离，Lua 能干任何事。ACP 协议也没接，暂时只能自己跟自己玩。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">但作为一个从零搭起来的 toy agent，这个项目的目的从来不是交付一个商用产品，而是验证一个判断：</span><strong style="box-sizing: border-box;"><span leaf="">理解了 coding agent 的构建原理，也就掌握了理解其他 agent 的一把钥匙。</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个判断在构建过程中不断被验证 —— 模型的统一适配、工具的注册与调度、会话的持久化与恢复、上下文的压缩与保留、插件的注入与拦截，这些看似各不相干的问题，底层都收敛到同一个循环：问模型、调工具、再问。客服 agent 的会话管理、数据分析 agent 的工具链编排、工作流 agent 的状态机设计 —— 追根溯源，都是这个循环在不同场景下的变形。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">剩下那些没填的坑，既是项目当前的边界，也是下一段探索的起点。把一个 toy 项目一路补到能真正落地，过程本身就是最好的学习方式。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.562962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062710" src="https://wechat2rss.xlab.app/img-proxy/?k=92e07403&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHspMj37LxD2rw4TxDGYP7VMWoItQwOv2aUTlm4MXhib46zOiaCvOwnmr9oq1XwYtaXYNqOOdTfh7d1qicT4pkERetVFf0icZqpVB6k%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546316&amp;idx=1&amp;sn=cbe17a317044b279de6ad192302d9390&amp;scene=21#wechat_redirect" textvalue="AI Native 交易核心系统的研发范式｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI Native 交易核心系统的研发范式｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546265&amp;idx=1&amp;sn=46de88c503a39ae3a77bd1ab36b85aff&amp;scene=21#wechat_redirect" textvalue="推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理" data-itemshowtype="0" linktype="text" data-linktype="2">推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546214&amp;idx=1&amp;sn=1ea66a2621a684b57f05339341dde10f&amp;scene=21#wechat_redirect" textvalue="RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546029&amp;idx=1&amp;sn=bfd40c235e8c5bdbab9acac15aea8bcf&amp;scene=21#wechat_redirect" textvalue="从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545826&amp;idx=1&amp;sn=ebb5f57a0094dafcb1c43ac135f1a48b&amp;scene=21#wechat_redirect" textvalue="得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 / 酒米</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062711" src="https://wechat2rss.xlab.app/img-proxy/?k=7f2ae255&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtsvIX9aTv3uzeDWKTQIicFd2A5htgQhAXSk8mlFkmqxznOZP2oTOf7atSxjOrjdxLAiaQmibicBVI5c9CibXIzTAaa7Ot2iaB36pwUA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=f2655c96&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546363%26idx%3D1%26sn%3De497e41b6f529e7efb771672bc6864a0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 05 Aug 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>AI Native 交易核心系统的研发范式｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546316&amp;idx=1&amp;sn=cbe17a317044b279de6ad192302d9390</link>
      <description>如何改造旧研发流程适配 AI 编码？本文提出五道标准化关口治理思路，依托 Claude Code Spec-Driven 插件打通需求澄清、方案设计、TDD 落地、门禁管控与埋点监控，构建带人工确认门控的完整工作流，以五层自底向上架构实现 AI 编码规范化落地。</description>
      <content:encoded><![CDATA[<p>原创 <span>行亦</span> <span>2026-07-29 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c5745a92&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtrz5oTNGNndPPtIncGNS6wIn8rmKNChIq39ZLFrsks9MRDZmny8HWh5adLEnym8jvtwonrQBYK53rQtXyGNhPA4OE9c9Vbo54%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>如何改造旧研发流程适配 AI 编码？本文提出五道标准化关口治理思路，依托 Claude Code Spec-Driven 插件打通需求澄清、方案设计、TDD 落地、门禁管控与埋点监控，构建带人工确认门控的完整工作流，以五层自底向上架构实现 AI 编码规范化落地。</p>
  <p style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100040703" data-ratio="0.18232558139534882" data-s="300,640" type="block" data-w="1075" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、引言</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、AI Native 下核心系统稳定性的挑战</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、AI Native 核心系统编码全流程稳定性治理思路</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、插件流水线设计 —— 插件的五道关口</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.第一道关口：需求澄清 —— 保证方向不错</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.第二道关口：技术方案设计</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.第三道关口：编码执行 TDD Implement</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.第四道关口：门禁卡控</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.第五道关口：全流程埋点监控</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、写在最后</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">引言</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">订单系统是交易链路的核心命脉，直接承载用户所有下单与支付行为，其稳定性直接决定业务盈亏。为此，我们耗时一年多，完成了订单系统由外而内的三阶段改造。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一阶段筑牢稳定底线：</span></strong><span leaf="">以 SLA 99.99%、杜绝跌单为目标，梳理下游依赖、搭建三级保障规范，规避下游抖动拖累主链路。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第二阶段剥离核心链路：</span></strong><span leaf="">以支付节点为分界，将订单创建、支付回调等核心能力从老旧应用中独立拆分并专属保障。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第三阶段模块化重构链路：</span></strong><span leaf="">按业务语义重构执行序列，实现各环节模块化分层并配齐全链路埋点。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三阶段改造落地后，订单系统实现了稳定性兜底、核心链路隔离、架构模块化、链路可观测的全面升级。但 AI Coding 的普及，给核心系统研发带来了全新的挑战。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6851851851851852" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062643" src="https://wechat2rss.xlab.app/img-proxy/?k=1837d113&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHseJOhpUbgXZEpwT9t9H2Kx8ry1snJYtbKEZQcJr7cHNNvVrwfEJV86Wk78mfSkCoiaGmZlicDyibDEo4zic5eFDialG8pqr1v079Jc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">二</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI Native 下核心系统稳定性的挑战</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">前三阶段的改造为系统打下了</span><strong style="box-sizing: border-box;"><span leaf="">稳定性</span></strong><span leaf="">、</span><strong style="box-sizing: border-box;"><span leaf="">可扩展性</span></strong><span leaf="">和</span><strong style="box-sizing: border-box;"><span leaf="">模块化</span></strong><span leaf="">的基础，但当前仍面临以下挑战：AI 让代码产出又快又多（人均增加近 3 倍），但</span><strong style="box-sizing: border-box;"><span leaf="">质量并不会因生成速度提升而自动提升</span></strong><span leaf="">。约束不够强、知识不够全，AI 就会&#34;又快又稳地把错的东西复制一千份&#34;。具体挑战归纳为：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">错误模式迁移：</span></strong><span leaf="">从&#34;个人手误&#34;转向&#34;系统性偏差&#34;，AI 倾向复用历史模式，错误容易批量复制。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">知识结构化压力：</span></strong><span leaf="">约束规约散落各处时，AI 等同于&#34;看不见&#34;团队积累。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">代码量与审查力失衡：</span></strong><span leaf="">变更量是之前的数倍，但 CR 资源不同步增加，缺陷逃逸风险被放大。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">故障回溯难：</span></strong><span leaf="">人 + AI 协同完成的代码，事后难定位根因（知识库/skill/规约/prompt 哪里出错）。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">单点提效，链路熵增：</span></strong><span leaf="">编码变快但前后步骤没变快，阶段间信息折损变大，整条链路熵在增加而非减少。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">问题不在 AI 不会写代码，而在旧流程没有给 AI 准备可执行的输入和可验证的出口——旧流程是为&#34;人理解人&#34;设计的，要重新设计的不是 AI，而是它工作的流水线。本文分享：如何将适配传统人工研发的旧流程，重构为适配 AI 编码的五道标准化关口——需求澄清、技术方案、TDD 实施、门禁卡控、全流程埋点监控。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI Native 核心系统编码全流程稳定性治理思路</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">第一章的五个挑战背后其实是同一件事：旧流程是给&#34;人理解人&#34;设计的。治理思路就是把研发流水线重构成五道关口，让每个痛点在源头就被接住。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7351851851851852" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062644" src="https://wechat2rss.xlab.app/img-proxy/?k=4d1f23ab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvMff6ZkjO8ibVeeUujasAtN0mzHc5X9ShZh7sibnSssCvGSPKiaib6uiannxffhpsJQvejBo3tibB8FLCHIkPibo0MIuKhY2ibia3PvySA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2953703703703704" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062642" src="https://wechat2rss.xlab.app/img-proxy/?k=9ba7a2f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvh9Ed7tAUbNmvBsHZSicRGgEH3Qwpk4Z5bJKQ4rPOtibTdS8wX2gSkpVSzVdSsfzQiaxicV44GvyLTaK6jvocsWdVaCvEcibmScibicg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">四</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">插件流水线设计 —— 插件的五道关口</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">定位：</span></strong><span leaf="">一个 Claude Code 的 Spec-Driven 开发插件，把&#34;需求澄清→技术方案→执行计划→TDD 实施→准入准出&#34;串成一条带用户确认门控的工作流。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5212962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062645" src="https://wechat2rss.xlab.app/img-proxy/?k=65542876&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuOEdl3tnVETAWGYgzNbhGs5evar7NpaVWOsfOgpEa2UOlUbk1qgRE2yicf18vDdVzlZ0lbqXwnbOeSUKLibXg6xvMvPfBLIH0VE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">整体采用五层自底向上的架构设计：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">基础设施层：</span></strong><span leaf="">统一埋点定义和阶段性产出规范，双层采集通道（Hook 自动层 + SKILL 显式层）实现全链路数据采集。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Agent 系统层：</span></strong><span leaf="">设计 Agent、意图工程、上下文工程，通过&#34;链式调用→并行协作→反馈修正→结果汇总&#34;编排。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">开发流程层：</span></strong><span leaf="">定义五阶段核心研发流程。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">度量层：</span></strong><span leaf="">全链路可观测，量化数据采集、分析、报告与可视化。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">治理层：</span></strong><span leaf="">顶层保障，将核心治理能力（spec/code/arch/BDD 四维并行审查）内嵌到前四层。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一道关口：需求澄清——保证方向不错</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">工作流的第一阶段是需求澄清。在这一步，我们不产出任何代码，甚至不讨论代码——只做一件事：让业务意图被精确地、结构化地记录下来。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">拿贯穿全文的案例说：出海下单支持礼品卡，礼品卡金额 = 礼品卡面值 + 出海服务费。算错是资损，且有一个跨环节约束——确认订单和创建订单两处都要算礼品卡金额，漏一处就会出现确认时和下单时金额对不上。在需求澄清关口，我们要钉死的是&#34;算什么、什么情况算错了要阻断&#34;。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6342592592592593" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062646" src="https://wechat2rss.xlab.app/img-proxy/?k=1fd44247&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtQyFL6DG2laexUmUh7hwvgqEW4dHXunAKBnm1dks9aPXtt5UicjCicOdwvvNhCoDMQNrPxibLnOdxjTSGaXspVxGznA65RtP46sU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">BDD 场景驱动验收：Spec 里写的，就是后面测的</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">落到出海礼品卡上，Gherkin 场景这样写：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">正常路径：</span></strong><span leaf="">Given 出海下单选礼品卡支付，面值 100 元 + 出海服务费 10 元，When 用户确认订单，Then 礼品卡金额 = 110 元。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">异常边界：</span></strong><span leaf="">Given 礼品卡面值 + 服务费计算后金额异常，When 下单，Then 阻断并提示，不创建异常金额订单。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">优先级标定：</span></strong><span leaf="">礼品卡金额一致性场景标 P0，必须通过才能发布。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">后续的 BDD-acceptance agent 会把每条 Gherkin 场景一对一映射到 TDD 用例，逐条验收——需求、测试、实现三者一一对齐。传统流程中 PRD 是&#34;给人看的文章&#34;，AI 读完后&#34;猜&#34;要做什么、测试再&#34;猜&#34;要测什么，两次传递两次折损；我们强制在需求阶段产出 Gherkin 场景（Given-When-Then）作为需求与测试之间的&#34;硬契约&#34;，让验收标准从一开始就是机器可读、可执行的。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">统一模板，禁止技术语言：让 Spec 成为&#34;通用语言&#34;</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Spec 固定六节：</span></strong><span leaf="">①文档基本信息 ②业务目标与用户价值 ③核心业务流程 ④边界条件与异常场景 ⑤业务规则与协作边界 ⑥优先级与验收方法。每节强制业务语言，技术术语一律屏蔽：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.15" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062647" src="https://wechat2rss.xlab.app/img-proxy/?k=1d5fcd31&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvE7XBzdF9ma5MRXeVySN6z7NaD2BUxicf8iaVXyygpyTy3ibXibaxVqIG6Jy6H7VqFjwcqvTbYibqWGpVpM5aCaqwpq9lUWZY3Wuco%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">字段类型、表结构、接口签名、上下游系统名一律不写（tech-design 阶段的事）。模板由独立子 Agent 渲染、不注入主会话上下文，保证产出格式稳定一致。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">结合知识库做现状对齐：让 AI&#34;带着上下文&#34;理解需求</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">需求澄清开始前，自定义插件会自动触发获取对应知识库信息，传入 PRD 中的业务场景关键词，从知识库 + 代码现状中拉取一份&#34;现状分析报告&#34;。这份报告是需求澄清的事实底座，作用是：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">避免凭印象描述现状：</span></strong><span leaf="">AI 不会&#34;觉得&#34;某个功能现在是怎么工作的，而是基于代码和文档的事实。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">避免新增能力与已有逻辑撞车：</span></strong><span leaf="">写新需求前先知道&#34;这块之前是怎么设计的&#34;。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">澄清过程可回溯：</span></strong><span leaf="">每个判断都能溯源到知识库或代码，而不是拍脑袋。</span></p></li></ul></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">提问而非假设：把&#34;该问的问清楚&#34;</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">按&#34;该问 / 不该问 / 可跳过&#34;三类管理提问：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19907407407407407" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062648" src="https://wechat2rss.xlab.app/img-proxy/?k=3d309321&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuTBryx7QoDfOK3LIvicib5ypBRKRRvuiaEPGicLM1cwqLMCYHESuUsXXic9xGJonuq1icKvMgKvAVbDQM4gu6eUictoib5Dv0tXJRvVKU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">需求澄清关口核心：BDD 钉死验收、模板屏蔽技术语言、知识库兜住现状、提问管理该问不该问——让&#34;做什么&#34;和&#34;怎么算做完&#34;在起点就被精确记录。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第二道关口：技术方案设计</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">承接上一关口：需求澄清把&#34;算什么&#34;（What）钉死，技术方案这一关口要回答&#34;怎么改&#34;（How）和&#34;算错了怎么兜&#34;（Fallback）。核心思想一句话——</span><strong style="box-sizing: border-box;"><span leaf="">不让 AI 在编码时临场发挥，所有设计决策在编码前就被锁定</span></strong><span leaf="">。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6851851851851852" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062651" src="https://wechat2rss.xlab.app/img-proxy/?k=d50a3776&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsHYrrhKVgmc8mcSpbRmEicJLLYfanafsNzPPw0dpQLSXADvnCczkrsn7jpQUbq6uIMUSQes4XjywZrXUiakhQtGfZrjKwE7v3kU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">分析要改动的模块：从&#34;整体架构&#34;拆到&#34;五段式&#34;</span></strong></p></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">拿到需求 Spec 后，tech-design 阶段不会直接跳进代码细节。先做自上而下的模块拆解：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一步：解析服务清单。</span></strong><span leaf="">从需求规格的&#34;整体架构/跨服务总览&#34;章节解析本次涉及的服务清单。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第二步：逐服务拆到模块粒度。</span></strong><span leaf="">每个涉及的服务按场景拆解，每个场景下固定五个子部分：</span></p></li></ul></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="swift"><code><span leaf=""><span class="code-snippet__operator">▎</span> 场景详细设计（每个场景固定五部分）</span></code><br/><code><span leaf=""><span class="code-snippet__operator">├──</span> 模块详情（五段式结构）</span></code><br/><code><span leaf=""><span class="code-snippet__operator">│</span>   <span class="code-snippet__operator">├──</span> 目标：这个模块要达成什么</span></code><br/><code><span leaf=""><span class="code-snippet__operator">│</span>   <span class="code-snippet__operator">├──</span> 变更位置：改哪个类<span class="code-snippet__operator">、</span>哪个方法</span></code><br/><code><span leaf=""><span class="code-snippet__operator">│</span>   <span class="code-snippet__operator">├──</span> 字段<span class="code-snippet__operator">/</span>配置变更：加什么字段<span class="code-snippet__operator">、</span>改什么配置</span></code><br/><code><span leaf=""><span class="code-snippet__operator">│</span>   <span class="code-snippet__operator">├──</span> 构建<span class="code-snippet__operator">/</span>处理逻辑：核心处理流程</span></code><br/><code><span leaf=""><span class="code-snippet__operator">│</span>   <span class="code-snippet__operator">└──</span> 阻断<span class="code-snippet__operator">/</span>兜底行为：异常时怎么处理</span></code><br/><code><span leaf=""><span class="code-snippet__operator">├──</span> 异常与边界：边界条件清单</span></code><br/><code><span leaf=""><span class="code-snippet__operator">├──</span> 新增清单：新增的类<span class="code-snippet__regexp">/方法/</span>配置</span></code><br/><code><span leaf=""><span class="code-snippet__operator">└──</span> 上下游协作（表格形式）</span></code><br/><code><span leaf="">    <span class="code-snippet__operator">├──</span> 上游依赖项</span></code><br/><code><span leaf="">    <span class="code-snippet__operator">├──</span> 下游影响项</span></code><br/><code><span leaf="">    <span class="code-snippet__operator">├──</span> 是否需要对方改动</span></code><br/><code><span leaf="">    <span class="code-snippet__operator">└──</span> 联合设计状态</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">落到出海礼品卡上，五段式是这样写的：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2972222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062650" src="https://wechat2rss.xlab.app/img-proxy/?k=67626337&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsjvTyibhs5gTHwbue00rhJ37ic3O5Psia65DiaGKBzU2cSfQSxLlEjficy8flUAICkiaQTxET1ltJ7mw6TT7cMSahmwtrhTYfNiacsHk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">从知识库拉取模块规约：让方案&#34;知道历史&#34;设计</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">出海礼品卡需求拉取时，会命中一条关键跨环节不变约束：&#34;确认订单要算礼品卡金额（含出海服务费）&#34;&#34;创建订单也要算——两处算法必须一致&#34;。命中的约束逐条让用户选&#34;纳入&#34;还是&#34;明确排除&#34;——排除必须填理由，理由在门禁阶段会被强制复查，防止有人为图省事把关键约束排除了。纳入的约束作为场景详细设计的输入，方案从一开始就&#34;长&#34;在规约上，并像影子跟到编码和门禁阶段，&#34;入口拉了哪些规约，出口就查哪些规约&#34;，形成完整证据链。CLI 不可用时降级跳过并在产物中明确标注，不静默漏过。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">统一技术方案模板：章节编号、图表类型全部硬约束</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">所有技术方案走统一模板，五大核心章节固定顺序：一、业务用例分析 → 二、整体架构 → 三、场景详细设计 → 四、数据结构设计 → 五、稳定性设计。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">层面一：模块详情层的&#34;阻断/兜底行为&#34;</span></strong><span leaf="">——每个模块必须明确具体动作（阻断/降级/默认值），不能只写模糊的&#34;兜底处理&#34;。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.1925925925925926" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062649" src="https://wechat2rss.xlab.app/img-proxy/?k=f4c1a8b5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuAq846hjchM4F6zYUHrEiandCiaqxarcqYrQcUaOxaZdmOxeIO2fD7Ey6ELZJga46LgWVXicBcibhNJosibia7fssJ8aqjfLCqicMgIw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">层面二：稳定性设计层（第五章）</span></strong><span leaf="">——按可灰度 / 可监控 / 可回滚三维度展开，弱依赖模块在这里补全熔断、降级链路：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.22037037037037038" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062652" src="https://wechat2rss.xlab.app/img-proxy/?k=2dd8ea3d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv5PsMUPOgDibbVw8ZwEhI56ZvxKDywJOMM4yYKh7wtr06Q76azUZZ7LF8mOu0fYbibbhqV54CHibVA9ic5fU05dGMpXUmdwicXjsK8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第三道关口：编码执行 TDD Implement</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">承接上一关口：技术方案把&#34;怎么算&#34;锁死后，编码就变纯粹——照方案&#34;翻译&#34;成代码，再用 TDD 卡住&#34;做完没&#34;。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6509259259259259" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062656" src="https://wechat2rss.xlab.app/img-proxy/?k=df067c27&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsCm4XVQTc2lG9F7XzQdlVyTwJDFGCvXvZpyXGb5KsFkAPImM9VX2Zv6F1u0UaT6tWJ5Zmaxyic2jddlgp2JW4OicImk7a2uWTYU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">任务拆分（write-plan）：可独立验证</span></strong></p></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">技术方案被拆解为可独立验证的任务列表，每个任务有三个硬约束：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">足够小，可独立完成</span></strong><span leaf="">——一个任务的产物应该是可独立 review 的最小单元。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">有明确的 RED/GREEN 验证点</span></strong><span leaf="">——先写测试（RED），再写实现（GREEN），没有例外。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">可独立回退</span></strong><span leaf="">——任务失败时可以单独回退，不影响其他任务。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这样拆解的目的是：把&#34;写一段大代码&#34;这件事，变成&#34;完成 N 个小任务&#34;。每个小任务都有明确的入口（失败的测试）和出口（通过的测试）。AI 不再有&#34;自由发挥&#34;的空间——想写代码，先证明你想清楚了它该怎么测。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">架构预检（入口）：编码前先卡方向</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">编码前，架构检测先卡一次：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">分层是否越界</span></strong><span leaf="">——比如 Controller 层直接调 DAO 层，跳过了 Service 层。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">依赖方向是否反转</span></strong><span leaf="">——比如领域层反向依赖了基础设施层。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">模块边界是否穿透</span></strong><span leaf="">——比如订单模块直接调用了支付模块的内部类。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这一步的设计意图是：避免实现跑偏后再返工——方向错了，代码写得再快也没用。架构预检是&#34;事前防&#34;，比&#34;事后查&#34;成本低得多。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">RED-GREEN 循环：先写测试，再写代码</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">TDD 的三步循环：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19814814814814816" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062653" src="https://wechat2rss.xlab.app/img-proxy/?k=4c83bb4b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHspHEqNicia4m8lz891fL68hAZS0F7uqgzgiapYdSpnoGZOufmZBDaHjGLExVIeDVdhDl7Q5AXzhaUD0NiaZD7shtXgU70gNcaDens%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">放到出海礼品卡上，三步循环是这样跑的：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">RED：</span></strong><span leaf="">先写&#34;礼品卡面值 100 + 出海服务费 10 = 110 元&#34;的测试，预期礼品卡金额 = 110 元。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">GREEN：</span></strong><span leaf="">实现 </span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">GiftCardCalculator.calcAmount</span></span><span leaf=""> 让测试通过。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">REFACTOR：</span></strong><span leaf="">把&#34;面值 + 服务费&#34;的算法抽成公共方法，确认订单和创建订单复用同一份。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">TDD 确保每行代码都有对应测试，测试又对应到需求澄清的 Gherkin 场景——需求→方案→计划→测试→代码，一条完整可追溯链。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么 TDD 在 AI 时代格外重要？</span></strong><span leaf="">AI 写代码最大的问题不是写不出来，是它太自信了。它会在没有测试的情况下，写一段看起来很合理的实现，然后自信地告诉你&#34;完成了&#34;。TDD 的价值在于，</span><strong style="box-sizing: border-box;"><span leaf="">先有一个失败的测试摆在那里，AI 必须让这个测试通过</span></strong><span leaf="">——这是一个客观的、不可糊弄的锚点。没有 TDD，AI 的&#34;完成&#34;是主观判断；有了 TDD，AI 的&#34;完成&#34;是测试通过——客观、可验证、不可糊弄。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第四道关口：门禁卡控</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">承接上一关口：编码过了 TDD，最后一道关口是门禁——但&#34;审核&#34;不只发生在 gate-check，每个阶段产物落地都有对应审核，gate-check 是最终汇总。门禁的设计遵循四个核心原则：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">机器判定为主：</span></strong><span leaf="">每个审核 Agent 输出结构化 JSON，门禁读 JSON 判 PASS/FAIL，不靠 LLM 主观总结。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">人工决策为辅：</span></strong><span leaf="">只有关键决策点（如回退方向、排除规约的理由）才需要人确认。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">所有结论落本地磁盘，数据可回溯：</span></strong><span leaf="">每一步都有结构化证据，不是&#34;凭印象觉得没问题&#34;。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">失败必须回退到具体阶段：</span></strong><span leaf="">门禁 FAIL 不是简单打回重来，而是定位到具体阶段、具体问题。</span></p></li></ul></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">全流程审核分布：门禁不止在最后</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">审核机制贯穿全流程，每个阶段产物落地时都有对应的审核 Agent，gate-check 只是最终汇总：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.35462962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062654" src="https://wechat2rss.xlab.app/img-proxy/?k=8360b66b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuarxicQMG2zoMIfc87rqlUUnia5659icbT3737QFeyXPc2G6UlOcdia3ibdciaUFibUHzp49ScjuUFL2tgicX7cerC4sGF70Zhxqvic74M%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">放到出海礼品卡需求上看门禁怎么查：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">invariant-reviewer：</span></strong><span leaf="">技术方案阶段&#34;纳入&#34;的&#34;确认订单和创建订单都要算礼品卡金额&#34;约束，两处调用点是否都同步改了——只改一处就 FAIL。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">delta-guard：</span></strong><span leaf="">新增的出海服务费查询外部调用是否登记、是否有降级——命中&#34;外部调用&#34;检查项，没降级就高亮提醒。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">bdd-acceptance：</span></strong><span leaf="">需求 Spec 里&#34;礼品卡 = 110 元&#34;&#34;金额 ≤ 0 阻断&#34;两条 Gherkin 场景，必须有对应测试且全部通过。</span></p></li></ul></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">门禁检查三层 DAG 结构：层内并行、层间串行</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5731481481481482" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062655" src="https://wechat2rss.xlab.app/img-proxy/?k=48c87e50&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtkUtlDaRibcDOuiaNIaSIicPs0VibFvqr0GWiaxOlUefPgaJjFldgou7Fh3lpN81u7MaK3GxakmJk2nxAPTVjmDOG8V8ss0JPRhrYE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3527777777777778" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062659" src="https://wechat2rss.xlab.app/img-proxy/?k=0448ad42&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvFa7vMrK5trVZKvicdAyf74UB91qlfDco8f8jiaY3FBl0MERbS8iaO5dw2OnCF7libaib20eCCUNk4nib9zIJibL0ialzyxpzFYzYQBwI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">增量代码体检，合入门禁前的&#34;快速拍片&#34;</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.675" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062657" src="https://wechat2rss.xlab.app/img-proxy/?k=8310977f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvN2kWAcsQ5Es3cC0v2AK1fIwZ6PuKUxzW3ocuPR07vSE4CKgRlObiaPDVExib4tRu1SuFVY7JSQbkXEXaG07BxKvia7VibXcUWHRI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">增量代码检测是&#34;代码准入检查&#34;的工具，主要用于合并代码前的自动审查和开发者本地自查。它会用 9 个维度扫描本次改动的代码——比如有没有引入新的外部调用、新的线程池、错误码是否重复、关键调用链上有没有动到不该动的节点等——然后把结果整理成一份飞书报告，直接发到项目组的知识库下。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">可扩展：</span></strong><span leaf="">每条规则是独立小目录，一个配置 + 一个扫描脚本，新增规则不动其他地方，预留大模型判断扩展位。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">可复用：</span></strong><span leaf="">解析代码差异、查代码作者、生成飞书文档等基础动作下沉为共用工具，代码差异只解析一次，9 条规则读同一份数据。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">轻量级：</span></strong><span leaf="">纯文本扫描 60 秒超时、秒级返回，流水线三级兜底，单条规则挂了不拖累其他，飞书发不出也留本地文件。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第五道关口：全流程埋点监控</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">承接上一关口：前四道关口是&#34;闸门&#34;，这一道是&#34;仪表盘&#34;——告诉你改进到底有没有效果。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">埋点监控把研发过程变成数据：这次需求花了多少人力成本、哪个阶段最耗时、知识库调用成功率高吗、门禁通过率在变好还是变差、回退了两次根因是需求没写清还是方案设计漏了。让改进有据可依。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">看板分三层，从需求到代码逐层下钻</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6685185185185185" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062661" src="https://wechat2rss.xlab.app/img-proxy/?k=43d38e71&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtjibjOohTyBYLZt1fYlTfRvWNFP7NXcSzYIEQDEia1WK0TYakqBfsluN9zjTwib1bKBq0KjqA2BpzibggRaV7OxDwibEGBXicrdGVh4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五个维度观察</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">把看板上的指标按&#34;问什么问题&#34;归类：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2953703703703704" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062658" src="https://wechat2rss.xlab.app/img-proxy/?k=8371485d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs0wXrY2YTcYvsSQrKiaFgMnsrHLCEhicvu5hcv5iaQrwuHx3tu7OYfb5AcewG5EAKzbRXSyHibiaGl8p0X7hvOh6kw5jpgLebEpLGU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">埋点如何驱动改进：三个典型场景</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">场景一：知识库补充——从用户问答里挖&#34;该补什么&#34; </span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.33055555555555555" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062660" src="https://wechat2rss.xlab.app/img-proxy/?k=ed2b892e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHttDIVicKmu7o1YBafqFL1jZzyNgMVTRwyj7I7Ho1yN3AguykEBEMvesH2CcbHn0c26TqGO7pTuQ68ibV5cdWCnefGuJATrTnn78%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">信号组合：</span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">知识库调用成功率低 + 引用知识条目少 + 用户问答多</span></span><span leaf=""> → 知识库要么内容少、要么命中率低。高频问题清单就是知识库该补充的内容清单。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">场景二：流程优化——从耗时和对话轮数里找&#34;哪里设计得不好&#34;</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.33055555555555555" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062663" src="https://wechat2rss.xlab.app/img-proxy/?k=2f432a83&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHswzEmkiaQB2ZpTD5jMpbiaaazK36sPdyymuTniccySNykyJ9tNCNvhar5mVCQIgtbZCX8dicpMGl51cUPic7g0NIrNjgL6zichEg0Ho%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">核心判断标准：耗时高不一定是问题，但耗时高 + 对话轮数异常高一定是流程设计问题，不是模型慢。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">场景三：子代理与工具调用收敛——从&#34;谁在白干&#34;里找&#34;哪里该收敛&#34;</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.33240740740740743" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062664" src="https://wechat2rss.xlab.app/img-proxy/?k=f2e46f04&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHt2hicjviaFov4XqOBiaF5ZnVr1QafDrujRPS5eicqrzibUziaOibosCklBdCxd0clzkCTdwGqZOPYVqKLlicicgDJDgW2HBqiafqboaGEtM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">写在最后</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI Coding 走到下一阶段，比拼的不再是谁的模型更强，而是：谁能把 AI 的产出，变成可验证、可度量、可负责的研发生产方式。这五个字——可验证、可度量、可负责——才是 AI Native 研发范式的核心。模型能力是变量，流程设计是常数。变量决定上限，常数决定底线。交易核心系统的底线，不能交给变量。</span></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546265&amp;idx=1&amp;sn=46de88c503a39ae3a77bd1ab36b85aff&amp;scene=21#wechat_redirect" textvalue="推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理" data-itemshowtype="0" linktype="text" data-linktype="2">推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546214&amp;idx=1&amp;sn=1ea66a2621a684b57f05339341dde10f&amp;scene=21#wechat_redirect" textvalue="RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546029&amp;idx=1&amp;sn=bfd40c235e8c5bdbab9acac15aea8bcf&amp;scene=21#wechat_redirect" textvalue="从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545826&amp;idx=1&amp;sn=ebb5f57a0094dafcb1c43ac135f1a48b&amp;scene=21#wechat_redirect" textvalue="得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545821&amp;idx=1&amp;sn=3234c5ee286b9efa19c14ef3b9a2fb1c&amp;scene=21#wechat_redirect" textvalue="得物 OceanBase 落地实践" data-itemshowtype="0" linktype="text" data-linktype="2">得物 OceanBase 落地实践</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 / 行亦</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062662" src="https://wechat2rss.xlab.app/img-proxy/?k=f7d1acf2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHusvkX5XBTfzVZaBMxFhS5WeDEuB32nySuFavtHBudJ4B5ffxvEMAOibShBqfjLeZz6UB6gob92NL0vSzTVPv9wHXicJaLuNEntU%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=92a27dc9&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546316%26idx%3D1%26sn%3Dcbe17a317044b279de6ad192302d9390">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 29 Jul 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>推荐系统体验的数字化突破：得物自动化评测平台的技术实践｜AICon 文章整理</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546265&amp;idx=1&amp;sn=46de88c503a39ae3a77bd1ab36b85aff</link>
      <description>「得物推荐 AI Harness 工程化实践系列」的末篇内容，本系列共三篇连载。本篇（末篇）详解得物推荐评测平台的完整技术体系：从主观体验量化到大模型自动化评测流水线，涵盖多维度指标设计、人机协作提示词校验闭环、分布式任务调度与成本精控等核心工程实现。</description>
      <content:encoded><![CDATA[<p>原创 <span>水月</span> <span>2026-07-27 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9c0e07ca&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsedl7lTroj20Qib6Y3O0uCUCA3OzSHeoTJ2s7xbnXWq5kpq6srkFkMk8lHhZ1CdULKrJD01HXrRB362OiavbQlVsiamGa0qEFqIU%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>「得物推荐 AI Harness 工程化实践系列」的末篇内容，本系列共三篇连载。本篇（末篇）详解得物推荐评测平台的完整技术体系：从主观体验量化到大模型自动化评测流水线，涵盖多维度指标设计、人机协作提示词校验闭环、分布式任务调度与成本精控等核心工程实现。</p>
  <p style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100040703" data-ratio="0.18232558139534882" data-s="300,640" type="block" data-w="1075" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、业务背景：发现性指标的量化困局与效率瓶颈</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、核心架构与功能模块解析</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.评测任务的高并发调度</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.评测空间与大模型辅助审计</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.评测数据分析看板</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、核心技术架构拆解</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.可视化提示词工程与人机协同校验基建（模型层）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.百万级吞吐的算力调度与微观控本（工程层）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、业务成效与降本增效实绩</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.策略迭代效率呈倍数提升</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.运营资源投入大幅节省</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、演进路线：从单一评测到全维度的 Agent 自动巡检</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.体验评测的多维度泛化</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.走向全天候的 Agent 自动巡检</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、结语</span></p></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">本文是得物技术专家在 AICon 上海演讲整理的技术实录。<a class="weapp_text_link js_weapp_entry" style="" data-unique-id="ms3100l4-pt3xzx" data-miniprogram-type="text" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="https://aicon.infoq.cn/2026/shanghai/schedule" data-miniprogram-nickname="小外链" data-miniprogram-servicetype="0" data-miniprogram-applink="">AICon上海2026_全球人工智能开发与应用大会暨大模型应用生态展_InfoQ技术大会</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">「得物推荐 AI Harness 工程化实践系列」的末篇内容，本系列共三篇连载。</span></strong><span leaf="">本篇（末篇）详解得物推荐评测平台的完整技术体系：从主观体验量化到大模型自动化评测流水线，涵盖多维度指标设计、人机协作提示词校验闭环、分布式任务调度与成本精控等核心工程实现，以及单周百万级审计需求下实现 91% 资源成本优化的工业级落地实战细节。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">业务背景：发现性指标的量化困局与效率瓶颈</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在推荐系统中，CTR 和 CVR 等硬性指标往往容易通过实时数据进行观测，但新颖性、相关性等评价维度由于主观性强、反馈周期长，长期处于量化黑盒状态。本文将介绍得物自动化评测平台的建设方案。该平台通过引入大模型评测能力，将评测反馈周期从周级缩短至小时级，并在支撑单周百万级审计需求的背景下，实现了 91% 的资源成本优化。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在得物推荐评测平台建设前，推荐产研团队在优化用户体验和长尾策略时，面临以下核心痛点：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">主观指标难以定量：</span></strong><span leaf="">判断一个商品是否属于算法针对用户潜在兴趣的合理推荐，过去高度依赖人工审计，缺乏统一且可连续对比的数据标准。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">反馈周期严重滞后：</span></strong><span leaf="">策略上线后，通常需要等待一周的大盘例行数据才能得出综合评估，无法满足策略高频迭代的需求。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">审计成本居高不下：</span></strong><span leaf="">面对百万级别的全量对比和竞品评测需求，依靠传统人工评估模式需要投入巨大的人力资源，难以形成常态化的日常诊断。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为了打破这一基建瓶颈，得物推荐评测平台应运而生，旨在通过自动化流水线将主观的发现性指标转化为可实时监控、可精确对比的结构化数据。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">二</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心架构与功能模块解析</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">得物推荐评测平台通过任务流自动化和指标多维可视化，构建了完整的全自动评测空间。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">评测任务的高并发调度</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在评测任务管理中心，产研同学可以一键拉起不同类型的评测任务。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">任务承载：<span textstyle="" style="font-weight: normal;">上线初</span></span></strong><span leaf=""><span textstyle="" style="font-weight: normal;">期</span>，平台已稳定支撑大量实验任务、1 组例行大盘以及多场友商对比评测。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">吞吐能力：</span></strong><span leaf="">依托异步底座，单周评测数据处理量已达到百万级别。</span></p></li></ul><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2768519" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062614" src="https://wechat2rss.xlab.app/img-proxy/?k=dc896050&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHu1W63AYsyX9WwficIlFwUnAibM5iaZXShf9Bgnd4GLV2DB8YDwILwyNia0qCquVun8vdNkqQGx1OP6OUB9o6bfvDB0icCkicnluF3vo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">评测空间与大模型辅助审计</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">评测空间是针对具体 case 进行深度拆解的场所。平台支持结合用户的多维画像特征进行全自动化洞察：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">智能辅助评估：</span></strong><span leaf="">平台引入了 AI 辅助模式，从相关性、新颖性等维度对推荐结果进行 1 到 5 分的动态打分，并输出具体的判定依据。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多维特征关联：</span></strong><span leaf="">评测员或算法同学可以通过双列视图直观看到商品详情，快速定位异常推荐结果。</span></p></li></ul></div><div style="text-align: center;margin: 15px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5324074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062609" src="https://wechat2rss.xlab.app/img-proxy/?k=ea31da13&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvkhpOnlpRdncaE9Np4qSzjSkQfcbXDkVPYFMWibicgMzguTgKx78jianbBMGF58FS5FvVJ1ML8mJoBlrQBWnA2Z1upRb1r8YGVibU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">评测工作界面</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">评测数据分析看板</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在数据报表模块，得物推荐评测平台实现了全层级指标的实时监控与下钻分析：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心 KPI 提炼：</span></strong><span leaf="">报表实时输出有效发现率、精准推荐率以及无效推荐率。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">分级下钻：</span></strong><span leaf="">评测记录被精细化划分为 L0 到 L4 等不同层级，产研可在小时级内清晰掌握实验组与基线的水位差，彻底告别直觉判断。</span></p></li></ul><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="text-align: center;margin: 15px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5435185" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062615" src="https://wechat2rss.xlab.app/img-proxy/?k=0df18574&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvyTaiaIZhkHwLlufk8iaCePibxW4YgOSPxibe0AZpcnLTgibicrArlgNjLaMTib5ibpMRJs3zB8pyn1Ha7ODGdr8nMGSibkGUKwKPRT2IU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">数据报表</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心技术架构拆解</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">可视化提示词工程与人机协同校验基建（模型层）</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在得物推荐评测平台中，评测提示词的设计与评估一致性的对齐，并非通过硬编码锁死，而是交由产品与业务专家基于实际场景进行敏捷迭代。为了支撑业务同学能够独立、高效地完成提示词的调试与人工校验，平台在底层构建了一套完善的工程化配置与校验基建：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">动态提示词（Prompt）版本管理：</span></strong><span leaf="">平台将评测提示词抽象为独立的配置资产。产品同学可以针对相关性、新颖性等不同评测维度，在后台可视化界面中独立调优 Prompt。平台支持 Prompt 的版本控制与热更新，确保策略调整后，评测标准能够秒级同步，无需经历繁琐的代码发布流程。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">低门槛的评测员配置矩阵：</span></strong><span leaf=""> 平台底层解耦了具体的模型供应商，提供了统一的接入协议。业务同学可以自由选择 Qwen3-Max 等不同量级的模型作为评测员，并在系统配置中实时观测其并发能力、当前版本的准确率以及与人工结论的一致性水位。</span></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="text-align: center;margin: 15px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5342593" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062616" src="https://wechat2rss.xlab.app/img-proxy/?k=e5783f2f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuYpZJmx6nBwW1A3yOanuRgLjhYQDkgDBpQVYmfYHWkm22lmCQgG4zz8ukvOGzeZf8kuLfFDpDK0XwwAnelIdTdd1vicC8jhlY8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="text-align: center;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">系统配置与评测大模型管理</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">人机协作的在线校验流：</span></strong><span leaf="">为解决大模型在复杂电商场景下的理解偏差，平台构建了高效的样本校验工作流。产品同学在调整 Prompt 后，可一键抓取历史真实 case 进行小规模盲测。通过平台提供的双列视图，人工专家可以对 AI 的打分和文本解释进行实时审计与修正。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这种“产品专家定义标准、AI 高频执行放大、人工漏斗式校验”的闭环机制，不仅极大地降低了算法策略的对齐成本，更让平台评测的一致性在业务的动态微调下稳定保持在 92% 以上。</span></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.38796296296296295" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062606" src="https://wechat2rss.xlab.app/img-proxy/?k=4d00fb22&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv6skdEcQEkuQOBRJhpiaeBbhMHo2pnQrstrRkwq5qCsEDEWcVcytVcXfVhOEzCEoxKGXoBicoaoF6SVjViauneuBfwtBmr1ODeQ4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">百万级吞吐的算力调度与微观控本（工程层）</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在支撑同等百万级审计需求下，Axis 将单周算力成本控制在万元级左右，大幅提升了投入产出比。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4638888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062610" src="https://wechat2rss.xlab.app/img-proxy/?k=1cf208d9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsOcookkalviaa7ibrsiaGeEc0K7aP9XaR9RSXunR7OqIz4SM33ibAaNmNyj5Rb9YplFhVHSVYHyhuZiakeiaibnAicupDxxSLXwxibYiaAM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">分布式任务调度：CAS 无锁抢占，杜绝重复执行</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">得物推荐评测平台的调度核心采用 CAS（Compare-And-Swap）抢占机制，而非传统的分布式锁方案。调度器每分钟扫描一次待执行实例，用一条原子 SQL 完成&#34;抢锁&#34;操作。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">依赖 MySQL 行级锁保证多节点竞争时只有一个节点的 rowcount = 1，其余节点本轮直接跳过，无需引入 Redis/ZooKeeper 等外部依赖。宿主机宕机后，超过 30 分钟心跳超时的实例可被任意存活节点自动接管，做到故障自愈。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">断点续传：三阶段 offset 机制，中断后零数据丢失</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">百万级评测任务往往需要数小时执行。得物推荐评测平台通过进度技术字段记录三个阶段各自的执行进度：任务在任意阶段中断后重启，均能从断点精确续跑，不会产生重复评测或数据空洞。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19907407407407407" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062612" src="https://wechat2rss.xlab.app/img-proxy/?k=489b9d55&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtAyKID7XM4ibhzeN4Vtbhqx1KZPy2DcYtsvYA819PEfjHk06D6z2jhbtPFXdJ2M9mNVdCg8ogGicPicEECic9QibQWEdaeN378LAzQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">任务在任意阶段中断后重启，均能从断点精确续跑，不会产生重复评测或数据空洞。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">LLM 并发控制：ThreadPoolExecutor + 动态限流，成本与速度的精确平衡</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">对于文本 LLM 评测（文本</span><span leaf="" data-pm-slice="1 1 [&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);&#34;,&#34;data-pm-slice&#34;:&#34;0 0 []&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;p&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;}]">评</span><span leaf="">测策略），得物推荐评测平台采用分批并发：并发度支持通过配置中心热更新，无需重启服务即可动态调整至最优水位。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">对于多模态视觉评测（多模态视觉评测策略），以单次多模态请求替代多次图片请求，在减少 API 调用次数的同时显著降低单次 Token 消耗。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">微观控本：按需触发 + 模型分级，把每分钱花在刀刃上</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">按需执行：</span></strong><span leaf="">三种触发模式（定时调度 / 文件上传 / 按需 Ad hoc）均严格按需消费算力，无闲置轮询开销。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">模型分级：</span></strong><span leaf="">平台支持同时配置多个不同量级的评测员（如 Qwen3 用于高精度场景、轻量模型用于快速验证），策略团队可自由组合，高精度任务走重模型，批量验证走轻模型。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">采样精控：</span></strong><span leaf="">评测样本流式分页采样，精确匹配评测所需规模，不做无效全量拉取。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三重机制叠加，使平台在每周支撑百万级 LLM 调用请求，算力利用率极高。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">四</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">业务成效与降本增效实绩</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">得物推荐评测平台上线后的实际业务表现可以概括为以下两点：</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">策略迭代效率呈倍数提升</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过将评测反馈周期从传统的按周计算缩短至小时级，算法同学在当天即可看到实验策略与大盘的真实差距，有力支撑了上线初期推荐策略的高频迭代。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">运营资源投入大幅节省</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在处理同等百万级审计需求时，自动化流水线完全替代了过去的人工评估。单周算力成本极低，相比传统的人工模式节省了 91% 的资源投入，年化潜在节省巨幅人力评测成本。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5722222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062613" src="https://wechat2rss.xlab.app/img-proxy/?k=361416f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsjkbfElnxZl52fF4hzSrCmzItlEeSU1KicX2kHXfPFjgoTb8hO83E0cbchhvqccaWGcYWDqLENJBUvEToDjKjicLZhuicwwt97Rk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">演进路线：从单一评测到全维度的 Agent 自动巡检</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">虽然得物推荐评测平台在上线初期首先聚焦于解决发现性指标的量化难题，但从架构设计的本质来看，这套 AI 自动化评测基建具备更广泛的泛化能力。平台未来的演进将突破单一指标的限制，向两个深度方向纵向延伸：</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">体验评测的多维度泛化</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">发现性评测只是得物推荐评测平台的起点。推荐系统的体验是一个由多维要素交织的复合物，后续平台将逐步解耦并接入更多维度的体验审计能力：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">相关性与类目多样性评测：</span></strong><span leaf="">评估推荐流在保持兴趣相关性的同时，在类目散散度上的表现，防止用户陷入信息茧房。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">时效性与疲劳度审计：</span></strong><span leaf="">实时监控用户高频行为信号的下发反馈速度，并对重复推荐、类目过度疲劳等负反馈体验进行量化评测。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">低质与敏感内容拦截把控：</span></strong><span leaf="">引入图文多模态大模型评测员，对推荐流中的低质封面、标题党以及合规风险进行前置审计。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">走向全天候的 Agent 自动巡检</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当前平台的运行模式主要依赖产研手动触发或例行大盘调度。而得物推荐评测平台的终极形态，是一个具备自主思考和主动防御能力的自动化巡检智能体（Agent）：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">全时段监控：</span></strong><span leaf="">平台将与在线业务日志及 Trace 链路深度联动，无需人工干预，7*24 小时在线上推荐流中进行高频采样。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">主动根因诊断：</span></strong><span leaf="">当巡检 Agent 发现某个 UID 的推荐流中有效发现率突降，或者无效噪音飙升时，将自动激活深度诊断工作流，联动召回、粗排、精排及策略过滤等全链路日志进行溯源。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">闭环预警与干预：</span></strong><span leaf="">在问题引发大盘指标异常之前，智能体将自动梳理出异常 case 的根因报告，并通过内部通道精准推送给策略负责人，甚至在未来实现低风险策略的自动化降级与熔断。</span></p></li></ul></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">六</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">结语</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在过去，由于主观体验无法量化，很多能够带来业务长远增量的策略（例如破圈推荐、泛兴趣引入、长尾类目扶持）因为缺乏即时的指标反馈，往往在实验初期就被墨守成规地放弃了。而得物推荐评测平台的出现，恰恰是把这些看不见的体验变成了可追踪、可量化的数据水位差。通过小时级的反馈闭环，算法同学得以在一片迷雾中看清每一组增量实验的真实方向，从而支撑起整个季度策略的高频迭代。它真正的价值，在于解放了生产力，让团队敢于去探索那些能带来业务突破的无人区。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在信息茧房和推荐黑盒越来越被广泛讨论的今天，做一个推荐算法工程师，很多时候我们不仅在和冷冰冰的点击率、转化率数字赛跑，更是在和真实用户的疲劳感、厌倦感博弈。得物推荐评测平台的诞生，让我们第一次有了一块清晰的后视镜，能够随时看到算法在线上对用户体验带来的微观改变。当 AI 评测员开始全天候辅助我们去审视每一个商品流，去理解每一个用户的潜在兴趣时，我们离那个更健康、更有温度、也更具业务生命力的推荐系统，又近了一步。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">得物推荐评测平台还在持续成长，我们期待与更多探索在推荐一线的技术同行一起，用技术要效率，用评测促增量。</span></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545565&amp;idx=1&amp;sn=2408887769f776089b6421e7bea8657e&amp;scene=21#wechat_redirect" textvalue="从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545826&amp;idx=1&amp;sn=ebb5f57a0094dafcb1c43ac135f1a48b&amp;scene=21#wechat_redirect" textvalue="得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546214&amp;idx=1&amp;sn=1ea66a2621a684b57f05339341dde10f&amp;scene=21#wechat_redirect" textvalue="RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546029&amp;idx=1&amp;sn=bfd40c235e8c5bdbab9acac15aea8bcf&amp;scene=21#wechat_redirect" textvalue="从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545821&amp;idx=1&amp;sn=3234c5ee286b9efa19c14ef3b9a2fb1c&amp;scene=21#wechat_redirect" textvalue="得物 OceanBase 落地实践" data-itemshowtype="0" linktype="text" data-linktype="2">得物 OceanBase 落地实践</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 /水月</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062611" src="https://wechat2rss.xlab.app/img-proxy/?k=b65f64ca&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHv023o6OPsSc1NfhUBF7kjJtqSBvZgr44ib3PYAVtKCicBYCCOebhNBLoxjqz0iaZ4dfMu5ia936gNeMSQHrDCjZnySbjbMgSib0KZo%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=8b5035b8&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546265%26idx%3D1%26sn%3D46de88c503a39ae3a77bd1ab36b85aff">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 27 Jul 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>喜报｜得物算法团队：国际顶会论文录用&amp;荣获AICon明星讲师！</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546220&amp;idx=1&amp;sn=c02ce8a9963f69ae631c14b5faa4d276</link>
      <description>近期，得物算法平台接连传来好消息：社区搜索团队论文被推荐系统领域顶会 RecSys 2026 主赛道录用，两位技术专家在 AICon 2026 全球人工智能大会上荣获明星讲师。</description>
      <content:encoded><![CDATA[<p>原创 <span>得物技术</span> <span>2026-07-24 12:00</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c45eaee2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHseaLJj65GmShiaQ7OGResBFAh16QV0KpeiapeqdlaepSnom6ZABYZp8BR6uodJYrjF45a0TJTbxSNSTxuFAErGfzlAgcakID04w%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>近期，得物算法平台接连传来好消息：社区搜索团队论文被推荐系统领域顶会 RecSys 2026 主赛道录用，两位技术专家在 AICon 2026 全球人工智能大会上荣获明星讲师。</p>
  <p style="text-align: center;" nodeleaf="" data-nest-level="2"><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100040703" data-ratio="0.18232558139534882" data-s="300,640" type="block" data-w="1075" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-nest-level="2" data-pm-slice="0 0 []"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 20px 0px;width: 100%;align-self: flex-start;border-style: solid;border-width: 1px 0px;border-color: rgb(0, 229, 230) rgb(141, 171, 28);padding: 0px 8px;box-sizing: border-box;" data-nest-level="3"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -8px 0px;width: 100%;align-self: flex-start;background-color: rgba(119, 201, 246, 0.09);padding: 25px 22px;border-style: solid;border-width: 0px;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px;width: 100%;box-sizing: border-box;" data-nest-level="5"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;line-height: 1.75;letter-spacing: 1px;width: 100%;box-sizing: border-box;" data-nest-level="6"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">近期，得物算法团队接连收获两项行业重要成果：社区搜索团队的论文被推荐系统领域顶会 RecSys 2026 主赛道录用； AICon 2026 全球人工智能大会两位技术专家获评AICon明星讲师。</span></p></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-left: 4px solid rgb(0, 229, 230);border-right: 4px solid rgb(0, 229, 230);padding: 0px 20px;background-color: rgb(255, 255, 255);box-sizing: border-box;" data-nest-level="6"><div style="text-align: center;font-size: 18px;line-height: 1.75;letter-spacing: 1px;box-sizing: border-box;" data-nest-level="7"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span leaf="" data-nest-level="10">技术研究落地</span></strong></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span leaf="" data-nest-level="10">论文入选 RecSys 2026 顶会</span></strong></p></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;line-height: 1.75;letter-spacing: 1px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">2026 年，得物社区搜索团队结合社区搜索场景的业务特性与真实数据现状，围绕“个性化 Query 改写与检索”方向开展了一系列专项优化工作，有效推动在线业务核心指标实现大幅提升。团队在业务落地之余，利用碎片化时间沉淀实战技术经验，</span><strong style="box-sizing: border-box;" data-nest-level="5"><span style="color: rgb(0, 229, 230);box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">形成论文《SPEAR: Selection-aware Personalized End-to-end Adaptive Rewriting and Retrieval for Community Search》，成功被推荐系统领域顶级会议 RecSys 2026 主赛道录用。</span></span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">本届 RecSys 2026 主赛道竞争十分激烈，共收到 550 篇完整投稿，其中长论文有效投稿 361 篇仅录用 65 篇，</span><strong style="box-sizing: border-box;" data-nest-level="5"><span style="color: rgb(0, 229, 230);box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">录</span></span></strong><strong style="box-sizing: border-box;" data-nest-level="5"><span style="color: rgb(0, 229, 230);box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">取率仅 18%</span></span></strong><span leaf="" data-nest-level="5">。这是得物算法团队在推荐系统国际顶会上的重要突破，也充分印证了得物在社区搜索方向的算法创新能力，获得了学术界与工业界的双重认可。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">文章重点阐述了 SPEAR 技术方案的核心创新：打破传统查询改写与检索分阶段优化的固有范式，构建起从个性化意图理解、智能查询改写到精准内容召回的</span><strong style="box-sizing: border-box;" data-nest-level="5"><span style="color: rgb(0, 229, 230);box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">全链路端到端联合优化体系</span></span></strong><span leaf="" data-nest-level="5">，从技术底层有效提升社区搜索的整体业务效果。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100062542" data-ratio="0.562962962962963" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=7b2fea35&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsuoK9sJKUMOYLrP9AnJa80yPYR42PRCt8uJYicPzVFcn8tIdeHDCTPbCLuv8FLQCF4yncPa7VDZHGQycJc9YdbCMJcCtskZLvk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-left: 4px solid rgb(0, 229, 230);border-right: 4px solid rgb(0, 229, 230);padding: 0px 20px;background-color: rgb(255, 255, 255);box-sizing: border-box;" data-nest-level="6"><div style="text-align: center;font-size: 18px;line-height: 1.75;letter-spacing: 1px;box-sizing: border-box;" data-nest-level="7"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span leaf="" data-nest-level="10">AICon 大会分享 AI 落地经验</span></strong></p></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;line-height: 1.75;letter-spacing: 1px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">2026 AICon 全球人工智能开发与应用大会（上海站）于 6 月 26 日 —6 月 27 日举办。大会聚焦大模型训练推理、AI Agent、前沿研发范式与技术组织革新等前沿方向，</span><strong style="box-sizing: border-box;" data-nest-level="5"><span style="color: rgb(0, 229, 230);box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">得物技术专家登台演讲，对外分享团队在真实业务中沉淀的一线 AI 工程落地经验。</span></span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">得物资深技术专家白忠魏带来演讲</span><strong style="box-sizing: border-box;" data-nest-level="5"><span style="color: rgb(0, 229, 230);box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">《得物推荐 AI Harness - 从 “狂野代码” 到 “按目标生产”》</span></span></strong><span leaf="" data-nest-level="5">。分享围绕让 AI 生成的黑盒代码安全上线这一目标展开，重点讲解如何依托 Harness 体系建设，提升需求周期渗透率与链路 AI 采纳率、缩短全链路迭代时长。演讲结合多项业务实战案例，完整介绍从 PRD 到链路 Harness 的标准化流程与安全围栏搭建、具备工业可用性的混合架构 Agent 方案，以及适配推荐链路特性的 Harness 落地实践。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">得物算法专家任巨伟带来演讲</span><strong style="box-sizing: border-box;" data-nest-level="5"><span style="color: rgb(0, 229, 230);box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">《从 “机械应答” 到 “服务伙伴”：高可控智能客服的 Agent 工程实践》</span></span></strong><span leaf="" data-nest-level="5">。结合得物智能客服由传统工作流过渡至端到端 AI Agent 方案的落地痛点与实践成果，针对客服业务高精准、高复杂度的业务要求，介绍通过模型训练、PE 自动化、人工经验对齐、对话消息流管控搭建高可控客服 Agent 的完整路径。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">二人凭借落地性强、干货丰富的实战分享，</span><strong style="box-sizing: border-box;" data-nest-level="5"><span style="color: rgb(0, 229, 230);box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">共同获评本届 AICon 明星讲师。</span></span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span style="color: rgb(0, 229, 230);box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">本次顶会论文收录与行业技术分享两项成果，是团队立足业务、严谨务实、稳步精进的真实见证。同时也在此恭喜全体参与成员！</span></span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100062541" data-ratio="4.4375" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="jpeg" data-w="1024" src="https://wechat2rss.xlab.app/img-proxy/?k=1f89aa94&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvaW8VsezK4KYVg0m1ZUHvcqLiantTRySt5OswQibWNtibtS1vNa2LbuCoibSKFZrxJIV3PricZPTeFoA18wLvVBfwp0fBLNqDqgChs%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546214&amp;idx=1&amp;sn=1ea66a2621a684b57f05339341dde10f&amp;scene=21#wechat_redirect" textvalue="RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546029&amp;idx=1&amp;sn=bfd40c235e8c5bdbab9acac15aea8bcf&amp;scene=21#wechat_redirect" textvalue="从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545826&amp;idx=1&amp;sn=ebb5f57a0094dafcb1c43ac135f1a48b&amp;scene=21#wechat_redirect" textvalue="得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545821&amp;idx=1&amp;sn=3234c5ee286b9efa19c14ef3b9a2fb1c&amp;scene=21#wechat_redirect" textvalue="得物 OceanBase 落地实践" data-itemshowtype="0" linktype="text" data-linktype="2">得物 OceanBase 落地实践</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545653&amp;idx=1&amp;sn=e7c008cf208a9b5d535349dedc667651&amp;scene=21#wechat_redirect" textvalue="AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术</a></span></p></div></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062568" src="https://wechat2rss.xlab.app/img-proxy/?k=d9a7290f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsJyn8BS46q5GujaHKjHt8Cia2ELc2Vq891bcToic8QbCPqEJibCBQkIYibyFRSB1BtCLkUXyXkyXXyu0qj8nMMGkGCQk4CDYmSMwg%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=1edf7252&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546220%26idx%3D1%26sn%3Dc02ce8a9963f69ae631c14b5faa4d276">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 24 Jul 2026 12:00:00 +0800</pubDate>
    </item>
    <item>
      <title>得物技术部最近出现了几起“越界”事件……</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546215&amp;idx=1&amp;sn=836eac2e716d594a4c4d52a5ffd5ff30</link>
      <description>把“边界”画到问题真正发生的地方：在客服的聊天记录里，在商家的抱怨声中，在用户对着后台一脸茫然的那一刻——因为在为用户真正解决问题这件事上，本身就不被岗位限制。</description>
      <content:encoded><![CDATA[<p>原创 <span>技术达人养成策划</span> <span>2026-07-23 12:00</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=176753c4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtLwzYHWIDia6dRqoKgTXXjKibjPWr6JmEtgR5iaIicMfuWuZqicEvPpQeicOhjN24167fV6iaNe1VPebHaBZ0TcZ3At176zJ7O8fuASw%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>把“边界”画到问题真正发生的地方：在客服的聊天记录里，在商家的抱怨声中，在用户对着后台一脸茫然的那一刻——因为在为用户真正解决问题这件事上，本身就不被岗位限制。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-nest-level="2" data-pm-slice="0 0 []"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;background-color: rgb(245, 245, 245);height: auto;padding: 30px 20px;box-sizing: border-box;" data-nest-level="4"><div style="text-align: justify;box-sizing: border-box;" data-nest-level="5"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="">得物技术部最近出现了几起“越界”事件——</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="">据不完全统计，最近有些研发同学的“越界”行为包括但不限于：放着需求文档不看，先跑去和用户聊几十轮；代码写一半，开始一条一条翻客服工单……</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="">但是同时我们发现，“越界”行为出现的时候，问题就解决得更彻底一点。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="">这种反常背后的真相到底是什么？来看看他们自己怎么说……</span></p></div></div></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.3694444444444445" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062555" src="https://wechat2rss.xlab.app/img-proxy/?k=52e8ffff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtuwy7oX5kLbBBvg3Fia5T9R9J4tmNNrSNIIe4fq6AKI6PzEdCXtvribObhccuDW9rRDoskVnLmruadLbJ2uSgk5f3aJ7baC0ay0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 20px 0% 10px;text-align: center;box-sizing: border-box;" data-nest-level="3"><div style="padding: 3px;display: inline-block;border-bottom: 5px solid rgb(3, 221, 221);color: rgb(3, 221, 221);box-sizing: border-box;" data-nest-level="4"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="5"><span leaf="">【越界实录 <a class="wx_topic_link" topic-id="mrvqx90v-jmn01c" style="color: #576B95 !important;" data-topic="1" data-recommend="">#1</a>】北辰：光看需求，可能不够……</span></p></div></div><div style="font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">北辰2021年校招入职，作为数据开发工程师，他的日常是产品把需求写好了，他负责拆方案、做实现。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">但北辰最近干的事，应该不太符合这个岗位JD写的——他越过了开发的“边界”，把线画到了“好用的标准”上。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">事情要从智链AI平台这个项目说起。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">起初产品的诉求很简单：做一个通用取数平台，先落地，再优化。但北辰觉得“不够”——他没有从需求文档开始，而是先跑去和用户聊了一轮。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">“我们在种子用户群收集了需求，大概拆解了有几十个用户场景”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">几十个用户场景拆完，团队发现——用户真正要的可能不是一个问答工具。绝大多数诉求集中在跨表联查和模糊意图上，需要AI数据资产支撑和意图识别。原来预想的方案，从一开始就有点偏了。团队果断把方案从通用问答调整为结构化意图识别加知识库建设。项目上线后，有用户反馈说“终于不用求资源开发定制报表或者到处去拼数据了”——这句话说明方向对了。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">但方向对了，不代表路好走。在拿到对的结果之前，难免遭到质疑。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">“其他小伙伴听到我们一上来就要做一个通用型Agent的时候，对于实现复杂度和推广层面都有一定的质疑，并善意地建议我们先做定向化的场景。”北辰回忆道，“当时确实会有担心，但是我认为做定向场景和通用Agent之间有很大的差异性，没法做递进优化。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">他选择“先跑小样，用结果说话”。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">“其实也是得益于团队的支持，这种允许我们先跑、出问题再调，而不是等方案完美才开始的氛围，让大家敢于提出&#39;可能不对&#39;的方案。失败的项目带来的经验沉淀，有时候比成功的项目更有价值。”</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">北辰还主动提过一个项目——AI-TAG。让AI帮业务阅读解析用户反馈，基于DIY规则灵活打标——以前业务团队每天要花大量时间人工翻看用户反馈，有了这个工具，几秒钟就能自动标记。上线后，业务团队主动找上门来对接新场景。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">能这样一个个“找问题”而不是“等任务”，说白了是因为这里的问题都来自真实业务——用户反馈、运营痛点、数据需求，每件事都是真有人等着用的。团队也敢放权，校招生也能去碰有难度的东西。有业务压着，有空间试错，自然就敢往前多走一步。</span></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.3694444444444445" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062557" src="https://wechat2rss.xlab.app/img-proxy/?k=3739e52a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtmLjXUD84TxaHYCcMvsReKpXKlGsw8ickReTSZFZAtLaL42XeZgRFzT3pmdNtYlhvtEib3oWabkzsC3Pa3qlQrA8RdDANLgicDBA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 20px 0% 10px;text-align: center;box-sizing: border-box;" data-nest-level="3"><div style="padding: 3px;display: inline-block;border-bottom: 5px solid rgb(3, 221, 221);color: rgb(3, 221, 221);box-sizing: border-box;" data-nest-level="4"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="5"><span leaf="">【越界实录 <a class="wx_topic_link" topic-id="mrvqx90v-499t89" style="color: #576B95 !important;" data-topic="1" data-recommend="">#2</a>】</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="5"><span leaf="">东方朔：一个后端研发工程师，却潜入了商家运营群</span></p></div></div><div style="color: rgb(0, 0, 0);font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">东方朔21年校招入职，写Java的。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">但他最近写着写着，不知不觉潜入了商家运营群……</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">事情要从商家AI助手项目说起。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">刚开始，他只是负责实现对话接口、知识库检索。但他越来越觉得不对劲。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">“我发现，我们做的东西好像不是商家真正想要的。”</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">东方朔没有等需求文档更新，而是自己去找了产品和运营同学。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">“其实就是去问他们：商家到底在烦什么？他们每天问得最多的问题是什么？”</span></p><p data-pm-slice="0 0 []"><span data-eleid="13" style="white-space:pre-wrap;"><span style="white-space:pre-wrap;"><span leaf="">几轮聊下来，他拼出了一个之前在需求文档里看不到的画面：不少商家在入驻和日常</span></span><span style="white-space:pre-wrap;"><span leaf="">运营</span></span><span style="white-space:pre-wrap;"><span leaf="">中，会遇到保证金缴纳、商品审核、入驻流程等高频问题，且这些问题反复出现、需要重复咨询。与此同时，客服每天都要处理大量类似的重复问询。</span></span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">“为了摸清楚，大家各自分工，一条一条翻商家客服工单。很快我们就发现，我们要做的根本不是一个回答问题的机器人，而是一个能真正帮商家解决问题的&#39;智能伙伴&#39;。”</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">东方朔提出用AI助手自动解答这些常见问题。但问题是——他对AI大模型并不熟悉。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">那段时间，他把技术部组织的AI培训吃了个透，从LLM基本原理到Prompt工程，一周内啃了大量论文和技术文档。有个概念让他印象特别深——Harness。培训中用“都江堰”来类比：AI大模型的能力就像岷江之水，水量浩大，但如果不加引导就会泛滥；Harness的作用就像都江堰，通过规则、分流与反馈闭环，将算力引导到正确的轨道上。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">“这个类比让我恍然大悟。”东方朔意识到，关键不是让AI直接输出答案，而是先搭一套规则框架，把AI的推理约束在正确的轨道上。他和团队花了几周时间，一条一条调优知识库——把客服工单里最高频的上百个问题逐条清洗、分类、建立应答逻辑。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">项目上线后，其中一个功能“商家成长路径”——根据商家的入驻阶段和业务规模，智能推荐他们需要学习的内容——自动解答了60%的常见问题，客服压力减少30%，新商家上手时间缩短50%。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">“看到结果符合预期的时候挺开心的，运营那边也给了很多正反馈。”</span></p><p data-pm-slice="0 0 []"><span data-eleid="24" style="white-space:pre-wrap;"><span style="white-space:pre-wrap;"><span leaf="">但回头看，这条路走得其实没那么顺。当东方朔提出加入&#39;智能推荐&#39;功能时，团队内部也讨论过如何保证推荐内容的准确性和可靠性。东方朔的想法也很简单：&#39;这块必须做扎实，所以我们提前</span></span><span style="white-space:pre-wrap;"><span leaf="">设计</span></span><span style="white-space:pre-wrap;"><span leaf="">了验证机制。</span></span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">团队用一周时间搭了原型，小范围试跑。当然也踩了几个坑——冷启动推不准、信息茧房越推越窄。不过好在部门有灰度发布体系，出问题能快速回滚并解决。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="">这种“先跑小样，用结果说话”的方式，后来在很多项目中都被反复验证。同样的“越界”，一遍又一遍地出现，每越一次，边界就扩大一点，问题就解决得更彻底一点。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;background-color: rgb(245, 245, 245);height: auto;padding: 30px 20px;box-sizing: border-box;" data-nest-level="4"><div style="text-align: justify;font-size: 14px;box-sizing: border-box;" data-nest-level="5"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="">看来，得物技术部最近出现的“越界”事件——并非真的“越界”，只是适时地“向前一步”。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="">把“边界”画到问题真正发生的地方：在客服的聊天记录里，在商家的抱怨声中，在用户对着后台一脸茫然的那一刻——因为在为用户真正解决问题这件事上，本身就不被岗位限制。</span></p></div></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;" data-nest-level="4"><div style="margin: 10px 0px -53px;box-sizing: border-box;" data-nest-level="5"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;" data-nest-level="6"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="6"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="7"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;" data-nest-level="9"><strong style="box-sizing: border-box;" data-nest-level="10"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;" data-nest-level="5"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;" data-nest-level="4"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;" data-nest-level="5"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" data-nest-level="6" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062556" src="https://wechat2rss.xlab.app/img-proxy/?k=c7020a9f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtPR4NVLwNvGtonFQexibS7k6u4bZXACP4BWm3cfuNtSashjWUiarXxiczXMHGdjS48q16libtNe7MBHAI9szYDlg4OeibibYHs3VfE8%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=8f1b48eb&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546215%26idx%3D1%26sn%3D836eac2e716d594a4c4d52a5ffd5ff30">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 23 Jul 2026 12:00:00 +0800</pubDate>
    </item>
    <item>
      <title>RAG 核心概念与原理：Chunking、Embedding、相似度、HNSW 与多路召回｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546214&amp;idx=1&amp;sn=1ea66a2621a684b57f05339341dde10f</link>
      <description>决定 RAG 效果的关键不在大模型，而是文本切块、查询改写、多路召回与精排。合理切块存好知识库内容，向量匹配抓语义、BM25 匹配关键词互补。先优化用户提问，快速召回一批相关文档，再用精排模型精细筛选，整套检索流程配合到位，问答准确度才会明显提升。</description>
      <content:encoded><![CDATA[<p>原创 <span>羊羽</span> <span>2026-07-22 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=aa02a5b0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHutiaicgcSswSPlng8QINzkBXGNwCEdB4NVB4PQun9zBYpnjq0P7GHRy42QqqQx3kS6g6Hdw8c1I1hzfiaVMUAhfEgQmHgDRcIHho%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>决定 RAG 效果的关键不在大模型，而是文本切块、查询改写、多路召回与精排。合理切块存好知识库内容，向量匹配抓语义、BM25 匹配关键词互补。先优化用户提问，快速召回一批相关文档，再用精排模型精细筛选，整套检索流程配合到位，问答准确度才会明显提升。</p>
  <p style="text-align: center;" nodeleaf="" data-nest-level="2"><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100040703" data-ratio="0.18232558139534882" data-s="300,640" type="block" data-w="1075" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-nest-level="2" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;" data-nest-level="3"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;" data-nest-level="4"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;" data-nest-level="5"><div style="margin: 8px 0px 0px;box-sizing: border-box;" data-nest-level="6"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;" data-nest-level="7"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><strong style="box-sizing: border-box;" data-nest-level="9"><span leaf="" data-nest-level="10">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;" data-nest-level="6"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="7"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">一、为什么需要 RAG —— LLM 的先天局限</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    1.知识从哪来</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    2.RAG 的流水线：离线存、在线搜</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">二、Embedding：把文本变成可计算的数据</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    1.从&#34;搜字面&#34;到&#34;搜意思&#34;</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    2.什么是向量</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    3.什么是 Embedding</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    4.Embedding 模型是怎么练出来的</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    5.Dense vs Sparse：两种向量，两种能力</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">三、Chunking：知识怎么切</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    1.为什么要切</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    2.切块策略</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    3.总结</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">四、相似度：怎么衡量&#34;像不像&#34;</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    1.余弦相似度：最主流的选择</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    2.其他度量的简要对比</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    3.一个具体的例子</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">五、HNSW：从百万向量中快速找到最相似的</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    1.暴力搜索为什么不行</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    2.核心洞察：跳表 × 可导航小世界图</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    3.分层图长什么样</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    4.图是怎么建起来的：写路径</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    5.图是怎么搜的：读路径</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    6.三个关键参数</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">六、检索的完整链路：从查询到精排</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    1.Query Rewrite：用户不会提问怎么办</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    2.元数据过滤：第一道闸门</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    3.两路互补，各有盲区</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    4.为什么不用原始分数直接加</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    5.RRF：不拼分数拼排名</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">    6.Rerank：粗筛之后，再精排一次</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">七、总结</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;" data-nest-level="4"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="7"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;" data-nest-level="8"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;" data-nest-level="9"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="10"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;" data-nest-level="11"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;" data-nest-level="12"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="13"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="14"><strong style="box-sizing: border-box;" data-nest-level="15"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;" data-nest-level="8"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;" data-nest-level="9"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="10"><strong style="box-sizing: border-box;" data-nest-level="11"><span leaf="" data-nest-level="12">为什么需要 RAG —— LLM 的先天局限</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">向 ChatGPT 询问企业内部系统相关问题，常会出现这样的情况：它给出一段看似逻辑通顺、实则完全错误的回答，不少人都遇到过类似状况。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">写代码时若提问 “这个框架的 v2.3 版本 API 怎么用”，它提供的却是早已淘汰的 v1.x 写法；若询问「公司内部优惠券系统的退款流程是什么」，它会凭空编造一套流程。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">LLM 的核心缺陷可归纳为三点：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">训练数据存在时间截止日期：</span></strong><span leaf="" data-nest-level="5">GPT-4 的知识停留在训练完成的那一刻，无法知晓之后发生的新内容。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">遇到知识盲区会产生 “幻觉”：</span></strong><span leaf="" data-nest-level="5">不会如实回复 “我不知道”，而是强行编造一段看似合理的回答。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">无法识别企业私有知识：</span></strong><span leaf="" data-nest-level="5">内部文档、代码库、业务规则、团队约定，这类内容不会出现在公开训练数据中。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5"><span textstyle="" style="font-weight: bold;">RAG（Retrieval-Augmented Generation，检索增强生成）</span></span><span leaf="" data-nest-level="5">正是用来解决以上问题的，思路十分朴素：让 LLM 先检索资料，再结合检索内容给出回答。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">用户提问 → 检索相关的外部信息 → 把信息塞进 prompt → LLM 基于信息回答</span></code></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">这就把 LLM 从 &#34;闭卷考试&#34; 变成了 &#34;开卷考试&#34;—— 给出题范围，照着答就行。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">注意上面的标注，我写的是「检索相关的外部信息」，没写「从知识库里检索」。因为 RAG 本质上做的是<span textstyle="" style="font-weight: bold;">扩充 LLM 的推理上下文</span>，检索的内容可以是任何来源：一份 PDF 文件、一段聊天记录、一条搜索结果、一个网页链接。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">RAG 是那根吸管，检索源是杯子里的水。杯子可以是知识库（文档集合），可以是搜索引擎（互联网），也可以是单个文件。吸管和杯内的内容相互独立。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">很多人将 RAG 等同于「搭建知识库问答系统」，这是一种片面的狭义理解。不过在实际落地场景中，最常见、价值最高的组合确实是 RAG + 知识库，因此下文我们将围绕这条主线展开说明。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">知识从哪来</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">RAG 要检索知识库，那知识库里装的到底是什么？换个问法 —— 一个组织里的「知识」到底存在哪？其实可以分为两类：静态共享知识和动态个人记忆。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">静态共享知识</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">静态共享知识是一个团队共享的、相对稳定的信息。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">企业文档：</span></strong><span leaf="" data-nest-level="5">飞书文档、Confluence、Notion、Google Docs 里的产品文档、技术方案、会议纪要、复盘报告。这些是结构最完整、最容易检索的知识。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">代码仓库：</span></strong><span leaf="" data-nest-level="5">Git 仓库里的源码、README、API 文档、变更日志。比如问「这个微服务怎么接入统一鉴权」，答案可能在某个仓库的 README 里。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">聊天记录：</span></strong><span leaf="" data-nest-level="5">Slack、飞书群聊、钉钉里的技术讨论。比如「上次那个 NPE 是谁修的？怎么修的？」—— 答案可能在三个月前的群聊记录里。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">规章制度：</span></strong><span leaf="" data-nest-level="5">HR 系统里的考勤规则、报销流程、假期政策。这些内容调性固定，提问方式也明确。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">动态个人记忆</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">还有一种内容，RAG 的传统定义里很少提及，但它对使用体验影响巨大 —— 用户个人的偏好、习惯、历史行为。举个例子：张三每次问「帮我写个接口」，表述都一致，但他想要的是 Go + Gin 风格的接口，而李四需要的是 Java + Spring Boot。这并非文档中写明的规范，而是张三自身的技术偏好。再比如客服场景：用户上次反馈过「页面加载太慢」，这次又问「还是卡」，系统需要识别「还是」指代此前的问题，而非当作全新问题处理。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">这就是记忆（Memory）</span></strong><span leaf="" data-nest-level="5">—— 千人千面、随时间变化的动态知识。和文档「同一份内容对所有人可见」不同，记忆是「每位用户拥有专属独立存储」。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">静态共享知识与动态个人记忆，二者均依靠检索匹配相关内容，但记忆还额外存在三类工程难题：主体归属（记忆归属用户判定）、冲突判定（新旧记忆存在矛盾时的取舍逻辑）、生命周期管理（偏好长期有效，但「最近在学 Rust」这类短期状态可能次月失效）。本文以知识库为主线展开讲解，记忆相关工程落地细节将单独撰文说明。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">RAG 的流水线：离线存、在线搜</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">RAG 的流水线分两段。以下以知识库场景为例展开，记忆检索架构类似，差异主要在存取策略，后续另文讨论。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">离线阶段做的事：把知识库里的文档切成段落，每个段落用 Embedding 模型算一个向量，存进向量数据库。这一步平时跑、预计算准备好，查询时不用等。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">文档 → 切段（Chunking）→ Embedding（向量化）→ 索引写入（存入向量库）</span></code></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">在线阶段：用户提问→问题向量化→向量搜索 Top-K 相关文档→把文档和问题一起塞给 LLM→LLM 生成答案。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">（简化版）用户问题 → Embedding → Recall（ANN + BM25）→ RRF 融合 → Rerank 精排 → LLM 生成答案</span></code></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">完整链路还包括 Query Rewrite 和 Metadata Filter，后文有展开。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="css"><code><span leaf="">Query Rewrite → Metadata <span class="code-snippet__attribute">Filter</span> → Recall（ANN + BM25）→ RRF 融合 → Rerank 精排 → LLM 生成答案</span></code></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">RAG 好不好用，关键不在 LLM，而是在于「搜得准」。检索回来的东西不对，LLM 再强也是垃圾进垃圾出。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">所以要解决的问题其实是：怎么搜才能搜到意思相近 “而不仅仅是” 字面匹配的内容？</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;" data-nest-level="4"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="7"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;" data-nest-level="8"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;" data-nest-level="9"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="10"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;" data-nest-level="11"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;" data-nest-level="12"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="13"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="14"><b style="box-sizing: border-box;" data-nest-level="15"><span leaf="">二</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;" data-nest-level="8"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;" data-nest-level="9"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="10"><strong style="box-sizing: border-box;" data-nest-level="11"><span leaf="" data-nest-level="12">Embedding：把文本变成可计算的数据</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">要搜&#34;意思&#34;，先得让计算机能&#34;算&#34;意思。计算机只认识 0 和 1，它不知道怎么比&#34;意思像不像&#34;。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">Embedding 做的事就是把文本变成向量，让语义相似度变成一个数学计算问题。</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">回头看 RAG 的流水线，离线阶段的 Embedding 和在线阶段的 Embedding 是同一件事——把文本映射到向量空间，然后在那个空间里找最近的邻居。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">从&#34;搜字面&#34;到&#34;搜意思&#34;</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">传统数据库搜索，就是字面匹配。用 SQL </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">LIKE &#39;% 编程语言 %&#39;</span></span><span leaf="" data-nest-level="5"> 搜：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="javascript"><code><span leaf="">✅ <span class="code-snippet__string">&#34;用户的编程语言是 Go&#34;</span>          → 命中，因为出现了<span class="code-snippet__string">&#34;编程语言&#34;</span>四个字</span></code><br/><code><span leaf="">❌ <span class="code-snippet__string">&#34;用户写 Go 和 Python&#34;</span>          → 漏掉，没出现<span class="code-snippet__string">&#34;编程语言&#34;</span>，但意思完全相关</span></code><br/><code><span leaf="">❌ <span class="code-snippet__string">&#34;用户的技术栈是 Go&#34;</span>             → 漏掉，同样语义相关但字面不同</span></code><br/></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">这就像你去图书馆查资料，管理员只能按书名里的字一个个对 —— 你搜 “编程”，他找不到书名里写的是 “Coding” 的书。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">要让计算机理解 “意思”，需要一种全新的数据表示方式</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6"> ——Embedding（向量嵌入）。</span></strong></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">什么是向量</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">向量就是一组有序的数字，也是线性代数里的列向量 —— 只不过维度从二、三维变成了几百上千维（主流 Embedding 模型常见的有 768、1024、1536 维）。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">[3.0, 4.0] 是二维向量，[0.12, -0.34, 0.07] 是三维向量。向量的价值在于<span textstyle="" style="font-weight: bold;">可以用数学来比较</span> —— 两个向量越 “接近”，就说明它们代表的东西越相似。至于 “接近” 怎么算，后面讲相似度时展开。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">在 RAG 里，“向量” 指的是把文本转换后得到的一串浮点数，比如 1536 个维度：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="javascript"><code><span leaf=""><span class="code-snippet__string">&#34;用户喜欢川菜&#34;</span> → [<span class="code-snippet__number">0.21</span>, -<span class="code-snippet__number">0.43</span>, <span class="code-snippet__number">0.07</span>, <span class="code-snippet__number">0.85</span>, ..., -<span class="code-snippet__number">0.12</span>]  ← <span class="code-snippet__number">1536</span> 个数字</span></code></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">文本变成向量之后，“这两句话意思像不像” 就变成了 “这两个向量距离近不近”—— 从语言问题变成了数学问题，计算机才能处理。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">那谁来决定一段文字应该变成什么向量？这就是 Embedding 模型的工作。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">什么是 Embedding</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Embedding 就是把一段文本变成向量空间中的一个点 —— 但这背后的核心是一个训练好的专用模型在起作用。它不是简单的 “每段文字随机生成一个数组”。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">整个流程是这样的：一段文本输入 Embedding 模型，模型经过内部神经网络计算，输出一个固定维度的向量。这个向量的每一维都是一个浮点数，合在一起表示了文本的语义特征。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">关键是 —— 这个模型是专门训练过做</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">语义对齐</span></strong><span leaf="" data-nest-level="5">的。它知道 “川菜” “辣”和“火锅” 在语义上是同一个圈子的东西，会把它们在向量空间中放得很近。它也知道 “川菜” 和 “今天下雨了” 毫无关系，会把它们放得很远。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">换句话说，Embedding 模型做的是</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">语义向量化</span></strong><span leaf="" data-nest-level="5"> —— 把人类语言里模糊的 “意思像不像”，转成向量空间里精确的 “距离近不近”。这个转化一旦完成，语义搜索就变成了一个纯数学操作 —— 算两个向量之间的距离就行了。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">拿二维向量来理解原理。虽然真实模型输出的是 1024 或 1536 维，但在二维平面上一目了然【注：文中 AI 生成的示意图，细节失真，但是会意即可】：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6388888888888888" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062524" src="https://wechat2rss.xlab.app/img-proxy/?k=62815ed1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuJLPTUudEXDTLVlKWpOb0PMRRgeqFcAdibtQ3OL08BXV7ZIwdYmsXAn6o9oyVrnOv3A4PxE0tvq0xO8PClQyh1HeuR4tsZ2VDk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">“用户喜欢川菜” 和 “爱吃辣的” 挨得很近 —— 模型学会了 “川菜” 和 “辣” 语义相关。“今天下雨了” 跟它们八竿子打不着，被放到了完全不同的位置。</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">搜索的时候同理：把查询文本也送进同一个模型算出向量，然后找离它最近的几个邻居。比如搜 “爱吃重口味的”，模型映射到 (3.2, 3.5) 附近 —— 离 “川菜” 和 “辣” 都很近，结果就回来了。</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">所以 Embedding 的魔法不在于向量本身，而在于那个训练好的模型 —— 它知道什么样的文本应该靠在一起。那模型是怎么学会这个能力的？</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">Embedding 模型是怎么练出来的</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">训练方式叫</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">对比学习（Contrastive Learning）</span></strong><span leaf="" data-nest-level="5">。想象你拿着一个遥控器，上面有两个按钮 ——「靠近」和「远离」：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2953703703703704" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062526" src="https://wechat2rss.xlab.app/img-proxy/?k=44c0df83&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsHr4MQahvlR2m57RteYemiaXFS9pK9D13LTUxlmjn4dniaTCxnRnoava2NVQTWm0ZkVLGb41YJiceY6dLtJ85L8t2sIicGiaWOsJDM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">每一轮模型都在根据信号微调自己的参数。拉近正例让它学会 “这两句话意思相关”，推远负例让它学会 “这两句话不相关”。几十亿轮下来，模型就内化了语言的语义关系 —— 不用人告诉它 “川菜” 和 “辣” 是什么关系，它自己从海量训练数据里归纳出来了。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">这跟我们学语言有点像 —— 没人跟你解释 “开心” 和 “快乐” 是同义词，你是在无数次看到它们出现在相似上下文中自然学会的。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">训练数据的来源，说到底就是把互联网上天然存在的关联信号收集起来 —— 搜索引擎的点击日志（用户搜了什么最终点了哪个结果）、问答社区的采纳记录、平行语料（同一内容的中英版本），再加上 LLM 合成一些。总之就是给模型无限的「这道题对、这道题错」的反馈。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">这也决定了 Embedding 的局限：</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">模型只在训练语料覆盖的领域有效</span></strong><span leaf="" data-nest-level="5">。英文模型搜中文会劣化，通用模型搜医疗术语会不准。用哪个模型，取决于你的数据是什么领域、什么语言。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">主流 Embedding 模型：</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24814814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062525" src="https://wechat2rss.xlab.app/img-proxy/?k=7ac9d3a1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsV4phnkQ7YSKajicZsYzuXLCq4RxRxO4Lx2PO5uiaeZ8tIxibM8F86FiciczTFgSLqBV2Hc4x8ZofwASfGCrdzOSMAD7yiauYPwKmUA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">这里有个常见误区值得说清楚——</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">Embedding 模型和 GPT、Claude 这类大语言模型不是一回事</span></strong><span leaf="" data-nest-level="5">，虽然底层都是 Transformer，但目标和结构截然不同：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2972222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062527" src="https://wechat2rss.xlab.app/img-proxy/?k=8ef55c87&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHstHdP4cpgcxicicqVdb4Oic0miceWBZAlFlC6lgZPTlJpmlvp1Jiarl0dQgZhHvkn886YBKAvwXbIcW9RtjfmMY8xckllwQB9L8gdo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Embedding 模型做的是</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">压缩</span></strong><span leaf="" data-nest-level="5"> —— 把一段文字的语义浓缩进一个向量；LLM 做的是</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">生成</span></strong><span leaf="" data-nest-level="5"> —— 根据上下文一步步吐出文字。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">在 RAG 流水线里两者各司其职：Embedding 模型负责离线向量化和在线 query 向量化，LLM 负责最后根据检索结果生成答案。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">Dense vs Sparse：两种向量，两种能力</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">知道了模型怎么训练，再回头看它产出的向量。Embedding 模型最常见的产出是 Dense 向量，但向量实际上有两种截然不同的形态，它们搜的东西不一样，不是替代关系而是互补关系。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">Dense（稠密向量）：</span></strong><span leaf="" data-nest-level="7">每个维度都有值，比如 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">[0.12, -0.34, 0.07, ...]</span></span><span leaf="" data-nest-level="7"> × 1536 维。搜 “数据库连接池” 能命中 “DB connection pool 配置”—— 文字完全不同，但意思一样。弱点是专有名词和编码不敏感 —— 搜 “SLB-20250101-abc” 这种 trace ID，语义向量帮不上忙。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">Sparse（稀疏向量）：</span></strong><span leaf="" data-nest-level="7">只有少数维度有值，比如 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">{词 ID_1523: 2.4, 词 ID_8912: 1.7}</span></span><span leaf="" data-nest-level="7">。每个维度对应一个词，搜 “SLB” 精确命中所有含 “SLB” 的文档。弱点是换词就搜不到 ——“数据库” 和 “DB” 是完全不同的维度。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">类比一下，Dense 搜的是 “意思”，Sparse 搜的是 “字面”。一个好的搜索系统需要两者配合。【注：这里的 Sparse 向量（如 SPLADE）和下文的 BM25 不是一回事。Sparse 向量是 Embedding 模型的一种输出形态；BM25 是统计算法，不产生向量，走倒排索引 ——Lucene、Elasticsearch 的默认打分公式就是它。两者干的活类似（都抓关键词匹配），本文以 BM25 为代表讲解，不展开 Sparse 向量。】</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Embedding 搞定了向量的产出，但送进模型的 “一段文本” 到底多长？怎么切？这就是下一章要聊的 Chunking。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;" data-nest-level="4"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="7"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;" data-nest-level="8"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;" data-nest-level="9"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="10"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;" data-nest-level="11"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;" data-nest-level="12"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="13"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="14"><b style="box-sizing: border-box;" data-nest-level="15"><span leaf="">三</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;" data-nest-level="8"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;" data-nest-level="9"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="10"><strong style="box-sizing: border-box;" data-nest-level="11"><span leaf="" data-nest-level="12">Chunking：知识怎么切</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">文章开始的流水线里提到了 “切段（Chunking）”，但没展开。这一步其实很关键 —— 很多 RAG 项目效果差，根本原因不是 Embedding 模型不行，也不是向量库选错了，而是切块策略没做好。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">为什么要切</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">直接把整篇文档送进 Embedding 模型，不就行了吗？想法很自然，但现实有 3 道坎。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">Embedding 模型有输入长度上限。</span></strong><span leaf="" data-nest-level="7">主流模型最大支持 512 到 8192 Token，部分模型（如 e5-mistral-7b）已支持 32k 以上，但一份产品文档动辄几万字，塞满了也是问题。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">即使模型能处理超长文本，语义稀释也会让检索效果大打折扣。</span></strong><span leaf="" data-nest-level="7">一篇 50 页的产品文档讲了几十个功能点，Embedding 模型算出来的向量就成了这几十个功能的 “平均值”。这个平均值跟任何一个具体功能都不够接近 —— 用户搜 “退款多久到账”，向量表示里退款只占了几十分之一，检索根本抓不住。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">即使检索回来了，送给 LLM 的内容也不该是整篇文档</span></strong><span leaf="" data-nest-level="7">。LLM 的上下文窗口有限，把整篇文档塞进去既浪费 token，也会稀释真正相关的内容 ——LLM 需要的是精准的段落，不是海量的原文。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">所以必须把文档切成粒度合适的段落，每个段落单独向量化，查询时匹配最相关的若干段。那切多大合适？这是个两难。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">切得太碎 —— 上下文断裂，答案可能被腰斩。</span></strong><span leaf="" data-nest-level="7">比如一份退款规则文档，用户问 “退款多久到账”，答案在文档中间。如果按固定长度机械切分，答案恰好横跨两个 Chunk 的边界，检索时两个 Chunk 各抓一半，谁都答不全。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">切得太大 —— 回到语义稀释的问题。</span></strong><span leaf="" data-nest-level="7">一个 Chunk 塞进 2000 Token，覆盖了三四个主题，向量又变成 “平均值”，precision 下降。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">打个比方：一本书的目录如果只列到章（太粗），搜某个小节的具体内容肯定找不到；如果精细到每个自然段（太碎），搜的时候又容易丢失上下文。好的切块策略就是在两个极端之间找到合适的粒度。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">搞清楚为什么切，下面看几种常见的策略。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">切块策略</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">固定长度切块 + 滑动窗口</span></strong></p></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">最朴素的做法是固定长度切块（Fixed Chunk）—— 每 500 Token 一个 Chunk，简单粗暴。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="makefile"><code><span leaf=""><span class="code-snippet__section">文档: [0..500] [501..1000] [1001..1500] ...</span></span></code></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">优点：实现简单，速度快。缺点：容易在句子中间切断，破坏语义完整性。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">改进方案是滑动窗口（Sliding Window）——Chunk 之间有重叠：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="apache"><code><span leaf=""><span class="code-snippet__attribute">Chunk</span> <span class="code-snippet__number">1</span>:<span class="code-snippet__meta"> [0..500]</span></span></code><br/><code><span leaf=""><span class="code-snippet__attribute">Chunk</span> <span class="code-snippet__number">2</span>:<span class="code-snippet__meta"> [300..800]    ← 跟前一个重叠 200</span></span></code><br/><code><span leaf="">Chunk 3: [600..1100]   ← 继续重叠</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">重叠区域让跨边界的句子至少能完整出现在某一个 Chunk 里，大幅减少信息丢失。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">语义切块</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">更进一步，按文档的</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">自然结构</span></strong><span leaf="" data-nest-level="5">来切——标题、段落、小节：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="shell"><code><span leaf=""><span class="code-snippet__meta">#</span><span class="code-snippet__comment"># 退款规则          ← 按标题切</span></span></code><br/><code><span leaf="">  段落1...           ← Chunk 1</span></code><br/><code><span leaf="">  段落2...           ← Chunk 2</span></code><br/><code><span leaf=""><span class="code-snippet__meta">#</span><span class="code-snippet__comment"># 退货规则          ← 新标题，新 Chunk</span></span></code><br/><code><span leaf="">  段落3...           ← Chunk 3</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">语义切块保持了每个 Chunk 的语义完整性，不会出现 “句子被腰斩” 的情况。但需要文档本身有结构（Markdown 标题、HTML 标签等），纯文本就不好使了。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">Parent-Child Chunk</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">现代 RAG 系统里更常见的做法是 </span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">Parent-Child Chunk</span></strong><span leaf="" data-nest-level="5">：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="nginx"><code><span leaf=""><span class="code-snippet__attribute">Parent</span> Chunk（大块，保留完整上下文）</span></code><br/><code><span leaf="">    ├── Child Chunk <span class="code-snippet__number">1</span>（小块，用于检索）</span></code><br/><code><span leaf="">    ├── Child Chunk <span class="code-snippet__number">2</span></span></code><br/><code><span leaf="">    └── Child Chunk <span class="code-snippet__number">3</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">检索时用 Child 去搜 —— 小块粒度细，召回率高；返回时把 Parent 塞给 LLM—— 大块上下文完整，LLM 能理解全貌。兼顾了召回率和上下文完整性。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">总结</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">没有银弹，选哪种取决于文档类型和场景。关键结论就两条：切太小丢上下文，切太大语义稀释。实际项目中固定长度 + 滑动窗口是性价比最高的起点，语义切块和 Parent-Child 按需叠加。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">另外，即使 LLM 的上下文窗口越来越大，也不意味着可以把检索到的 Chunk 无脑全塞进去。研究发现 LLM 对上下文中间部分内容的关注度往往最低（Lost in the Middle 现象）——更多上下文并不一定带来更好的效果。控制好 Chunk 数量，把最相关的放在最前面或最后面，比堆量更重要。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Chunk 切好了，Embedding 也产出了向量。下一个问题：</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">两个向量之间，怎么比“像不像”？</span></strong></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;" data-nest-level="4"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="7"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;" data-nest-level="8"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;" data-nest-level="9"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="10"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;" data-nest-level="11"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;" data-nest-level="12"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="13"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="14"><strong style="box-sizing: border-box;" data-nest-level="15"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;" data-nest-level="8"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;" data-nest-level="9"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="10"><strong style="box-sizing: border-box;" data-nest-level="11"><span leaf="" data-nest-level="12">相似度：怎么衡量&#34;像不像&#34;</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Embedding 把文本变成了向量，接下来要解决的就是：给定两个向量，用什么度量算法衡量相似程度。常用的有三种：余弦相似度、欧氏距离、点积。其中余弦相似度是绝对主流。下面逐一过一遍。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">余弦相似度：最主流的选择</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">最常用的是</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">余弦相似度（Cosine Similarity）</span></strong><span leaf="" data-nest-level="5">，它比的是两个向量的方向有多接近：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cpp"><code><span leaf=""><span class="code-snippet__built_in">cos</span>(θ) = (A · B) / (|A| × |B|)</span></code></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">值域在 [-1, 1]，1 表示方向完全一致，0 表示正交（无关），-1 表示完全相反。实践中 Embedding 模型产出的向量余弦相似度通常落在 [0, 1] 区间，真正出现负值的情况极少。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">为什么是余弦相似度而不是别的？因为 Embedding 模型在训练时就是用余弦相似度来优化的 —— 你用别的度量去比，相当于考试的评分标准都换了，成绩自然不准。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">其他度量的简要对比</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">欧氏距离（Euclidean Distance）：</span></strong><span leaf="" data-nest-level="5">衡量的是两个点在空间中的直线距离，受向量长度影响大。两个意思相同但长度不同的向量，欧氏距离可能很大但余弦相似度很高。通常不优先选用。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">点积（Dot Product）：</span></strong><span leaf="" data-nest-level="5">当向量已经做了 L2 归一化（长度为 1）时，点积就等于余弦相似度。如果向量已归一化，用点积效率更高。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">一句话建议：<span textstyle="" style="font-weight: bold;">不确定用哪个，就用</span></span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">余弦相似度</span></strong><span leaf="" data-nest-level="5">。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">一个具体的例子</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">概念讲多了容易飘，拿两个二维向量手算一遍就清楚了。假设我们有两条文本的向量（降维到 2D 方便看）：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="ini"><code><span leaf=""><span class="code-snippet__attr">A</span> = [<span class="code-snippet__number">3</span>, <span class="code-snippet__number">4</span>]    ← <span class="code-snippet__string">&#34;今天天气真好&#34;</span></span></code><br/><code><span leaf=""><span class="code-snippet__attr">B</span> = [<span class="code-snippet__number">3.5</span>, <span class="code-snippet__number">3.8</span>] ← <span class="code-snippet__string">&#34;外面阳光明媚&#34;</span></span></code><br/><code><span leaf=""><span class="code-snippet__attr">C</span> = [-<span class="code-snippet__number">1</span>, <span class="code-snippet__number">0</span>]   ← <span class="code-snippet__string">&#34;电脑坏了怎么办&#34;</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">余弦相似度：</span></strong><span leaf="" data-nest-level="5">比的是方向。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="cpp"><code><span leaf=""><span class="code-snippet__built_in">cos</span>(A, B) = (<span class="code-snippet__number">3</span>×<span class="code-snippet__number">3.5</span> + <span class="code-snippet__number">4</span>×<span class="code-snippet__number">3.8</span>) / (√(<span class="code-snippet__number">9+16</span>) × √(<span class="code-snippet__number">12.25+14.44</span>))</span></code><br/><code><span leaf="">          = (<span class="code-snippet__number">10.5</span> + <span class="code-snippet__number">15.2</span>) / (<span class="code-snippet__number">5</span> × <span class="code-snippet__number">5.17</span>)</span></code><br/><code><span leaf="">          = <span class="code-snippet__number">25.7</span> / <span class="code-snippet__number">25.85</span></span></code><br/><code><span leaf="">          ≈ <span class="code-snippet__number">0.99</span>  ← 几乎方向一致，意思相近</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf=""><span class="code-snippet__built_in">cos</span>(A, C) = (<span class="code-snippet__number">3</span>×(<span class="code-snippet__number">-1</span>) + <span class="code-snippet__number">4</span>×<span class="code-snippet__number">0</span>) / (<span class="code-snippet__number">5</span> × <span class="code-snippet__number">1</span>)</span></code><br/><code><span leaf="">          = <span class="code-snippet__number">-3</span> / <span class="code-snippet__number">5</span></span></code><br/><code><span leaf="">          = <span class="code-snippet__number">-0.6</span>  ← 方向差很多，意思不相关</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">欧氏距离：</span></strong><span leaf="" data-nest-level="5">比的是直线距离。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="apache"><code><span leaf=""><span class="code-snippet__attribute">dist</span>(A, B) = √((<span class="code-snippet__number">3</span>-<span class="code-snippet__number">3</span>.<span class="code-snippet__number">5</span>)² + (<span class="code-snippet__number">4</span>-<span class="code-snippet__number">3</span>.<span class="code-snippet__number">8</span>)²) = √(<span class="code-snippet__number">0</span>.<span class="code-snippet__number">25</span> + <span class="code-snippet__number">0</span>.<span class="code-snippet__number">04</span>) ≈ <span class="code-snippet__number">0</span>.<span class="code-snippet__number">54</span>  ← 很近</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">dist</span>(A, C) = √((<span class="code-snippet__number">3</span>-(-<span class="code-snippet__number">1</span>))² + (<span class="code-snippet__number">4</span>-<span class="code-snippet__number">0</span>)²)   = √(<span class="code-snippet__number">16</span> + <span class="code-snippet__number">16</span>)   ≈ <span class="code-snippet__number">5</span>.<span class="code-snippet__number">66</span>  ← 很远</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">两种度量都能区分 “相近” 和 “不相关”，但关注点不同 —— 余弦看方向，欧氏看绝对距离，能力各异，用途不同。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6666666666666666" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062528" src="https://wechat2rss.xlab.app/img-proxy/?k=85771fce&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHstia2X4Yzt5tL3iaUCNw4PcVhTB43ehbHIyVfJmONicVdDRwGwIsKppxq9ziclPbWMF9vGcKYt91mTSiahJXMY3N9AaX0OVle5Fnlg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;" data-nest-level="4"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="7"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;" data-nest-level="8"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;" data-nest-level="9"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="10"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;" data-nest-level="11"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;" data-nest-level="12"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="13"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="14"><strong style="box-sizing: border-box;" data-nest-level="15"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;" data-nest-level="8"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;" data-nest-level="9"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="10"><strong style="box-sizing: border-box;" data-nest-level="11"><span leaf="" data-nest-level="12">HNSW：从百万向量中快速找到最相似的</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">有了度量方法，就可以逐条算查询向量和所有存储向量的相似度，排序取 Top-K。这个问题的学名叫 </span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">KNN（K-Nearest Neighbors，K 最近邻）</span></strong><span leaf="" data-nest-level="5">。解法分两条路：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">精确 KNN：</span></strong><span leaf="" data-nest-level="7">逐条遍历所有向量，逐一算相似度，排序取 Top-K。100% 精确，但复杂度是 O (N×D)——N 条向量、每条 D 维。万级数据还行，百万级开始就扛不住了，更别提千万级。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">近似 KNN（ANN）：</span></strong><span leaf="" data-nest-level="7">不逐条算，用索引结构快速锁定候选区域，只对少数候选向量做精确计算。牺牲一点召回精度，换数量级的性能提升。主流实现有 HNSW、IVF、PQ、LSH 等。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">暴力搜索为什么不行</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">精确 KNN 就是全量遍历 ——N 条向量，每条 D 维，逐一算相似度。百万级数据，一次查询一百万次 1536 维向量运算，脑子过一下就知道不行。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">打个 MySQL 的比方：就像 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">SELECT ... ORDER BY score LIMIT 10</span></span><span leaf="" data-nest-level="5"> 没建索引 —— 每次查询全表扫描，数据少还能忍，百万行起步就崩了。ANN 则像给向量建了索引，查询走索引快速定位候选行，只对命中的少量行做精确计算，跟 MySQL 走 B+Tree 只扫少数数据页是一个道理。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">所以实际都用 ANN 近似路线 —— </span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">用可控的召回损失，换数量级的查询性能提升</span></strong><span leaf="" data-nest-level="5">。这个思路类似布隆过滤器：用极小的误判概率换极致的空间和速度，在工程上是笔很划算的买卖。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">HNSW 是 ANN 里最主流的算法，但不是唯一的。除了 HNSW，还有 IVF（K-Means 聚类 + 倒排索引）、PQ（向量压缩）、LSH（局部敏感哈希）等方案。选型简单说就是：百万级以内用 HNSW，千万级用 IVF，亿级考虑 DiskANN 或分片。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">HNSW 之所以最流行，是因为它在精度和速度之间取得了最好的平衡，而且实现成熟、生态完善。ES、Faiss、Milvus 都默认支持。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">核心洞察：跳表 × 可导航小世界图</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6666666666666666" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062532" src="https://wechat2rss.xlab.app/img-proxy/?k=50fe5a8f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv9mjZzh0Rccx3AB3EDOtdL8G5iahnQnnMUv8STCf65BuM858T4RD5c9NuLPc9RrtLwCF7Btmsw0Eib4zLCvNzpcia2Ua2oF150fs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">HNSW 是两种经典数据结构的融合。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">第一个灵感来自跳表</span></strong><span leaf="" data-nest-level="5"> —— 在有序链表上增加多层 “快速通道”：</span></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.34054054054054056" data-s="300,640" data-type="png" data-w="555" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062529" src="https://wechat2rss.xlab.app/img-proxy/?k=2c6a8096&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsNTjIAbYWWggxFNoJ7icwlStLC5LWscK17g5dsOSTvCBgk7Yc3v76XDmpibXmedWPicJogp9ofRibOmJNdBia140Sib79FfDBBHU3f8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">上层节点少、跨度大，底层包含全部节点。查找时从顶层一跳跨过大量元素，逐层缩小范围，复杂度从 O (n) 降到 O (log n)。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">节点按概率随机晋升到上层，不需要全局重平衡 —— 随机性自动保证了层间分布符合预期的指数衰减规律。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">HNSW 把这个分层思想搬到了</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">图</span></strong><span leaf="" data-nest-level="5">上。但这里有个关键问题：跳表能工作，是因为链表是</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">有序</span></strong><span leaf="" data-nest-level="5">的，比一下大小就知道往左还是往右。向量没有 “大小” 概念 —— 向量 (1, 3) 和 (-2, 5) 谁大？没法比。光有分层不够，还得解决 “图上怎么导航”。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">HNSW 的层间连接机制和跳表完全一致 —— 每个节点按概率随机分配到若干层，同时存在于所属层及以下所有层。层与层之间没有跨节点的连线，只有同一节点在相邻层的纵向连接。上层粗定位找到近似最近邻后，顺着该节点的纵向连线降到下一层，逐层下沉到第 0 层精搜。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">第二个灵感来自可导航小世界图（NSW）：</span></strong><span leaf="" data-nest-level="5">每一层图中，只要每个节点连了它最近的几个邻居，贪心搜索就能快速导航到目标附近 —— 不需要全局有序，只需要局部比较。站在当前节点，看一圈邻居，跳到离目标更近的那个，如此循环。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">两个想法一组合，分层提供 “快速通道”，贪心搜索在每层图上导航 —— 这就是 HNSW 的全部核心。用表格对比看得更清楚：</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">跳表 vs HNSW 的关键区别</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.29444444444444445" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062531" src="https://wechat2rss.xlab.app/img-proxy/?k=7a35bf15&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsFflxYLwJRkeZFSjRcFpU5nAabgLruQic7QgZtqJb0hwR8ToPkjoFMsnEfh0dqleIo2VqNumibUiczcicz2w2PKeVTIW1yyPE0vBg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6666666666666666" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062533" src="https://wechat2rss.xlab.app/img-proxy/?k=935d7e0b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvZJxYAbnWb9rFe1uelB5CCrIJP9xuG4s9oDhNtEl6PibUfU58AIhpoaIVJ1GJooicMYKEYPeibDt12fyoe4rADHjibgcUhrT61yiak%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">分层图长什么样</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">建完之后，整张图是这样的分层结构：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3575883575883576" data-s="300,640" data-type="png" data-w="481" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062530" src="https://wechat2rss.xlab.app/img-proxy/?k=4352b95a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuyu6USS2J02ibnkQ2iachLWEF0dia17jjZPYNgwLX2LzPOKPtjIEP2x5jGz0CjGyIHaPW0t8egpC4x8hAaibmeT5QKNGe50qMHnes%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">打个比方 —— 上层像是地图上的「国道」「高速公路」：只标注关键枢纽，但一跳就能跨越大半个区域。底层则是「街道路网」，密密麻麻，能精确定位到具体位置。搜索时先走高速确定大致方向，再下到街道找到精确目标。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">层级分布（以 M=16、晋升概率简化为 1/M 为例）：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2972222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062534" src="https://wechat2rss.xlab.app/img-proxy/?k=78188beb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvYJ1d7rFVMnx65yibBX1DmICjdQwTWWhyRcQMY4cibgN1ctMmlzJ47xVrwPiaHEBgt5fgIIBJibpMNWIbNywKhLMsnoZ3IhiaCbibRk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">注：HNSW 论文默认用 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">mL = 1/ln (M)</span></span><span leaf="" data-nest-level="5">（M=16 时约 0.36）作为晋升概率，实际 Layer 1 占比约 36%，分布比上表更 “胖”。这里用 1/M 做简化推演，目的是直观展示 “层级越高节点越少” 的指数衰减规律，数量级结论不变。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">100 万节点，图的最高层大概 5–6 层。上层节点极少，但边长跨度大 —— 因为上层节点少、每个节点都要连 M 个邻居，这些边自然会跨越很远。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">知道了图长什么样，再看它是怎么一步步建起来的。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">图是怎么建起来的：写路径</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">HNSW 本质上是一张</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">多层图</span></strong><span leaf="" data-nest-level="5">。每条向量是图上的一个节点，边连着它的 “近邻”。插入一条新向量时，要决定两件事：它放在哪些层、它跟谁连边。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">第一步：掷骰子定层高</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">每个节点用随机函数决定自己 “长” 到第几层。概率是 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">P (level ≥ L) = (1/M)^L</span></span><span leaf="" data-nest-level="5">，M 默认 16（此处沿用简化模型）。也就是说：每往上一层，概率除以 16。结果就是绝大多数节点只待在底层，极少数节点能上到高层。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="apache"><code><span leaf=""><span class="code-snippet__attribute">level</span> = <span class="code-snippet__number">0</span></span></code><br/><code><span leaf=""><span class="code-snippet__attribute">while</span> random() &lt; <span class="code-snippet__number">1</span>/M:    # <span class="code-snippet__number">1</span>/<span class="code-snippet__number">16</span> 的概率再往上长一层，否则停止</span></code><br/><code><span leaf="">    <span class="code-snippet__attribute">level</span> += <span class="code-snippet__number">1</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">为什么用随机而不是按 “重要性” 分？因为向量没有天然的重要性 —— 离聚类中心近的放上层，边缘数据就永远搜不到；反过来放，上层又失去代表性。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">随机分层不用关心数据的任何性质，概率论保证层间分布均匀。这跟跳表的设计思路一样 —— 随机替代了复杂的重平衡逻辑。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">第二步：在已有图中找最近邻</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">节点还没插入，先拿着它在已有图上做贪心搜索 —— 从顶层开始，逐层往下，找到每层离它最近的节点。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">第三步：双向连边</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">找到最近邻后，在节点所属的每一层，跟离它最近的 M 个邻居互相建立双向边。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.43373493975903615" data-s="300,640" data-type="png" data-w="498" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062535" src="https://wechat2rss.xlab.app/img-proxy/?k=bbf4c33d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuIJXpcI1k34oMG7D4ATKz6zXoiaJFUtmxNzB1qB6libyxp6WFtuVPxTXEFEDk0my3ERzTlkjvhH7SqYicncNdSVuXdxPwtW6N56w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">第四步：剪枝</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">连边后检查 —— 如果某个邻居的边数超过了 M，只保留离它最近的 M 条，多余的剪掉。防止热门节点被太多人连接，搜索时要检查大量候选，拖慢效率。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">图是怎么搜的：读路径</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">贪心搜索：在一层图里怎么走</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">每一层内部的搜索方式叫贪心搜索 —— 站在当前节点，看一圈所有邻居，跳到离目标更近的那个，重复直到没有邻居比当前节点更近。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">当前在节点 A，目标向量是 Q：</span></code><br/><code><span leaf="">  → 算 dist(Q, 邻居B) = 0.3</span></code><br/><code><span leaf="">  → 算 dist(Q, 邻居C) = 0.8</span></code><br/><code><span leaf="">  → 算 dist(Q, 邻居D) = 0.2  ← 最近！</span></code><br/><code><span leaf="">  → 跳到 D，继续看 D 的邻居</span></code><br/><code><span leaf="">  → 直到所有邻居都比当前节点离 Q 更远 → 停下</span></code><br/></pre></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">逐层下钻：完整搜索流程</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">有了单层贪心搜索，多层搜索就很简单了 —— 从顶层开始，每层做一次贪心，终点传给下一层当起点。打个比方：这和查地图一样。先看全国高速路网确定大方向（顶层，几步跨越大半区域），再放大到省道规划具体路线（中层），最后在街道级别精确定位到门牌号（底层）。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.32752613240418116" data-s="300,640" data-type="png" data-w="574" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062536" src="https://wechat2rss.xlab.app/img-proxy/?k=8a7480f4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuSozM84sWskmfLiak80vGkGO3HhmCUY0ACPbKmsY7TWsBBkwQJCtUdXUHTPRia8U9UgW0QKDP2iavklJyaU1t5vY9ib9kcq8NuPTo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">具体步骤：</span></strong></p><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">从最顶层的入口节点开始，做贪心搜索，走到这一层的局部最近点。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">降到下一层，以上一层的终点为起点，继续贪心。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">重复直到最底层 —— 底层包含全部节点、边最密集，做完最后一轮精细搜索。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">返回途中遇到的、距离最近的 K 个节点。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">不分层的话，在密密麻麻的底层图中每步只能走到邻居，想从图的一头到另一头需要很多步。分层后用上层几步逼近目标，底层再精确走几步 —— 总步数从 O (N) 降到 O (log N)。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">贪心不会走进死胡同吗？</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">不会。建图时每个节点都连了它最近的邻居（即前文 “双向连边” 那一步），这个结构天然保证 “可导航性”—— 从任意节点出发贪心地往更近的方向走，一定能逼近目标所在区域。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">上层的长距离边还有一个关键作用：帮搜索在早期跳过 “看起来近但其实不对” 的区域，避免卡在局部最优里。当然，HNSW 是近似算法，不保证一定命中全局最近邻 —— 这是所有 ANN 算法共同的设计取舍，用可控的召回损失换数量级的性能提升。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">三个关键参数</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19907407407407407" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062537" src="https://wechat2rss.xlab.app/img-proxy/?k=6203613e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsWVoOcEia5SzgDRCcoeuXu47tXGNE0JPFJG0hDeFpC5U3fEUJzIKQZ0XKmAYEbricCF6ibuiaP4lal33KcQzMOrEN801hLIpa5xoM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">ef_search</span></span><span leaf="" data-nest-level="5"> 是唯一可以在运行时动态调整的参数 —— 精度要求高就调大，速度要求高就调小，不需要重建索引。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">总结</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">HNSW 很强大，但语义搜索有自己搞不定的盲区 —— 搜 “SLB-20250101-abc” 这种 trace ID，Embedding 模型无能为力，BM25 倒排索引才是正解。单靠语义搜索不够，完整链路还有召回融合、精排等几道工序，下文展开。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;" data-nest-level="4"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="7"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;" data-nest-level="8"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;" data-nest-level="9"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="10"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;" data-nest-level="11"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;" data-nest-level="12"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="13"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="14"><strong style="box-sizing: border-box;" data-nest-level="15"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;" data-nest-level="8"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;" data-nest-level="9"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="10"><strong style="box-sizing: border-box;" data-nest-level="11"><span leaf="" data-nest-level="12">检索的完整链路：从查询到精排</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">Query Rewrite：用户不会提问怎么办</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">前面聊了这么多检索技术，但有一个前提一直被忽略 —— 用户得先提出一个好问题。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">现实中用户是怎么提问的：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang=""><code><span leaf="">用户输入：「那个接口怎么又挂了」</span></code><br/><code><span leaf="">真实意图：支付服务订单创建接口最近一次故障原因是什么</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">对检索器来说，“接口”“挂了” 两个词的信息量几乎为零 ——Embedding 模型只能猜个大概方向，BM25 更是一头雾水。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">很多线上项目最后发现，Embedding 没问题、向量库没问题、Rerank 没问题，真正的问题是用户不会提问。垃圾 query 进去，后续链路再强也白搭。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">解决方案是 </span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">Query Rewrite（查询改写）</span></strong><span leaf="" data-nest-level="5">—— 在检索之前，先让 LLM 把用户的模糊问题改写成适合检索的明确查询。可以结合历史对话做指代消解（“那个接口”→“支付服务订单创建接口”），也可以补充业务上下文。改写后的问题再送入后续的召回和精排流程。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Query Rewrite 在实践中往往是收益最高的单点优化之一，大部分 RAG 框架（LangChain、LlamaIndex 等）都内置了这一步。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">元数据过滤：第一道闸门</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Query 改写好了，下一步是召回。但召回之前还有一道工序——</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">元数据过滤（Metadata Filtering）</span></strong><span leaf="" data-nest-level="5">。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">很多新人看完 RAG 介绍后，形成的认知是：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="nginx"><code><span leaf=""><span class="code-snippet__attribute">Query</span> → Embedding → 向量搜索全库 → 返回结果</span></code></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">但企业场景里实际是：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="nginx"><code><span leaf=""><span class="code-snippet__attribute">Query</span> → 元数据过滤 → 向量搜索（过滤后的子集）</span></code></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">举个例子：一个多租户的知识库平台，A 公司和 B 公司的文档存在同一个向量库里。用户搜 “退款流程”，如果不先按 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">tenant_id</span></span><span leaf="" data-nest-level="5"> 过滤，就会把别家公司的退款文档也搜出来。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">常见的过滤维度：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2972222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062538" src="https://wechat2rss.xlab.app/img-proxy/?k=78ee7175&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvjv0cFM9iakpVcq4a5HfXAjhcRy8QLvWK2kJYrBhlia3veQibhqNGQ7wMVmBDOic6Yn4HfdJLSic3gHThx2Y5MbIticEz7ar6SDo8dc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">过滤先行，召回后行。这一步看似简单，在生产系统中却是第一道防线 —— 范围没缩准，后面再怎么精排都是错的。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;" data-nest-level="3"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" data-nest-level="4" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2064814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062539" src="https://wechat2rss.xlab.app/img-proxy/?k=925b79c5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvdjpP3PEjQulHdpFgOKhdZkMwcIDF5w1zaMzPt5iaXvQDcgRfSueJAnAt5D8LyFeWy8C0Gqyia9uzwv5cVIW0szJgm07QibicfJib4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">语义搜索用 Dense 向量抓语义，BM25 用倒排索引抓关键词 —— 一个搜意思，一个搜字面。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">但这只是知识库场景最常见的两路。召回层本质上是一个</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">多路召回框架</span></strong><span leaf="" data-nest-level="5">，该去哪里找答案取决于问题类型：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="sql"><code><span leaf="">Recall</span></code><br/><code><span leaf="">├─ ANN（向量相似度搜索）</span></code><br/><code><span leaf="">├─ BM25（关键词倒排索引）</span></code><br/><code><span leaf="">├─ Graph Recall（实体图谱，搜关联关系）</span></code><br/><code><span leaf="">├─ <span class="code-snippet__keyword">SQL</span> Recall（结构化数据库，精确查询）</span></code><br/><code><span leaf="">├─ Memory Recall（用户个人记忆，动态偏好）</span></code><br/><code><span leaf="">├─ Conversation Recall（历史对话上下文）</span></code><br/><code><span leaf="">├─ Web <span class="code-snippet__keyword">Search</span>（实时互联网信息）</span></code><br/><code><span leaf="">└─ Tool Recall（调用外部工具获取结果）</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">用户问「我上次提到的那个 Go 项目怎么部署？」——答案不在知识库里，而在这个用户的历史记忆或对话上下文中。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">知识库用向量检索，记忆用 Memory Recall，结构化数据用 SQL 查询——不同的数据类型需要不同的检索方式。召回层该用哪几路、怎么组合，取决于业务场景，没有固定答案。多路检索各跑各的，各自返回一批结果和分数。但分数怎么合并？直接加行不行？</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">为什么不用原始分数直接加</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">两路返回的结果，分数含义完全不同：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="apache"><code><span leaf=""><span class="code-snippet__attribute">ANN</span> 路：doc_A 得分 <span class="code-snippet__number">0</span>.<span class="code-snippet__number">92</span>（余弦相似度）</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">BM25</span> 路：doc_B 得分 <span class="code-snippet__number">8</span>.<span class="code-snippet__number">7</span>（BM25 相关度分数）</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">0.92 和 8.7 怎么加？两者是完全不同的尺子 —— 一个是 0 到 1 的相似度，一个是几十上百的关键词打分，直接加就像把 “考了 92 分” 和 “跑了 8.7 秒” 加起来排名次。归一化又很麻烦 —— 需要用历史查询的分数分布来校准，而且分布会随时间变化。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">RRF：不拼分数拼排名</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">RRF（Reciprocal Rank Fusion，倒数排名融合）</span></strong><span leaf="" data-nest-level="5">的思路很朴素 —— 既然原始分数没法直接加，那就扔掉分数，只看排名。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">排名怎么变成分数</span></strong></p></div></div></div></div><p style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">多路叠加：</span></strong><span leaf="" data-nest-level="7">一个文档在越多的检索路径里排进前列，它就越应该拿高分。RRF 把最终得分定义为各路排名贡献之和 —— 每一路独立贡献，总分自然叠加。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">取倒数：</span></strong><span leaf="" data-nest-level="7">排名越靠前贡献应该越大，取倒数天然满足这个方向 —— 排第 1 → 1/1 = 1，排第 10 → 1/10 = 0.1，排第 100 → 1/100 = 0.01。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">加平滑系数 k：</span></strong><span leaf="" data-nest-level="7">1/1 和 1/2 差了整整一倍，实际检索中第 1 名和第 2 名质量可能差不多，不该因为差一名就得分翻倍。分母上加个常数 k（通常取 60），让曲线平缓下来：1/(60+1) ≈ 0.0164，1/(60+2) ≈ 0.0161，差距控制在个位数百分比。</span></p></li></ul></p><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">公式长什么样</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">汇总成公式：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="apache"><code><span leaf=""><span class="code-snippet__attribute">score</span>(doc) = Σ <span class="code-snippet__number">1</span>/(k + rank_i)</span></code></pre></p></div><p style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">k = 60</span></span><span leaf="" data-nest-level="7">：平滑常数，值越大曲线越平缓，排名靠前的权重差距越小。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">rank_i</span></span><span leaf="" data-nest-level="7">：文档在第 i 路检索中的排名，从 1 开始。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">某路未出现的文档，该路贡献为 0（相当于排名无限大，1/(k+∞) → 0）。</span></p></li></ul></p><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">拿两路检索算一遍</span></strong></p></div></div></div></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="swift"><code><span leaf="">两路检索结果：</span></code><br/><code><span leaf="">  <span class="code-snippet__type">ANN</span> 排名:  [doc_A #<span class="code-snippet__number">1</span>, doc_B #<span class="code-snippet__number">2</span>, doc_C #<span class="code-snippet__number">3</span>]</span></code><br/><code><span leaf="">  <span class="code-snippet__type">BM25</span> 排名: [doc_B #<span class="code-snippet__number">1</span>, doc_C #<span class="code-snippet__number">2</span>, doc_A #<span class="code-snippet__number">3</span>]</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">doc_A 总分 <span class="code-snippet__operator">=</span> <span class="code-snippet__number">1</span><span class="code-snippet__regexp">/(60+1) + 1/</span>(<span class="code-snippet__number">60</span><span class="code-snippet__operator">+</span><span class="code-snippet__number">3</span>) <span class="code-snippet__operator">=</span> <span class="code-snippet__number">0.0164</span> <span class="code-snippet__operator">+</span> <span class="code-snippet__number">0.0159</span> <span class="code-snippet__operator">=</span> <span class="code-snippet__number">0.0323</span></span></code><br/><code><span leaf="">doc_B 总分 <span class="code-snippet__operator">=</span> <span class="code-snippet__number">1</span><span class="code-snippet__regexp">/(60+2) + 1/</span>(<span class="code-snippet__number">60</span><span class="code-snippet__operator">+</span><span class="code-snippet__number">1</span>) <span class="code-snippet__operator">=</span> <span class="code-snippet__number">0.0161</span> <span class="code-snippet__operator">+</span> <span class="code-snippet__number">0.0164</span> <span class="code-snippet__operator">=</span> <span class="code-snippet__number">0.0325</span></span></code><br/><code><span leaf="">doc_C 总分 <span class="code-snippet__operator">=</span> <span class="code-snippet__number">1</span><span class="code-snippet__regexp">/(60+3) + 1/</span>(<span class="code-snippet__number">60</span><span class="code-snippet__operator">+</span><span class="code-snippet__number">2</span>) <span class="code-snippet__operator">=</span> <span class="code-snippet__number">0.0159</span> <span class="code-snippet__operator">+</span> <span class="code-snippet__number">0.0161</span> <span class="code-snippet__operator">=</span> <span class="code-snippet__number">0.0320</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">ANN 把 doc_A 排第一，BM25 把 doc_B 排第一，RRF 融合后 B &gt; A &gt; C—— 不偏向任何一路，只看综合排名。只在一路出现而另一路没出现的文档，自然排后面。实现起来也就 30 行代码。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;" data-nest-level="4"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;" data-nest-level="7"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;" data-nest-level="8"><div style="z-index: 2;box-sizing: border-box;" data-nest-level="9"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="10"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="11"><strong style="box-sizing: border-box;" data-nest-level="12"><span leaf="" data-nest-level="13">Rerank：粗筛之后，再精排一次</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Recall（ANN + BM25 + RRF）做的事是</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">粗筛</span></strong><span leaf="" data-nest-level="5"> —— 从海量文档里快速捞出几十条候选。但捞出来的这几十条只是 “可能相关”，谁排在谁前面还不够准。Rerank 做的事是</span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">精排</span></strong><span leaf="" data-nest-level="5"> —— 用一个更强的模型，对这几十条候选重新打分排序，把真正最相关的推到最前面。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">为什么 Embedding 排不准</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Embedding 用的是 </span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">Bi-Encoder</span></strong><span leaf="" data-nest-level="5"> 架构：query 和 doc 分别编码成向量，再算余弦相似度。问题在于 —— 编码时 query 和 doc 彼此不知道对方的存在，模型只能事后靠向量距离来 “猜” 相关性。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">举个例子：用户搜 “VPN 密码怎么重置”，两路召回 + RRF 融合后 Top-3 可能是：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="apache"><code><span leaf=""><span class="code-snippet__attribute">1</span>. VPN密码重置指南  向量相似度 <span class="code-snippet__number">0</span>.<span class="code-snippet__number">85</span></span></code><br/><code><span leaf=""><span class="code-snippet__attribute">2</span>. VPN客户端安装教程  向量相似度 <span class="code-snippet__number">0</span>.<span class="code-snippet__number">83</span></span></code><br/><code><span leaf=""><span class="code-snippet__attribute">3</span>. VPN账号申请流程   向量相似度 <span class="code-snippet__number">0</span>.<span class="code-snippet__number">82</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">这三个文档都在讲 VPN，向量确实都很靠近查询向量，相似度 0.82 起步 —— 话题层面上它们都 “相关”。但话题相关不等于能回答用户的问题：“VPN 客户端怎么安装” 跟 “VPN 密码怎么重置” 完全不是一回事。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Bi-Encoder 把文本压缩成 1024 个浮点数之后，已经分不出这个级别的差异了 —— 在它眼里，这都是 “VPN 相关文档”。所以 Recall 能 “找回来”，但不一定 “排得准”。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="4"><div style="margin: 0px 0%;box-sizing: border-box;" data-nest-level="5"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><strong style="box-sizing: border-box;" data-nest-level="8"><span leaf="" data-nest-level="9">Cross-Encoder：一起看，而不是分开看</span></strong></p></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Rerank 用 </span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">Cross-Encoder</span></strong><span leaf="" data-nest-level="5"> 架构弥补这个缺陷。和 Embedding 的 Bi-Encoder 区别在哪？拿上面两个文档对比来看：</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">Bi-Encoder（Embedding 的做法）：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">把 query “VPN 密码怎么重置” 单独编码 → 向量 Q。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">把 doc₁ “VPN 客户端安装教程” 单独编码 → 向量 D₁，doc₂ “VPN 密码重置指南” 单独编码 → 向量 D₂。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">算 cos (Q, D₁) → 0.83，cos (Q, D₂) → 0.85，判定 D₂ 更相关。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">问题是第 1 步和第 2 步互不知情 —— 编码 query 时模型不知道 doc 长什么样，编码 doc 时也不知道 query 问的是什么。最后只能靠两个独立向量算距离来 “猜” 相关性，所以准度有限。好处是向量可以提前算好存起来，查询时只算 query 向量就行 —— 快。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">Cross-Encoder（Rerank 的做法）：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">把 query 和 doc₁ 拼成一对：“VPN 密码怎么重置 [SEP] VPN 客户端安装教程”→ 一起喂给模型 → 0.31。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">把 query 和 doc₂ 拼成一对：“VPN 密码怎么重置 [SEP] VPN 密码重置指南”→ 一起喂给模型 → 0.98。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">模型同时看到两边，读到了完整的问题和文档，能判断出 “虽然都提到 VPN，但客户端安装跟密码重置不是一回事”——Bi-Encoder 给了 0.83，Cross-Encoder 直接降到 0.31。代价是每对 (query, doc) 都要重跑一遍模型，没法提前算，所以慢得多，只能对 Top-N 候选用。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Rerank 用的是专门的 Cross-Encoder 模型（如 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">bge-reranker-v2</span></span><span leaf="" data-nest-level="5">），不是 Embedding 模型也不是通用 LLM。评分来自模型对 query-doc 对的相关性判断，同一批候选过同一个模型，分数天然可比，不需要像 RRF 那样担心尺度问题。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">同一个例子，Rerank 之后：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="apache"><code><span leaf=""><span class="code-snippet__attribute">1</span>. VPN密码重置指南  <span class="code-snippet__number">0</span>.<span class="code-snippet__number">98</span>  ← 确认高度相关</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">2</span>. VPN账号申请流程   <span class="code-snippet__number">0</span>.<span class="code-snippet__number">42</span>  ← 原来排第 <span class="code-snippet__number">3</span>，被拉上来了</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">3</span>. VPN客户端安装教程  <span class="code-snippet__number">0</span>.<span class="code-snippet__number">31</span>  ← 原来排第 <span class="code-snippet__number">2</span>，被挤下去了</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">排名完全变了 —— Rerank 把真正的差距拉开了，LLM 看到的上下文质量直接提升。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">工程上的做法</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">流水线就清楚了：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="css"><code><span leaf="">多路召回 → RRF 融合 → 取 <span class="code-snippet__attribute">Top</span>-N（比如 <span class="code-snippet__number">50</span> 条）→ Rerank 精排 → 取 <span class="code-snippet__attribute">Top</span>-K（比如 <span class="code-snippet__number">5</span> 条）→ 送给 LLM</span></code></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">常见方案：</span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">bge-reranker-v2</span></span><span leaf="" data-nest-level="5">（开源）、Cohere Rerank（API）、Jina Reranker（API）。选型原则和 Embedding 一样 —— 看语言、看领域、看成本。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">Recall 解决 “别漏掉”，Rerank 解决 “排正确”。两者分工不同，缺一不可。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;" data-nest-level="4"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;" data-nest-level="6"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="7"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;" data-nest-level="8"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;" data-nest-level="9"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="10"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;" data-nest-level="11"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;" data-nest-level="12"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="13"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="14"><b style="box-sizing: border-box;" data-nest-level="15"><span leaf="">七</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;" data-nest-level="8"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;" data-nest-level="9"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="10"><strong style="box-sizing: border-box;" data-nest-level="11"><span leaf="" data-nest-level="12">总结</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">这篇文章一路走下来，RAG 检索的核心概念基本就串起来了：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;" data-nest-level="3"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="css"><code><span leaf="">Query Rewrite → Metadata <span class="code-snippet__attribute">Filter</span> → Recall（ANN + BM25）→ RRF 融合 → Rerank 精排 → LLM 生成</span></code></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">真正决定 RAG 效果的核心往往是 </span><strong style="box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">Query Rewrite + Chunking + Recall + Rerank</span></strong><span leaf="" data-nest-level="5">，而不只是 LLM 本身。总结几条关键结论：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">Chunking 是基础：</span></strong><span leaf="" data-nest-level="7">切块策略决定知识如何被“打包”，直接影响检索能找到什么。固定切块、滑动窗口、语义切块、Parent-Child 各有适用场景。注意 Lost in the Middle——更多 Chunk 并不一定更好。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">Embedding 把语义变成数学：</span></strong><span leaf="" data-nest-level="7">文本变成向量，语义相近的在空间中距离近。Dense 抓语义，Sparse/BM25 抓关键词，两者互补。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">相似度用余弦：</span></strong><span leaf="" data-nest-level="7">Embedding 模型就是为余弦相似度训练的，用别的度量相当于换了评分标准。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">HNSW 解决速度问题：</span></strong><span leaf="" data-nest-level="7">百万向量不能逐条算，用跳表的分层思想 + 图的贪心搜索，用可控的召回损失换数量级的速度提升。三个参数 M、ef_construction、ef_search 控制精度和性能的平衡。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">Query Rewrite 是隐藏的高收益优化：</span></strong><span leaf="" data-nest-level="7">用户不会提问，让 LLM 先改写 query 再检索，往往是投入产出比最高的单点优化。元数据过滤则是生产环境的第一道防线——先缩范围，再做召回。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><strong style="box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">混合检索是终局：</span></strong><span leaf="" data-nest-level="7">单一路径都有盲区。语义搜索管意思，BM25 管字面，两路互补；RRF 融合排名，Rerank 精排——多路协同，缺一不可。检索的本质：不是单一技术，而是多条检索路径 + 排名融合 + 精排策略的协同——每个环节各司其职，缺任何一环效果都会打折。</span></p></li></ul><p data-pm-slice="0 0 []" data-nest-level="4"><span leaf="" data-nest-level="5">以上总结了笔者对 RAG 检索核心概念的主要认识，欢迎补充和指正。</span></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="4"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="5"><strong style="box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;" data-nest-level="4"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="5"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546029&amp;idx=1&amp;sn=bfd40c235e8c5bdbab9acac15aea8bcf&amp;scene=21#wechat_redirect" textvalue="从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545826&amp;idx=1&amp;sn=ebb5f57a0094dafcb1c43ac135f1a48b&amp;scene=21#wechat_redirect" textvalue="得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545821&amp;idx=1&amp;sn=3234c5ee286b9efa19c14ef3b9a2fb1c&amp;scene=21#wechat_redirect" textvalue="得物 OceanBase 落地实践" data-itemshowtype="0" linktype="text" data-linktype="2">得物 OceanBase 落地实践</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545653&amp;idx=1&amp;sn=e7c008cf208a9b5d535349dedc667651&amp;scene=21#wechat_redirect" textvalue="AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="6"><span leaf="" data-nest-level="7">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545565&amp;idx=1&amp;sn=2408887769f776089b6421e7bea8657e&amp;scene=21#wechat_redirect" textvalue="从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="3"><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span leaf="" data-nest-level="5">文 / 羊羽</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span style="font-size: 11px;box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span style="font-size: 11px;box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="4"><span style="font-size: 11px;box-sizing: border-box;" data-nest-level="5"><span leaf="" data-nest-level="6">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;" data-nest-level="3"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;" data-nest-level="4"><div style="margin: 10px 0px -53px;box-sizing: border-box;" data-nest-level="5"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;" data-nest-level="6"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;" data-nest-level="5"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;" data-nest-level="6"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="7"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="8"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;" data-nest-level="9"><strong style="box-sizing: border-box;" data-nest-level="10"><span leaf="" data-nest-level="11">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;" data-nest-level="5"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;" data-nest-level="6"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;" data-nest-level="7"><span leaf="" data-nest-level="8">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;" data-nest-level="4"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;" data-nest-level="5"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" data-nest-level="6" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062540" src="https://wechat2rss.xlab.app/img-proxy/?k=3f66e099&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuxPCRia8VXAhg0uVLjqaaCicO01HaeljUz2XT2PnWQTdiauKAHiawRVjiaTTribau4ibSvyhYKhKTPuciafGfcqF8eJ9I3OiaLfBjqg8Y4%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=1c9ee04e&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546214%26idx%3D1%26sn%3D1ea66a2621a684b57f05339341dde10f">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 22 Jul 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>喜报｜得物“合规哨兵系统”入选工信部2025年度信息通信服务创优典型案例</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546066&amp;idx=1&amp;sn=e6c3d3e8d00d9383dea8f4126b5e1b5f</link>
      <description>近日，工业和信息化部办公厅正式公布2025年度信息通信服务创优典型案例名单，得物成功入选，成为全国29个典型案例之一！</description>
      <content:encoded><![CDATA[<p><span>得物安全</span> <span>2026-07-17 12:00</span> <span style="display: inline-block;">上海</span></p>




  <p>以下文章来源于：得物安全</p>
  <strong>得物安全</strong>
  <p>得物安全分享交流平台，发布最新安全资讯。</p>



  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=89886282&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsysM0NF8rJhPFDzKyxk3XdPFOEsgWW0AvkF0RzKGHZvuFEIDNU9nlg80ib1iblhTYuPrJdr5PjDyTiagQiaIocSjk56CC7hh0OGUk%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>近日，工业和信息化部办公厅正式公布2025年度信息通信服务创优典型案例名单，得物成功入选，成为全国29个典型案例之一！</p>
  <div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 0px;box-sizing: border-box;"><div style="display: inline-block;width: 96%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;background-color: rgb(247, 251, 255);height: auto;padding: 19px;box-sizing: border-box;"><div style="margin: 0px;box-sizing: border-box;"><div style="text-align: justify;padding: 0px;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">近日，工业和信息化部办公厅正式公布2025年度信息通信服务创优典型案例名单，上海得物信息集团有限公司申报的《守护数字时代用户权益——基于AI技术的得物“合规哨兵系统”在个人信息保护领域的创新实践》成功入选“加强个人信息保护”方向，成为全国29个典型案例之一！</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">本次评选由工业和信息化部办公厅组织开展。得物“合规哨兵系统”案例系上海市通信管理局推荐申报，经信息通信管理局多轮严格遴选，凭借在用户个人信息保护领域的扎实成效，从全国众多参评案例中脱颖而出！</span></p></div></div></div></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 96%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000588" data-ratio="0.6074074" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=02289500&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2F7QznINwpYntewsU8tHL9ySV2bYTyKD5nQSMZC7gZGjqKwPNGDib1MzvbaNiceGia1pJ676t1jRwoUC3QA1zDemAFdgL4CgZFWSPpK3DgcQmsXQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: -26px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;background-color: rgb(231, 244, 255);padding: 24px 36px;box-sizing: border-box;"><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;padding: 0px;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为加强得物平台的个人信息保护，切实维护用户权益，上海得物信息集团有限公司推出了“合规哨兵系统”。该系统构建了“用例管理平台-移动端测试体系（UI）-合规检测系统”三位一体的闭环管理体系，通过AI辅助编写隐私合规测试用例，对应用功能模块进行自动化合规校验，识别违规收集个人信息行为，结合智能归因引擎，形成从测试到风险处置的完整流程。该项技术已申请国家发明专利，目前已通过国家专利局审批，公告号CN114238948B。</span></p></div></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000590" data-ratio="0.5675926" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=e79f0d05&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F7QznINwpYnv3puyGk6wQRqiblVZCU0KCWHgGhictJWDKcp8sqyBEXGyOZE0grcw2z45fspKd48ib0IzPUR9OETEAP4aIjBZNmpMvFJ8DHnBB80%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;width: 96%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;background-color: rgb(247, 251, 255);height: auto;padding: 19px;box-sizing: border-box;"><div style="margin: 0px;box-sizing: border-box;"><div style="text-align: justify;padding: 0px;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;caret-color: rgb(0, 0, 0);color: rgb(0, 0, 0);margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(62, 62, 62);box-sizing: border-box;"><span leaf="">作为新一代品质生活购物社区，得物始终将用户个人信息安全视为平台发展的生命线。“合规哨兵系统”是得物自主研发的个人信息保护体系，核心目标是确保用户数据在全生命周期内的合法合规管理，为用户提供安全可靠的服务。系统运行以来，得物app切实守护用户的信息安全与合法权益。</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">此次入选工信部典型案例，是对得物在个人信息保护领域长期投入与技术创新成果的充分肯定。未来，得物将继续坚守合规经营与科技向善理念，持续升级个人信息保护能力，以更严格的标准、更扎实的行动守护每一位用户的数字权益，为营造安全可信的数字生态贡献力量。</span></p></div></div></div></div><div style="text-align: center;line-height: 0;margin: 10px 0px 20px;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100000589" data-ratio="1.1888889" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="jpeg" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=5843d056&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F7QznINwpYnvHIPpwic0wslmoj4hxBIkl3lZZyotO9EOeCoeoJmk1R41lqXF5xVL4dkA8vOHcF0rFhL3rtpeJ9oP2JMrCMYde4mHqiaEeJQRXc%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: auto;flex: 100 100 0%;height: auto;padding: 0px 30px 0px 28px;box-sizing: border-box;"><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;padding: 0px;font-size: 12px;box-sizing: border-box;"><p style="white-space: normal;caret-color: rgb(0, 0, 0);color: rgb(0, 0, 0);word-break: break-all;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图片截图源于《工业和信息化部办公厅关于公布2025年度信息通信服务创优典型案例名单的通知》</span></p><p style="white-space: normal;caret-color: rgb(0, 0, 0);color: rgb(0, 0, 0);word-break: break-all;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">链接：</span></span></p><p style="white-space: normal;caret-color: rgb(0, 0, 0);color: rgb(0, 0, 0);word-break: break-all;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://www.miit.gov.cn/jgsj/xgj/wjfb/art/2026/art_e1385027c04c4f52821f602da85e2f44.html" target="_blank">https://www.miit.gov.cn/jgsj/xgj/wjfb/art/2026/art_e1385027c04c4f52821f602da85e2f44.html</a></span></p><p style="white-space: normal;caret-color: rgb(0, 0, 0);color: rgb(0, 0, 0);word-break: break-all;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">（复制到浏览器打开）</span></p></div></div></div></div><div style="text-align: right;justify-content: flex-end;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;padding: 0px 5px;box-sizing: border-box;"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;background-color: rgb(59, 61, 69);min-width: 5%;max-width: 100%;height: auto;padding: 0px 6px;border-radius: 4px;overflow: hidden;box-sizing: border-box;"><div style="text-align: justify;font-size: 12px;color: rgb(255, 255, 255);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">求点赞</span></p></div></div></div><div style="text-align: center;box-sizing: border-box;"><div style="display: inline-block;width: 26px;height: 26px;vertical-align: top;overflow: hidden;border-radius: 172px;background-color: rgb(242, 242, 242);box-sizing: border-box;"><div style="line-height: 0;opacity: 0.66;margin: 4px 0px 0px;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 17px;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="gif" data-w="640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100000591" src="https://wechat2rss.xlab.app/img-proxy/?k=a206c57f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2F7QznINwpYnusVgT6NMc8oy6WricKicSNyY1fLRW2UiaBlD2LaibApQBV7zKg9puGIlECMYhgXImJtqzy5u5Q6o4TxLhblfsYWU9Y1vR6trjBR1A%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg"/></p></div></div></div></div><div style="display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;padding: 0px 5px;box-sizing: border-box;"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;background-color: rgb(59, 61, 69);min-width: 5%;max-width: 100%;height: auto;padding: 0px 6px;border-radius: 4px;overflow: hidden;box-sizing: border-box;"><div style="text-align: justify;font-size: 12px;color: rgb(255, 255, 255);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">求分享</span></p></div></div></div><div style="text-align: center;box-sizing: border-box;"><div style="display: inline-block;width: 26px;height: 26px;vertical-align: top;overflow: hidden;border-radius: 172px;background-color: rgb(242, 242, 242);box-sizing: border-box;"><div style="line-height: 0;opacity: 0.66;margin: 4px 0px 0px;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 17px;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9140625" data-s="300,640" data-type="gif" data-w="640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100000592" src="https://wechat2rss.xlab.app/img-proxy/?k=1a1c1fc0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2F7QznINwpYns1JhLMiaujGOgAKJWnw8HCWP2JVtdSqAWicvEoAFUAGOF9uibjBJszl7CZvukKWqQsckicq6Kmubl2e0IHicMUAfl2StxqffMUXHJU%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg"/></p></div></div></div></div><div style="display: inline-block;vertical-align: top;width: auto;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;padding: 0px 5px;box-sizing: border-box;"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;background-color: rgb(59, 61, 69);min-width: 5%;max-width: 100%;height: auto;padding: 0px 6px;border-radius: 4px;overflow: hidden;box-sizing: border-box;"><div style="text-align: justify;font-size: 12px;color: rgb(255, 255, 255);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">求喜欢</span></p></div></div></div><div style="text-align: center;box-sizing: border-box;"><div style="display: inline-block;width: 26px;height: 26px;vertical-align: top;overflow: hidden;border-radius: 172px;background-color: rgb(242, 242, 242);box-sizing: border-box;"><div style="line-height: 0;opacity: 0.66;margin: 6px 0px 0px;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 17px;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9140625" data-s="300,640" data-type="gif" data-w="640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100000593" src="https://wechat2rss.xlab.app/img-proxy/?k=5e8fd918&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_gif%2F7QznINwpYnsjvdMmKqKBOHNGwiaWbsJXeHVyZC6BdJZMsV4XKLxp8icF35KGLa5Sl4028lDLPKpK5ibpGySX1VNHeBCwAMbFT93fh5otb5qUWA%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg"/></p></div></div></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><a href="https://mp.weixin.qq.com/s/hsd-LFlV3x_q_PYHwfSGfA#rd">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=1c0a90f2&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546066%26idx%3D1%26sn%3De6c3d3e8d00d9383dea8f4126b5e1b5f">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 17 Jul 2026 12:00:00 +0800</pubDate>
    </item>
    <item>
      <title>从&#34;机械应答&#34;到&#34;服务伙伴&#34;：得物高可控智能客服的 Agent 工程实践｜AICon 演讲整理</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247546029&amp;idx=1&amp;sn=bfd40c235e8c5bdbab9acac15aea8bcf</link>
      <description>本次分享围绕以下核心技术展开：客服 Agent 挑战与架构设计（Single-Agent→Multi-Agent→Harness）；高可控性数据飞轮（PE 自动化 + DPO 训练）；RL 策略训练和人工经验对齐；多轮半双工消息流控制。</description>
      <content:encoded><![CDATA[<p>原创 <span>天行</span> <span>2026-07-15 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=7f2a1693&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHthwnkS1f7qxeC16FPTt3IgZT4AJjGHHs8ST6ViaVsqV6urWoHlYrVjOn3aGN1s4Nm5vOm6eLfaP4COmX4qbzGkY3R4cP4Ms16g%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>本次分享围绕以下核心技术展开：客服 Agent 挑战与架构设计（Single-Agent→Multi-Agent→Harness）；高可控性数据飞轮（PE 自动化 + DPO 训练）；RL 策略训练和人工经验对齐；多轮半双工消息流控制。</p>
  <p style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100040703" data-ratio="0.18232558139534882" data-s="300,640" type="block" data-w="1075" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、智能客服当下的痛点</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、智能客服 Agent 落地的必然性与挑战</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.Agent 智能客服的必然性</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.Agent 智能客服的挑战</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、客服 Agent 多轮协商优化（高可控性 PE 自动化）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.单场景架构演进</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.跨场景 Harness 架构</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.数据飞轮：PE 自动化与模型训练</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、RL 决策训练：让 Agent 学会&#34;正确决策&#34;</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.训练框架</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.实验</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、情感温度：人类经验对齐模型蒸馏</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.服务测评标准</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.模型蒸馏训练</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.人工对齐效果</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、多轮消息流控制：半双工对话逻辑设计</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.消息收发模式</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.多消息处理策略</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">七、总结与展望</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">   1.本次实践总结</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">   2.未来展望</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">智能客服当下的痛点</span></strong></p></div></div></div></div></div></div></div><p style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">听不懂人话、自作聪明：</span></strong><span leaf="">无法准确理解用户意图，频繁答非所问。</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="letter-spacing: 0.034em;background-color: transparent;"><span leaf="">成本高、排队严重：</span></strong><span leaf="" style="letter-spacing: 0.034em;background-color: transparent;">高并发场景下人力无法覆盖。</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="letter-spacing: 0.034em;background-color: transparent;"><span leaf="">问题解决能力弱：</span></strong><span leaf="" style="letter-spacing: 0.034em;background-color: transparent;">只能处理简单 FAQ，复杂多轮问题无能为力。</span></p></li></ul></p><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5018518518518519" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062364" src="https://wechat2rss.xlab.app/img-proxy/?k=9ee4ad46&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtStTibJKqqb20f3b4106IRHQdYPtfWqz7IvkSZzPRhheSVA3fV5je8bVGPBAI7fKKqGOudvty5e7QlCIGTueYbG4EA4tO6SFL0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">二</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">智能客服 Agent 落地的必然性与挑战</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Agent 智能客服的必然性</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">传统结构存在上限：</span></strong><span leaf="">意图分类 + NER + 对话管理 + FAQ 召回 + 重排的流水线架构，无法处理多步骤任务，上下文衔接不畅。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8314814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062365" src="https://wechat2rss.xlab.app/img-proxy/?k=24b998a2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHs6zYq1BXTeLJ74RbqeQGT8GDpq7icbicw4qiaqML39RofbF3eX39qeCflYASSicWicmLFMcTBjmtl2yF5ELMSwYSiaFHtmemPkzeFB4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">SOP 人工维护成本高：场景问法无法穷举。多模型运维成本高：多套小模型分头部署，“牵一发而动全身”，运维成本极高。会话拟人度 / 流畅度不佳：出话单一，无法复刻优秀人工的决策和话术能。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6796296296296296" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062363" src="https://wechat2rss.xlab.app/img-proxy/?k=b9d0a36a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvgnnQ3WpQkyNiaIicJbOyCSoQsKQ1Jmh0YNs1U7I2KxYTS0Ux298y7L05ibBQL7VPn6lxQdXBIb3ib6lhTt1kJfgcBaYVRKFrIjYk%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3287037037037037" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062362" src="https://wechat2rss.xlab.app/img-proxy/?k=55b351c3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtZmfUb3DyWawyjG9Bic2Q8ibN5emGZoDUAmBbS4iaD1yjhLiaZts8NJCA7cUgwvwBicvE508W5VJAwjRHVEjVibMmMhGeibFV2tgibibdg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Agent 智能客服的挑战</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">场景复杂指令优化成本高：场景复杂，知识流程繁琐，长尾 case 的 PE 优化成本高。长 Context 多轮能力不足：结合用户多样性需求和长历史上下文的多轮决策 / 协商挑战较大。对齐人工拟人化能力不足：人工回复多样性高，昵称 / 话术 / 表情 / 模态运用灵活，需要 “人工辅助 Agent”。多轮半双工下消息控制：推理时长较长，半双工环境下，消息打断 / 上下文话题切换，控制难度较大。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3022700119474313" data-s="300,640" data-type="png" data-w="837" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062361" src="https://wechat2rss.xlab.app/img-proxy/?k=0f9efec3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv146N683OS6CBuNv6icoLViavQWQQKjiaqnO5UlQnv9oWHlJAJP5icQ3dBFL88Nm411qIo2Q2g6uictugnklUn3eIzLRbFlNsYM0x4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">客服 Agent 多轮协商优化（高可控性PE自动化）</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">单场景架构演进</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一阶段：Single-Agent（单 Prompt）</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于 Qwen 的 Single-Agent 架构，问题在于：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Prompt 过长，模型指令遵循能力有限。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">串行 Pipeline 无法实现 Agent 多轮 ReAct。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第二阶段：Multi-Agent（渐进式披露）</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">采用 AutoGen 的 Multi-Agent 架构，引入：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">总控 Agent：负责任务调度与流程管控。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">出话 Agent：负责生成最终回复话术。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">评估器 Agent：对输出质量进行实时评估。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">润色 Agent：提升回复的自然度和拟人感。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过 `SelectorGroupChat` 模式实现动态调度，</span><strong style="box-sizing: border-box;"><span leaf="">解决率提升明显</span></strong><span leaf="">。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.223148148148148" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062370" src="https://wechat2rss.xlab.app/img-proxy/?k=c0623a79&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsrs5icmtSDaKFOQ6hFdP9EQjKf4KEJPmuTQAJvkXmjtaZIX3J1yDy3yLiamh999ibkzaAMleicY7GrJGENjllSicnsibfM0cxCKhfME%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">跨场景 Harness 架构</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为解决跨场景复用问题，进一步演进至 </span><strong style="box-sizing: border-box;"><span leaf="">Harness 架构</span></strong><span leaf="">，核心能力包括：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">跨会话 Memory：</span></strong><span leaf="">支持用户历史上下文记忆。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">上下文压缩与轨迹压缩：</span></strong><span leaf="">有效管理长对话。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">总控 Agent 管理：</span></strong><span leaf="">提高回复可控性。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">数据飞轮驱动模型持续优化</span></strong><span leaf="">。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Skill 自动化生成</span></strong><span leaf="">（进行中）。</span></p></li></ul></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5518518518518518" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062369" src="https://wechat2rss.xlab.app/img-proxy/?k=2d501886&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsMOlGzNWtQCykhibIqRwic9licxCyMQCJaWkWLOseQQZicbkcGBoyCIEaEVibeIiaqFO5JqKQcCAKmpLZOPkjqPn559EicE2SETZr94o%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">数据飞轮：PE 自动化与模型训练</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">PE 自动化优化</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">人工 Prompt Engineering 存在明显痛点：时间成本高。多个 case 引发 Prompt 冲突与歧义。Token 成本和指令遵循能力有限。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为此，我们构建了 <span textstyle="" style="font-weight: bold;">PE 自动化流水线：</span>对比数据抽取：LLM 抽取转人工 case 中 Agent 回复（Bad）和人工回复（Good）。PE 修改建议：LLM 分析 Prompt 修改建议。人工 Review：人工标注 check 是否可行。离线跑测：合并修改建议，跑测同批数据。上线实验：积累数据，持续优化。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 50%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9453924914675768" data-s="300,640" data-type="png" data-w="586" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062366" src="https://wechat2rss.xlab.app/img-proxy/?k=acf7c42f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuoAickcYOspPJAe2SqXG7IdthicibBbNspEBiaHkaoibdUnkqoHSLXTBfJwRJoQI38uEEqkFhNCHBacOMdpoPockiaXyEhq8oibpVbSI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">效果验证：</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.21388888888888888" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062368" src="https://wechat2rss.xlab.app/img-proxy/?k=d4f8919c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtKpIZ3hwq2KoeEHPnYl5ONKmwXRibEqia6HdJR6GwU7jInGUAZ5Pdv0aK0iaWArW0B7wZwrThXpZdXZ652lULq9pTntQicDn16RPw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19814814814814816" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062367" src="https://wechat2rss.xlab.app/img-proxy/?k=e546f274&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuYhrqvhmMuH7IqylG9TvSZ5ME0gjzl3hpLoOUna4f1OcTz1hJATjHlb446rxuETeiaxwxbS4MY2OjG3G0WJGBNbEN0iawRCkJpQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">数据飞轮-模型训练</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过 </span><strong style="box-sizing: border-box;"><span leaf="">DPO 模型训练飞轮</span></strong><span leaf="">，利用 “LLM-as-a-Judge” 搜集回流数据并重新训练：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">能否回复判别模型。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">回复正确性模型。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">是否拟人判别模型。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">构造 chosen 和 reject 样本。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">训练润色模型。</span></p></li></ul></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.21296296296296297" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062375" src="https://wechat2rss.xlab.app/img-proxy/?k=a6cbe693&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsygdiclhOWJHcabvzGEzu2IWWeEicib2H5icAIib8pcfJpyW7OkibyEARcHPGpibGP89QqwC5MiaVk3xibbtRe4Wj1ukdkuBE73jqBb6Ps%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">四</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">RL 决策训练：让 Agent 学会&#34;正确决策&#34;</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">训练框架</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">RL 训练框架分三大模块：</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">数据基建</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">线上反馈数据采集，策略埋点构造 Multi-turn RL 训练数据。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">专家模型生成决策理由，进行 CoT-RL 训练。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">MCP Server 部署实时 Tools 调用。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">模型训练</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Cold-start SFT 预热。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">可验证奖励：Rule-Based-Reward。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">生成式奖励：Model-Based-Reward。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">GRPO 训练。</span></p></li></ul></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.262037037037037" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062374" src="https://wechat2rss.xlab.app/img-proxy/?k=0a382b97&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHunszvdNcqibSMYo519bNGJoaGMhRBrJiaj6wHHLKfHl8AdeGuN4rKVGvSia1QosvltEkWPWWFZTFiaCWJAZFqUR6oEJITcVEps6c8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">评测体系</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">LLM-as-a-Judge。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">人工评测。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">用户模拟器一致性评测。</span></p></li></ul></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">对抗 Reward Hacking</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">优化 Reward。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">解决数据有偏问题。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">增加思考过程 - CoT 训练。</span></p></li></ul></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">训练效果对比</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18518518518518517" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062371" src="https://wechat2rss.xlab.app/img-proxy/?k=69d1c6fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtHLIXAxShl1rDHO4scF4L2fDxvHqicayM7iaXJ0lFB3KicmN9zc5ItozacDH6hYyw3WRvPG54gOEE2SibcjAtxicOMXGwwaPu50dgc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">实验</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">消融实验</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">不同 epoch 对比。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">不同 cold-start sft 底座对比。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">不同 lr 对比。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">业务干扰度消融实验</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">A 业务。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">B 业务。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">A 业务 + B 业务。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">RL 训练减少灾难性遗忘</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">测试标准：</span></strong><span leaf="">C-Eval、CMMLU</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">规避方法：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">降低学习率（全量训练 ≤ 5e-5）。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过 eval-step 实时监控通用基准指标。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">限制训练 2~4 epoch。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">数据比例控制：模型自推理 VS 模型依赖 Tool 调用 = 1:1。</span></p></li></ul></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6259541984732825" data-s="300,640" data-type="png" data-w="786" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062372" src="https://wechat2rss.xlab.app/img-proxy/?k=a79efc40&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs7gpbcxxpNwaksvpfJLShKSqg35haEar6IwQricWiaWiaarGcOfFicrfbkjtUgn6C4tKT7SVCfT5yq2ibrMDQ1cB8Glqvuoe1FLhf8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">情感温度：人类经验对齐模型蒸馏</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">服务测评标准</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">建立了完整的百分制测评体系：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2462962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062373" src="https://wechat2rss.xlab.app/img-proxy/?k=ce300503&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvrGJrlMbrsDolclicxhRqnLFTWg1FsS5lRz4ibVUSgwURoRwxxOzt3EGdFcloT34U5gwe7y5GicgZpiakCicOYnIxiclBHU26jrTCpo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2857142857142857" data-s="300,640" data-type="png" data-w="1008" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062377" src="https://wechat2rss.xlab.app/img-proxy/?k=2efc6073&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHueGTHSGQFlLmuBkxqnOiccN4vRSRy6eCicTcZ7uzPWib92lb12Iiat4hPs43hYNWRPf2xUa3aXuqylz5ywAbOF2icFkKtCeshYBgv0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">模型蒸馏训练</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三种训练模式协同工作：</span></strong><span leaf="">CoT-RL 策略蒸馏：蒸馏优秀客服的决策逻辑；DPO 话术蒸馏：对齐对话语气、减少重复、规范表情包和称谓使用；表情模块：表情分类 + 语境分析，精细化控制表情使用时机。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">表情分类体系：</span></strong><span leaf="">开场欢迎 / 积极开心 / 思考疑惑 / 抱歉安抚 / 提醒强调 / 期待等待 / 完成确认 / 正在努力 / 物流配送 / 价格优惠 / 对接售后 / 结束感谢。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">人工对齐效果</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">模型评分接近 Top5% 优秀人工水平。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多轮消息流控制：半双工对话逻辑设计</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">消息收发模式</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">智能客服场景特殊性：用户可随时发送消息（全双工），但 Agent 回复期间不应被打断（半双工）；</span><strong style="box-sizing: border-box;"><span leaf="">用户→Agent：</span></strong><span leaf="">全双工，可打断；</span><strong style="box-sizing: border-box;"><span leaf="">Agent→用户：</span></strong><span leaf="">半双工，不可打断。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多消息处理策略</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.14907407407407408" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062376" src="https://wechat2rss.xlab.app/img-proxy/?k=9b1cb83c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHthjicCnfDliaXoWLkX515p9HPKNXtkJNDqxyWcVQyon2OVZ9iamFpRIMVd6kDc4MMTc1nHUVt8xtiaZVmba6dRezvWBwGbT687blQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9731481481481481" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062380" src="https://wechat2rss.xlab.app/img-proxy/?k=6514bec8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsJfPeJtDsjWa2hVeRPvWBaN5fjiaN0txOjALicicQhMibpNqOGTliaSQZUmrmku9A3Fvib0W5hgNoqOgf0gicgicEKbXOBCzYjkGgXy0Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为实现精准的消息合并/切分判断，训练专用分类模型：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">数据采集：</span></strong><span leaf="">拉取线上用户连续消息进行标注。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">数据增强：</span></strong><span leaf="">负样本 LLM 扩写。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">模型训练：</span></strong><span leaf="">Qwen3-4B 分类训练。</span></p></li></ul></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">七</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">总结与展望</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">本次实践总结</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">本次分享围绕以下核心技术展开：客服 Agent 挑战与架构设计（Single-Agent→Multi-Agent→Harness）；高可控性数据飞轮（PE 自动化 + DPO 训练）；RL 策略训练和人工经验对齐；多轮半双工消息流控制。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">未来展望</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24814814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062379" src="https://wechat2rss.xlab.app/img-proxy/?k=1d528a39&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuBxyqevmD8w3AWp7D15sFByGRJicjcHVnwOVibNCWSwlDQRno7A5iawO4nYEEZwQH1lmVq9NHX3Wg4PpELQbiavNHyI9dGqLV2AYQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545826&amp;idx=1&amp;sn=ebb5f57a0094dafcb1c43ac135f1a48b&amp;scene=21#wechat_redirect" textvalue="得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545821&amp;idx=1&amp;sn=3234c5ee286b9efa19c14ef3b9a2fb1c&amp;scene=21#wechat_redirect" textvalue="得物 OceanBase 落地实践" data-itemshowtype="0" linktype="text" data-linktype="2">得物 OceanBase 落地实践</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545653&amp;idx=1&amp;sn=e7c008cf208a9b5d535349dedc667651&amp;scene=21#wechat_redirect" textvalue="AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545565&amp;idx=1&amp;sn=2408887769f776089b6421e7bea8657e&amp;scene=21#wechat_redirect" textvalue="从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545481&amp;idx=1&amp;sn=3bba2e63d88f2b54d75943ba92b63686&amp;scene=21#wechat_redirect" textvalue="从表单到 Agent：得物社区活动搭建的 AI 实践之路" data-itemshowtype="0" linktype="text" data-linktype="2">从表单到 Agent：得物社区活动搭建的 AI 实践之路</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 / 天行</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062378" src="https://wechat2rss.xlab.app/img-proxy/?k=c37b6181&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtEtxszicmelkwxib2Ugh8ey0dH37KMMZHfywMuL4ibWQByTXwnunXVEHTmaDW6wbibicZYHt3KdUYmMJHiasRDS0v7urg1RlnWJaqJM%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=dc5b7dbc&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247546029%26idx%3D1%26sn%3Dbfd40c235e8c5bdbab9acac15aea8bcf">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 15 Jul 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>得物推荐系统诊断 Agent：从 “调接口” 到 “会思考”｜AICon 演讲整理</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545826&amp;idx=1&amp;sn=ebb5f57a0094dafcb1c43ac135f1a48b</link>
      <description>本文为得物技术专家 AICon 上海演讲实录，属《得物推荐 AI Harness 工程化实践系列》中篇。系列共三篇，本篇（中篇）详解自研AI Harness整体架构框架、全流程安全防护机制、混合智能体核心算法实现，以及工业级工程落地的实战细节。</description>
      <content:encoded><![CDATA[<p>原创 <span>炎阳</span> <span>2026-07-13 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ab04a3f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHumAiau49Ozjoq9YZUjvxWyk4rZFKMO1krXFrwTibqxpjyv2fYbdyJAHbN4b2Tb9mpJGSoUFeXzHPibyDnhQkXGPhiaYG2CWOBHgLo%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>本文为得物技术专家 AICon 上海演讲实录，属《得物推荐 AI Harness 工程化实践系列》中篇。系列共三篇，本篇（中篇）详解自研AI Harness整体架构框架、全流程安全防护机制、混合智能体核心算法实现，以及工业级工程落地的实战细节。</p>
  <p style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100040703" data-ratio="0.18232558139534882" data-s="300,640" type="block" data-w="1075" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、前世今生：从 “人工排查” 到 “系统沉淀”</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、解决方案：“推查查” 登场</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、Highway 与 ATV，诊断界的 “快”“全” 双模式</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、核心技术解剖：从原理到实现的硬核拆解</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.Story 基座：原子化 Skill</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.Highway Story 编排：剧本驱动的确定性执行</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.ATV 的 ReAct 循环：让 AI “有章可循”</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.辅助诊断：知识库的向量检索</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.进化层：从 “排查记录” 到 “通用方法论” 的进化全流程</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、实战：商品重复推荐诊断</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、写在最后：当 AI 成为系统的 “诊断专家”</span></p></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">本文是得物技术专家在 AICon 上海演讲整理的技术实录。</span><a class="weapp_text_link js_weapp_entry" style="" data-unique-id="mr8sl3dg-a823fc" data-miniprogram-type="text" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="https://aicon.infoq.cn/2026/shanghai/schedule" data-miniprogram-nickname="小外链" data-miniprogram-servicetype="0" data-miniprogram-applink="">AICon上海2026_全球人工智能开发与应用大会暨大模型应用生态展_InfoQ技术大会</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">「得物推荐 AI Harness 工程化实践系列」的中篇内容，本系列共三篇连载。本篇（中篇）</span></strong><span leaf="">进一步详解得物推荐复杂业务场景下，AI代码从生成、防护校验到安全上线的完整技术体系、自研AI Harness整体架构框架、全流程安全防护机制、混合智能体核心算法实现，以及工业级工程落地的实战细节。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">前世今生：从 “人工排查” 到 “系统沉淀”</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“消息提示音响起，一则异常推荐案例告警推送而来。屏幕里是一个异常的推荐 Case，屏幕背后，是研发面对海量 Trace 日志的棘手难题。召回、粗排、精排、策略过滤…… 在多层嵌套的逻辑迷宫里，每一个 </span><span style="background-color: rgb(235, 235, 235);box-sizing: border-box;"><span leaf="">filter_code</span></span><span leaf=""> 或异常分值，都像是一个待解的谜题。过去，我们高度依赖个人经验，甚至需要多方会诊，才能从密密麻麻的代码中揪出那个隐藏的 “地雷”。如果遇到逻辑耦合或实验冲突，排查过程无异于一场漫长的马拉松，不仅效率受限，更让团队陷入低效重复的体力消耗。在这种深度黑盒的运维压力下，开发者始终被动处理各类线上突发问题。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">而现在，“推查查” 的出现，正在终结这种盲目排查的时代。它是推荐系统领域的 “自动驾驶诊断专家”，让复杂的算法逻辑变得透明、可追踪、可预测。从今天起，告别深夜焦虑，让推荐系统真正进入 “白盒时代”！推荐系统的排查焦虑，本质上是知识的不对称与信息的碎片化。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">1.0 经验驱动时代（早期）：</span></strong><span leaf="">这一阶段高度依赖静态文档和核心成员的个人经验。当异常发生时，团队往往需要通过多方汇总、手动检索日志、抓取关键词来拼凑上下文。这种 “地毯式” 的检索方式效率极低，排查过程如同盲目博弈。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">2.0 平台工具时代（中期）：</span></strong><span leaf="">随着截图识别、日志查询和画像看板等 API 的接入，我们实现了排查流程的数字化。虽然解决了 “看得到” 的问题，但本质上依然是 “由人驱动机器”。海量的诊断经验无法沉淀，排查链路依然重度依赖专家判别，难以形成标准化的闭环。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">突破天花板：传统推荐诊断方案的 “三大认知困境”</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在自动化排查的探索历程中，我们落地过多种技术方案，也从中总结出传统架构普遍存在的三类典型局限：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">局限一：</span></strong><strong style="box-sizing: border-box;"><span leaf="">SOP 脚本化的 “线性僵化”。</span></strong><span leaf="">这种方案试图将专家路径固化为固定脚本。虽能快速响应已知问题，但弊端明显：推荐策略与底层架构的快速迭代，使得脚本的更新速度永远滞后于业务变化。面对 “新题型”，这类缺乏灵活性的方案往往表现出极高的维护门槛和极弱的泛化能力。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">局限二：</span></strong><strong style="box-sizing: border-box;"><span leaf="">纯 Agent 模式的 “效率鸿沟”。</span></strong><span leaf="">直接利用大模型（LLM）进行端到端的自主排查，在现阶段仍面临严峻挑战。过高的推理成本（Token 消耗）与较长的响应延迟（分钟级等待），使其难以满足生产环境下严苛的 SLA 要求。此外，模型本身可能存在的逻辑偏离（幻觉），也增加了二次验证的时间成本。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">局限三：</span></strong><strong style="box-sizing: border-box;"><span leaf="">经验孤岛化的 “知识流失”。</span></strong><span leaf="">由于缺乏有效的沉淀机制，核心诊断逻辑往往存在于个人经验中。当发生人员更迭时，便会出现严重的 “知识断层”。现有的工具大多只能停留在 “展示现象”（输出状态码）的层面，而缺乏 “辅助决策”（输出行动路径）的能力。诊断与行动的脱节，导致平均故障修复时间（MTTR）始终处于高位。</span></p></li></ul></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">二</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">解决方案：“推查查” 登场</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在 “推查查” 建设初期，我们曾深度权衡：是基于通用开源框架进行定制，还是采用更具工程确定性的 OpenClaw？最终，我们选择了后者，旨在打通智能诊断 “生产环境落地” 的最后一公里：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">从 “过程耦合” 到 “原子化插件”：</span></strong><span leaf="">传统的链式调用在处理推荐系统复杂的逻辑嵌套时，容易陷入难以维护的逻辑耦合。OpenClaw 的插件化规范（Plugin/Skill）让我们能够将各平台的 API 封装为标准化的 Skill。这种原子化的解耦能力，完美契合了推荐系统多策略、高频迭代的业务底色。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">企业级的 “确定性” 治理：</span></strong><span leaf="">灵活性是 Agent 的利刃，但在生产环境下，确定性才是基石。OpenClaw 框架对 ReAct 逻辑流提供了更严谨的控制机制（如：最大迭代熔断、工具调用白名单等），有效规避了 Agent 陷入逻辑死循环或产生非受控幻觉的风险。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">生态兼容与能力复用：</span></strong><span leaf="">OpenClaw 对演进标准的适配性，确保了我们沉淀的 Skill 资产不仅能服务于 “推查查”，更能在未来低成本地辐射至企业内部其他智能场景，实现 “一套核心能力，全域多处调用”。</span></p></li></ul></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.55078125" data-s="300,640" data-type="png" data-w="1280" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062073" src="https://wechat2rss.xlab.app/img-proxy/?k=0dfe9ac1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsnqibY3oRHnte7TCTZuwq2GLeIdQicDtr9oHthtQDJrCDzZTsx4iark5jDG3qtsYxuvib2bKE6yFgULicfNDEbouicVTHpyf4qO9lBM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Highway 与 ATV，诊断界的 “快”“全” 双模式</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在系统设计中，开发者往往面临抉择：是追求极致响应的线性逻辑，还是追求深度推理的自主智能？我们的答案是：拒绝取舍，兼容并蓄。基于此理念，&#34;推查查&#34; 构建了独特的 </span><strong style="box-sizing: border-box;"><span leaf="">&#34;Highway &amp; ATV&#34; 混合智能体架构</span></strong><span leaf="">。它不是两种模式的简单堆砌，而是效率与智能的深度融合。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Highway（高速路）：</span></strong><span leaf="">这是我们的</span><strong style="box-sizing: border-box;"><span leaf="">标准化诊断流水线</span></strong><span leaf="">，专门负责处理 </span><strong style="box-sizing: border-box;"><span leaf="">80%</span></strong><span leaf=""> 的常见问题。当用户的问题命中了知识库中的标准 Story（比如 &#34;根据截图评测商品&#34;、&#34;某用户推荐不准&#34;、&#34;某个商品被过滤&#34;），系统就会自动进入 Highway 模式。它会像工厂流水线一样，按照预设的标准剧本（Story）一步步执行。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">ATV（全地形越野车）：</span></strong><span leaf="">则是我们的王牌侦察兵，专啃 </span><strong style="box-sizing: border-box;"><span leaf="">20%</span></strong><span leaf=""> 的长尾、复杂硬骨头。当遇到从未见过的异常，比如 &#34;特征服务网络抖动引发精排分数集体漂移&#34; 这种诡异场景，Highway 的固定剧本就失效了。这时，系统会自动无缝降级到 ATV 模式。它基于 </span><strong style="box-sizing: border-box;"><span leaf="">ReAct </span></strong><span leaf="">框架，像真正的专家一样自主规划：先看日志，发现网络错误；然后调用工具检查网络拓扑；再关联分析同时段失败的其他请求…… 一步步推理，直到找到根因。它不依赖固定脚本，灵活且强大。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">关键在于中间的</span><strong style="box-sizing: border-box;"><span leaf="">智能调度器（判定引擎）</span></strong><span leaf="">。用户问题一来，它先去知识库快速匹配，命中标准 Story 就走 Highway；匹配不上或 Highway 执行中卡住了，立刻切换到 ATV 模式。双轨互补，智能切换，确保任何问题都有路可走，有法可用。</span></p></div><div style="text-align: center;margin: 15px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5234375" data-s="300,640" data-type="png" data-w="1280" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062074" src="https://wechat2rss.xlab.app/img-proxy/?k=0f30882d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuNFC4f1qhSmicUp5X3kGia64rDuBibaSWJXO0qLxwCc2kicL3EP9ujia9Ppz9yxvMmiaVwibf7K6Yggxyic1rdDvya8HOT2QXicTgW7HVg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“推查查” Highway &amp; ATV 双轨架构示意图</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">左侧高速路处理常见问题，右侧越野车攻克复杂异常，中间智能调度实现无缝切换。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心技术解剖：从原理到实现的硬核拆解</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">前面说了那么多 “AI 诊断专家” 的故事，是时候掀开引擎盖，看看这辆 “诊断跑车” 到底是怎么跑起来的了。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Story 基座：原子化 Skill</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们基于内部 API 沉淀了一套遵循 MCP 标准的 Skill 工具集（由于数据安全问题，没有上传到公司 Skill 库），这套工具库如同为推荐能力装上了 “通用接口”，不仅支撑了当前 Agent 的精准调度，更形成了一套可复用的技能基座。通过简单的场域适配，这套能力可迅速辐射至社区、广告（欢迎沟通）等场景，成为各场域快速拉起自身 Agent 能力的 “助推器”。几个核心 Skill 介绍如下：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3333333333333333" data-s="300,640" data-type="png" data-w="1644" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062070" src="https://wechat2rss.xlab.app/img-proxy/?k=ca3e8cd0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsxuxPKX8A2l1w38tY6nnudNpbLvyYfmXgAbYo402b2wwTzoDVlcialNIMOO8B1VF1Lh5HASeUo828ajBj0m3pwEgnKyDm2HQAY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这些 Skill 就像乐高积木，Highway 的剧本可以按顺序拼，ATV 的推理引擎可以按需调用。新增排查能力？再封装一个 Skill 加入即可，热插拔，不用停机。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Highway Story 编排：剧本驱动的确定性执行</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Highway 模式的核心是 </span><strong style="box-sizing: border-box;"><span leaf="">Story 机制</span></strong><span leaf=""> —— 把专家的排查路径固化成可复用的标准剧本。每个 Story 本质上是一个有序的 </span><strong style="box-sizing: border-box;"><span leaf="">Skill 编排模板</span></strong><span leaf="">，定义了标准的执行路径。</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Story 结构示例：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="makefile"><code><span leaf=""><span class="code-snippet__section">Story: 商品推荐异常-标准诊断</span></span></code><br/><code><span leaf="">├── Step 1: screenshot-trace-query     <span class="code-snippet__comment"># 截图识别，自动匹配Trace</span></span></code><br/><code><span leaf="">├── Step 2: user-profile-query         <span class="code-snippet__comment"># 查用户购买/点击历史</span></span></code><br/><code><span leaf="">├── Step 3: layer-items-query          <span class="code-snippet__comment"># 看商品在各层曝光情况</span></span></code><br/><code><span leaf="">├── Step 4: strategy-logs-query        <span class="code-snippet__comment"># 核对策略干预（去重/过滤）</span></span></code><br/><code><span leaf="">├── Step 5: commodity-forward-query    <span class="code-snippet__comment"># 查商品正排信息</span></span></code><br/><code><span leaf="">└── Step 6: output_diagnosis           <span class="code-snippet__comment"># 输出诊断结论</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Story 的核心特性：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">确定性执行：</span></strong><span leaf="">每个 Step 严格按照编排顺序执行，不存在 “AI 自主决策”。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">条件分支：</span></strong><span leaf="">支持 if/else 条件判断，如 “若召回结果为空 → 进入召回专项排查分支”。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">热插拔：</span></strong><span leaf="">Story 可独立版本控制，业务迭代时只需更新 Story 配置，无需改动代码。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">降级兜底：</span></strong><span leaf="">当某个 Step 执行失败或置信度低于阈值，自动触发 ATV 降级。</span></p></li></ul></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Story 的诞生方式：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">手工沉淀：</span></strong><span leaf="">专家（即我们的研发同学）手动编排核心排查路径。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">自动进化：</span></strong><span leaf="">ATV 成功解决长尾问题后，通过反思框架自动蒸馏生成新 Story。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这才是 “Highway” 的精髓 —— 把专家脑海里的 “经验” 变成可执行、可复用、可进化的标准化剧本。</span></p></div><div style="text-align: center;margin: 15px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5654911838790933" data-s="300,640" data-type="png" data-w="3176" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062072" src="https://wechat2rss.xlab.app/img-proxy/?k=b7e4fac4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuhsmCD8WkXyyORYkzxqqDrsN7PsgE5Y6OVnSb4dBUEKx3Xf7tRhaQzrgRibNLSr6SGOemaz257jIkW4uczAzc2qdFexPsp7FhM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">story - skill 工具库</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">ATV 的 ReAct 循环：让 AI “有章可循”</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">ATV 模式采用 OpenClaw 框架，实现经典的 ReAct 循环：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="nginx"><code><span leaf=""><span class="code-snippet__attribute">Question</span> → Thought → Action(Skill) → Observation → Final Answer</span></code></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">但 “放飞自我” 的 AI 容易陷入死循环，就像走迷宫时沉迷探索每条岔路，却忘了找到出口。我们给它装上了三道约束。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Max Iterations = 6：</span></strong><span leaf="">最多思考 6 步，再强的专家也必须停下来，防止 “过度推理”。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Tool 白名单：</span></strong><span leaf="">只给它能用的小工具，不让它乱调用（比如不让它访问无关数据）。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">置信度阈值：</span></strong><span leaf="">每步推理都要自问 “这个结论靠谱吗”，不靠谱就换思路，拒绝盲目自信。这套机制让 ATV 既能自主探索，又不会脱缰狂奔。毕竟我们要的是 “越野车”，不是 “脱缰野马”。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">辅助诊断：知识库的向量检索</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">随着推查查深入业务，技术文档、代码架构、业务记忆的积累成为瓶颈。比如，召回渠道 TIDE，它并不知道是首页瀑布流的潮汐召回，只会根据字面意思理解为基于全站热度 / 趋势做的非个性化召回；同时传统的 RAG 方案在代码理解、跨场景关联上存在明显短板。我们探索了一套「上下文引擎 + 知识图谱」的混合架构。</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心组件</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.14945321992709598" data-s="300,640" data-type="png" data-w="1646" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062071" src="https://wechat2rss.xlab.app/img-proxy/?k=2792126d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHt1u1C2v91KhIeib6F33xTmL1nZiaDEWBV839liaABZG2iaxic3QFdpejxxZw4mibLpZxw3JlwQ7lF0BKq9Mbd8IyvJZ7K7dLupYJg1g%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">OpenViking 并非传统意义上的 RAG 工具，而是以 “上下文驱动” 为核心，整合记忆存储、文档索引、语义检索、多 Agent 隔离与共享的本地上下文引擎，主要服务于需要长期记忆、大规模文档检索、多 Agent 协同的 AI 应用场景，尤其适配 OpenClaw 插件生态，解决原生记忆检索弱、多 Agent 数据隔离难等问题。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Graphify（社区常称 Graphify Viki，开源地址：<a href="https://github.com/safishamsi/graphify）是" target="_blank">https://github.com/safishamsi/graphify）是</a> 2026 年爆火的开源工具，核心定位是将本地文件夹（代码、文档、图片等）转化为 “实体 + 关系” 的知识图谱，主打极致省 Token、代码工程理解与多模态适配，恰好弥补 OpenViking 在技术文档深度解析上的短板。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们利用 OpenViking + Graphify 的组合，重构了本地知识库的构建逻辑 ——</span><strong style="box-sizing: border-box;"><span leaf="">OpenViking 负责 “管记忆、管协同、管检索”，Graphify 负责 “做结构化、做解析、做精简”</span></strong><span leaf="">，两者协同实现：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">解决技术文档 “提取记忆失败” 的痛点：Graphify 结构化拆解，OpenViking 存储检索，实现大段技术内容的有效利用。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">极致省 Token：Graphify 精简图谱 + OpenViking 三级分层，大幅降低 LLM 上下文消耗，提升响应速度。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">多 Agent 高效协同：OpenViking 实现数据隔离与共享，Graphify 提供统一的结构化知识底座，适配复杂业务场景。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">整个知识库内容按详细程度分为三层，按需加载，避免上下文膨胀。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19829683698296838" data-s="300,640" data-type="png" data-w="1644" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062075" src="https://wechat2rss.xlab.app/img-proxy/?k=633f71f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs92rAIIKiaGDwqAqkTVLe84QUAHic8LX0Z8QoKzBvIQcjic9UkotFNrsb4DABmN8Tia0vObwWPbywjEuDJwmsHmFtkn1qoOHDI6h0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.587979094076655" data-s="300,640" data-type="png" data-w="2296" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062078" src="https://wechat2rss.xlab.app/img-proxy/?k=524d1a38&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtqfmFEy7CwQORH34kgo8iauXJvlFMUaAGrf9h8ver0WNGl7drhOzY0WUnRDTgicSN2GRsyI7MgiaHE32c3g7kc2EbFQroyx7PyuI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">过去排查故障分为两步：人工定位问题、自主查阅方案；现在 AI 一站式完成根因识别与修复指导，同步给出异常位置与配套执行方案。比如：它不会只冷冰冰地告诉你：“结论：被去重策略拦截。” 它会结合公司的业务 Wiki 和 SOP 手册，附上一句：“行动建议：请去商品管理平台确认，检查商品 ID 是否被误加入‘商品搜推黑名单’。” 从诊断到修复的最后一公里，它也帮你铺好了路。这下，很多简单问题，产品、运营同学自己就能查明白，我们终于能从 “重复答疑” 的工作中解放出来。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">后续优化点：</span></strong><span leaf="">我们现在使用知识库的方式是语义触发，向推查查提问时，只要问题涉及记忆检索或背景知识查询，OpenViking 会自动触发。这种方式有个触发策略问题，推查查 “不知道什么时候该查文档” 或 “该查时不查、不该查时乱查”；现在有几个思路，待后续进行尝试探索看看效果，也欢迎大家一起讨论：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">引入 “确认式检索”</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“在回答技术问题前，你必须先评估：‘我是否拥有该问题的最新配置参数 / 文档？’ 如果答案是 NO，必须调用知识检索 Skill，禁止凭记忆盲目回答。” </span><strong style="box-sizing: border-box;"><span leaf="">核心逻辑：</span></strong><span leaf="">利用 Agent 的思考链（CoT），在查文档前加一个 “自问自答” 的环节；</span><strong style="box-sizing: border-box;"><span leaf="">标准指令：</span></strong><span leaf="">在 System Prompt 中加入固定约束；</span><strong style="box-sizing: border-box;"><span leaf="">效果：</span></strong><span leaf="">强制 Agent 意识到自己的 “知识盲区”，变被动检索为主动索取。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">意图分类触发</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">不要让 Agent 对每一句话都去扫描向量数据库，而是先过一层轻量级的意图判断；</span><strong style="box-sizing: border-box;"><span leaf="">显式触发：</span></strong><span leaf="">训练一个微型分类器（或通过 System Prompt 约束），识别带有 “查询”、“确认”、“对比”、“背景” 等特征的指令；</span><strong style="box-sizing: border-box;"><span leaf="">关键词密度：</span></strong><span leaf="">如果用户输入中包含特定领域的专有名词或长尾词（高 IDF 词），则强制触发检索；</span><strong style="box-sizing: border-box;"><span leaf="">缺点：</span></strong><span leaf="">无法处理隐含的背景需求。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">进化层：从“排查记录”到“通用方法论”的进化全流程</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">进化层的核心是 “反思 - 抽象 - 验证” 三阶段闭环，参考 Hermes 的自我进化机制，让系统从 “排查记录” 中学会 “通用方法论”：</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一步：轨迹剪枝与效能提纯</span></strong></p></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心任务：</span></strong><span leaf="">将冗长的 Agent 思考过程压缩为 “黄金路径”。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">动作：</span></strong><span leaf="">进化引擎回溯 Agent 在原始排查中的所有排查历史、满意度反馈、每日记忆。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">逻辑：</span></strong><span leaf="">识别并剔除试错路径（如：查询了无关的商品信息），仅保留对最终根因定位起决定性作用的工具调用链。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">效果：</span></strong><span leaf="">将原本需要 10 步的繁琐过程压缩为 3-4 步的高效诊断链，实现 “排查路径的最优化”。</span></p></li></ul></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第二步：特征升维与逻辑泛化</span></strong></p></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心任务：</span></strong><span leaf="">脱离单次 Case 的偶然性，提取具有通用性的业务逻辑。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">动作：</span></strong><span leaf="">利用 LLM 的业务感知能力，将具体的 “硬编码数据”（如具体的 UID、特定的 RequestID、某一个商品 ID）自动映射为高维业务变量。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">意义：</span></strong><span leaf="">解决逻辑的 “空间迁移性”，确保该排查经验能自动适配不同用户、不同时间段的同类故障。</span></p></li></ul></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第三步：Story 和 Skill 生成</span></strong></p></div></div></div></div><p style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">动作：</span></strong><span leaf="">将泛化后的逻辑链封装为符合标准协议 Story 和 Skill。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">逻辑：</span></strong><span leaf="">不再编写复杂的代码，而是生成一个包含 “触发条件、执行逻辑、断言检查” 的结构化 skill.md。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">产出：</span></strong><span leaf="">skill.md，可直接存入 Agent 技能仓库（Skill Store），供后续排查秒级调用。</span></p></li></ul></p><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第四步：沙箱 Dry Run 与准入校验</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心任务：</span></strong><span leaf="">建立知识的质量防线，防止不成熟的诊断逻辑污染系统。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">动作：</span></strong><span leaf="">在新技能正式上线前，系统自动抓取过去 7 天内相关的排查 Case。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">回放（Replay）</span></strong><strong style="box-sizing: border-box;"><span leaf="">：</span></strong><span leaf="">强制系统利用新生成的 Story 或者 Skill 对历史 Case 进行自动化回放。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">准入判定标准：</span></strong><span leaf="">自动化排查结论与专家人工结论的一致性是否 &gt; 90%；<span textstyle="" style="font-weight: normal;">决策：</span>达标则合入 Highway（高速诊断通道），不达标则打回进化层重新反思。</span></p></li></ul></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 60%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.8351488743645605" data-s="300,640" data-type="png" data-w="1377" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062079" src="https://wechat2rss.xlab.app/img-proxy/?k=0341ab00&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHviaTG4LGHktwcdaBkGXF86W7Gx5ibhE8LrUOICqUwVpJDyvSCx9kPCwwp56sbzkcpE3m46Dxm04pRbgBPRDryHUW1CNKhb2tBHs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">从此，系统每解决一个新难题，就自动学会一项新技能，自动优化原有技能。知识不再随着人员变动而流失，而是在系统中系统化沉淀。真正实现了 “越用越聪明”，从 “工具” 进化成了有 “诊断能力” 的智能体。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px 5px;box-sizing: border-box;"><div style="display: inline-block;width: 52.5%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.144901610017889" data-s="300,640" data-type="png" data-w="1118" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062077" src="https://wechat2rss.xlab.app/img-proxy/?k=08318063&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHs11oXwN0jaX6pmc41eSAvtLibjCz3M67XHrPTKGH3icduic8VFyj6GlIdpuorH5cIUF2LyK8kS0KvU7Mmxce0iaWwTDueY2lwu4dU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;width: 47.5%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.2807570977917981" data-s="300,640" data-type="png" data-w="634" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062076" src="https://wechat2rss.xlab.app/img-proxy/?k=0848a81c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtlu31dcSxDr3d7dPLsCvRUpB40wsHvhTKaZNobiay97Z5Z4xqsodlTP0YAGf7l5t67YicqM3sFrnof95pQic7VwqjGWJyVRFB06E%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: 52.5%;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">每日进化</span></p></div></div><div style="display: inline-block;vertical-align: top;width: 47.5%;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">提案入库上线</span></p></div></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么我们没有直接照搬 Hermes？</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">其实在 Hermes 出来之后我们已经有初步每日总结和反思机制，但是 Hermes 还是给了我们很大的启发，特别是它的 “反思 - 蒸馏” 机制。但在推荐系统的生产环境下，我们需要的是 “确定性的进化”。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Hermes 像是在 “练内功”：</span></strong><span leaf="">让模型整体素质变强，但你不知道它下一次排查时会出什么招。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">OpenClaw 像是 “打铁铺”：</span></strong><span leaf="">给了我们最好的工具模具。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">推查查则是 “编写拳谱”：</span></strong><span leaf="">我们利用 OpenClaw 提供的 ReAct 框架让 ATV 去 “练实战”，再参考 Hermes 的思想，将实战中那些有效的招式（路径）剪枝、泛化，最后固化成一段段 Highway 的 “拳谱”（Story）。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们有自己的进化层的 “推查查特点”：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">脱离参数依赖：</span></strong><span leaf="">我们的进化结果是 Skill 和 Story。这意味着即使我们明天更换了底层大模型，这些沉淀下来的 “排查经验” 依然可以直接无缝迁移。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">回放准入制：</span></strong><span leaf="">不同于 Hermes 的全自动合入，我们增加了一个 “Dry Run” 校验环节。新进化的技能必须在过去真实 Case 回放中保持 90% 以上的一致性，才能正式进入 Highway 通道。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">资深工程师笔记：“真正的进化不是盲目追求自动化，而是在保持系统确定性的前提下，实现知识的流水线化沉淀。”</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">五</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">实战：商品重复推荐诊断</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这是一个来自内测群的真实案例：“为什么一直给我推送手机壳？”推查查自动执行诊断流程。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="makefile"><code><span leaf=""><span class="code-snippet__section">Story: 商品推荐异常-标准诊断</span></span></code><br/><code><span leaf="">├── Step 1: screenshot-trace-query      <span class="code-snippet__comment"># 截图识别，自动匹配Trace</span></span></code><br/><code><span leaf="">├── Step 2: user-profile-query         <span class="code-snippet__comment"># 查用户购买/点击历史</span></span></code><br/><code><span leaf="">├── Step 3: layer-items-query          <span class="code-snippet__comment"># 看商品在各层曝光情况</span></span></code><br/><code><span leaf="">├── Step 4: strategy-logs-query        <span class="code-snippet__comment"># 核对策略干预（去重/过滤）</span></span></code><br/><code><span leaf="">├── Step 5: commodity-forward-query    <span class="code-snippet__comment"># 查商品正排信息</span></span></code><br/><code><span leaf="">└── Step 6: output_diagnosis           <span class="code-snippet__comment"># 输出诊断结论</span></span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">诊断结论（AI 自动生成）：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">手机壳被 TIDE 渠道召回（TIDE = 潮汐召回，是二次加工后的召回渠道）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">原始召回来源储存在 item.extMap.cns_v2 字段里；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">系统发现用户近期浏览过手机壳类商品（兴趣信号），持续召回了相似商品；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">结论：不是 Bug，是用户行为信号触发的正常召回，只是曝光频次过高影响用户体验。</span></p></li></ul></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2460220318237454" data-s="300,640" data-type="png" data-w="1634" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062081" src="https://wechat2rss.xlab.app/img-proxy/?k=76492030&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHueMSAa8rU3q8XTqKaiaW8O2tss37VlHYttEmkquEO9YWzP7ialib2tSVsnquicQBjmnGpmhUYOmviaGibutxu4ibWJAvj5K5icGlxERdw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">写在最后：当AI成为系统的“诊断专家”</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">回看 “推查查” 的成长之路，它不仅仅是一套排查工具。它是一个有诊断能力、有学习能力、甚至有点 “实战经验” 的智能诊断系统。它把我们这些工程师从重复、低效、充满不确定性的 “玄学 debug” 中解放出来，让我们能更专注于算法本身的迭代与创新。当然 “推查查” 也还在持续的成长和迭代中，偶尔还是会有一些意料之外的回答，它的意义在于，我们开始用 AI 去解决推荐系统自身最棘手的排查难题。这或许是一条通往 AI for System，乃至未来 AGI 时代自治运维的可行路径。下一步，我们可以期待它从 “诊断” 走向 “预防”，在问题发生前就发出预警。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">技术发展的本质，不就是为了让人从枯燥的重复劳动中解脱出来，去从事更有创造性的工作吗？“推查查” 让我们离这个目标，又近了一小步。</span></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545565&amp;idx=1&amp;sn=2408887769f776089b6421e7bea8657e&amp;scene=21#wechat_redirect" textvalue="从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545653&amp;idx=1&amp;sn=e7c008cf208a9b5d535349dedc667651&amp;scene=21#wechat_redirect" textvalue="AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545481&amp;idx=1&amp;sn=3bba2e63d88f2b54d75943ba92b63686&amp;scene=21#wechat_redirect" textvalue="从表单到 Agent：得物社区活动搭建的 AI 实践之路" data-itemshowtype="0" linktype="text" data-linktype="2">从表单到 Agent：得物社区活动搭建的 AI 实践之路</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545376&amp;idx=1&amp;sn=62f5170e2075ef7beaf095de749fec51&amp;scene=21#wechat_redirect" textvalue="从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流" data-itemshowtype="0" linktype="text" data-linktype="2">从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544916&amp;idx=1&amp;sn=25d5c20a7a9d2b0dfed78eaf25598717&amp;scene=21#wechat_redirect" textvalue="让 Claude Code 拥有自我进化和记忆系统｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">让 Claude Code 拥有自我进化和记忆系统｜得物技术</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 / 炎阳</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062080" src="https://wechat2rss.xlab.app/img-proxy/?k=bf701271&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtsOWFybqPW7SpHy8zDchhkKUaOAYPCw2Msiccyg6s5s7oIG4BRcibacajGoWib5kBiaLG7qMPAYVXewjiacCwQU5XiaPiarLxI6RpFW4%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><a href="https://mp.weixin.qq.com/s/8-sf6uvONNfjUIPHMpa_SA#rd">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=215760a8&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247545826%26idx%3D1%26sn%3Debb5f57a0094dafcb1c43ac135f1a48b">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 13 Jul 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>得物 OceanBase 落地实践</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545821&amp;idx=1&amp;sn=3234c5ee286b9efa19c14ef3b9a2fb1c</link>
      <description>得物在线的数据库服务涵盖 MySQL、TiDB、MongoDB、HBase、DuckDB、ClickHouse / StarRocks、向量数据库等多品类，支撑核心交易、运营分析、AI 算法、社区等多业务场景。</description>
      <content:encoded><![CDATA[<p>原创 <span>菲利斯、未文</span> <span>2026-07-08 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=3d9f453e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtNXxosbdCrPYlLCTZDWRFg0ERQEM2yLO5bdoNlibDg1z5x0enFKtbYWz2I0raUAbic1ASLn3EENyNcNvHxTuPEqOfTvAopXicOUs%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>得物在线的数据库服务涵盖 MySQL、TiDB、MongoDB、HBase、DuckDB、ClickHouse / StarRocks、向量数据库等多品类，支撑核心交易、运营分析、AI 算法、社区等多业务场景。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、背景</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、多模数据库 OceanBase 选型</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、落地实践</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.DBA 验证评估</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.业务 POC</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、落地遇到的问题及解决方案</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.迁移挑战</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.运维体系转型</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.团队能力建设</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、未来规划与架构演进</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">背景</span></b></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">得物是全球领先的集正品潮流电商和潮流生活社区于一体的新一代潮流生活方式平台。复杂的业务场景和极致的用户体验追求，对数据库运维和选型提出了更高要求。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">目前得物在线的数据库服务涵盖 MySQL、TiDB、MongoDB、HBase、DuckDB、ClickHouse / StarRocks、向量数据库等多品类，支撑核心交易、运营分析、AI 算法、社区等多业务场景。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">多品类数据库面临运维复杂度高、研发选型难、架构复杂、资源成本高等运维问题。同时业务对数据库性能、可用性、成本要求逐步增高。在持续的数据库调研和选型中，OceanBase 作为多模数据库，逐步进入视野，特别是 4.x 版本引起了 DBA 团队和研发团队的极大兴趣。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">二</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多模数据库 OceanBase 选型</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">OceanBase 基于 Paxos 协议实现多副本强同步，支持单机房到三地五中心多种部署模式，任意副本秒级故障接管，</span><strong style="box-sizing: border-box;"><span leaf="">RPO = 0</span></strong><span leaf="">，</span><strong style="box-sizing: border-box;"><span leaf="">RTO &lt; 8s</span></strong><span leaf="">。同时支持多活与单元化部署，实现跨地域同时写入、跨云灵活扩展，毫秒级同步延迟保障数据一致。在当前业务对可用区级高可用日益迫切的需求下，OceanBase 多活架构提供了从容灾到合规的全方位高可用保障。总体来看，OceanBase 能力与公司业务场景、痛点高度匹配：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">灵活架构：</span></strong><span leaf="">单机分布式一体化能力，让零散 MySQL 小业务从最小规模起步，随增长无缝扩展至分布式集群，同时通过多租户机制按需分配资源，解决小业务整合难、扩展需迁移切换的痛点，实现成本与弹性的最优平衡。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">降低成本：</span></strong><span leaf="">通过分层转储、增量合并和两层压缩，在保障高性能写入的同时大幅压缩存储成本（降幅可达 40%+），解决 MySQL 类业务存储成本高、写放大严重的痛点。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">分层转储：</span></strong><span leaf="">内存数据经 L0 → L1 → L2 三级 SSTable 逐层下沉，避免内存阻塞，保障写入持续性。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">增量合并：</span></strong><span leaf="">仅合并被修改的热点宏块，未修改数据直接复用，有效减少合并开销，降低写放大。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">两层压缩：</span></strong><span leaf="">先以行列混存编码对结构化数据做字典压缩，再用通用算法二次压缩，在性能与压缩率之间灵活平衡，大幅削减存储成本。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">高可用：</span></strong><span leaf="">原生多活架构基于 Paxos 协议，支持任意副本秒级故障接管、RPO = 0，RTO &lt; 8s 及跨地域多活写入，满足业务对可用区级高可用的严苛要求，解决容灾切换慢、异地数据一致性弱、合规部署复杂的痛点。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.30277777777777776" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062144" src="https://wechat2rss.xlab.app/img-proxy/?k=5116ad85&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvg3MhorHb0Ad2OSLIdQUbpmJxdNvaqpSDAcu3Je6rtjSplVWdhoHic6hjra0BkBqnVO204pzyNeWror9bcpNCqxlexcYd4Hd0E%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为了满足业务 AP 要求，增加了 DuckDB / HBase 等品类对比验证</span></strong><span leaf="">；在以 TP / AP 为主要场景进行落地、承接 MySQL、StarRocks 等组件业务的同时，在某业务生产环境高频聚合 SQL 场景下，</span><strong style="box-sizing: border-box;"><span leaf="">OceanBase 综合性能优于 DuckDB（4:2 胜出）</span></strong><span leaf="">，其中 </span><strong style="box-sizing: border-box;"><span leaf="">JOIN 聚合查询领先 81.5 倍</span></strong><span leaf="">，充分体现行列混存架构优势；DuckDB 在纯列存大列表过滤场景略有优势（1.3x），除了 DuckDB，还初步进行了与 HBase 的性能对比，但结果不如预期（因磁盘类型导致 IO 能力存在差距，OceanBase 部署时使用同盘环境，空跑时磁盘 IO 延迟在 2~3ms，如使用 SSD 磁盘进行分盘部署，性能存在明显提升），后续会跟进新版本优化并和社区共建，持续进行调研及方案优化。详细测试验证数据如下：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5992402659069326" data-s="300,640" data-type="png" data-w="1053" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062143" src="https://wechat2rss.xlab.app/img-proxy/?k=258d6e8b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvlLnicGyTn3TVHBG5oLq8BQpibYdlLS9mrGZysAuuDZLvaMiaKmJDibXGdbuflHe4SGkpDgqYg1fEMwt60Ioap0FFwUdicQmHnZ5ic0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6685660018993352" data-s="300,640" data-type="png" data-w="1053" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062145" src="https://wechat2rss.xlab.app/img-proxy/?k=3331476b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsHzJIPmHcp2DUMKAQbC0w95hSBH63IF6e5B4WmNbZ71uQA4kjsAP5eib8xYh3y9ONEhibDsuMdsxHoR0fovR0PaXJOHfKvnibd2Y%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7061611374407583" data-s="300,640" data-type="png" data-w="1055" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062142" src="https://wechat2rss.xlab.app/img-proxy/?k=37b1da4d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHspPeQm9O1n2iag9MAIv6x7UwGmn8qh0kLmQYS0FAvFKDwwuiarhCxRMY7wEPEQzu3EAa1XPI0bLSLvADKFhrfv4PvJlSunmhTKw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6574952561669829" data-s="300,640" data-type="png" data-w="1054" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062141" src="https://wechat2rss.xlab.app/img-proxy/?k=cd8c6e09&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHu2ZlxDFH1Nm2cuiaQXv4fVS7KpmdNjYXhGztHYicRrZfzKDWC5UMA7a1oyoRTY0Yeox0DVOVdm8vHBcgu4aEtLGaRjRr5V62Q5o%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">三</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">落地实践</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">得物数据库选型慎重，对稳定性要求高。近来随着多云、AI、向量等多种战略目标的制定，OceanBase 在稳定性、性能、成本等方面优势逐步凸显，基于 OceanBase 的验证、推广落地也逐步展开。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">DBA 验证评估</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在实际业务推广前，DBA 端进行了详细压测验证，基于不同并发度和行列存储场景，OceanBase 表现出较好的性能水平。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">高并发支持:  </span></strong><span leaf="">在不同的读写模式下，OceanBase 展现出优异的吞吐量表现（TPS 和 QPS）。例如，在 200 并发下，行列混存模式的 TPS 值高达 13076.91，显示出其优秀的处理能力，适合高并发的在线事务处理（OLTP）场景。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">高效的读写性能: </span></strong><span leaf="">在只读和只写模式下，行存表、列存表的性能表现均较为突出。在 100 QPS 情况下，OceanBase 的 TPS 值能够达到 7230 左右，表明它能够高效处理大量查询请求，适合大规模数据的分析需求（OLAP）。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">资源利用率: </span></strong><span leaf="">CPU 使用率在不同负载下表现合理。例如，在 200 并发下，行存表的 CPU 使用率为 63.73%，显示出其在高负荷下的良好资源分配能力。这能够确保系统的稳定性和可靠性。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">灵活的存储引擎:</span></strong><span leaf=""> OceanBase 支持行存、列存及混合存储，能够根据不同的业务需求和数据特性选择最优的存储模式，从而提高处理效率。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">压测和结论参考下图</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3675925925925926" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062146" src="https://wechat2rss.xlab.app/img-proxy/?k=3091acd9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv9OqKqJpARXG3S905CNVTBicngxlUd1AGk6qvK8KFmcuhxHp8qSSVHdvAQ6nclODuPpwrl0x0epjcXZKhb2VLD3RqA2Ir6fZlQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">复杂查询是数据库的验证重点，验证过程中，DBA 团队同时深度对比了 MySQL 和 OceanBase 在复杂查询，比如</span><strong style="box-sizing: border-box;"><span leaf="">聚合查询、分页排序查询等场景中的表现</span></strong><span leaf="">；如下 SQL1 和 SQL2 分别用于获取某一周期内 SQL 审核的执行情况统计和分页排序查询明细情况；</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">SQL1</span></strong></p></div><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="apache"><code><span leaf=""><span class="code-snippet__attribute">select</span> count(distinct(a.field_A)) as count, </span></code><br/><code><span leaf=""><span class="code-snippet__attribute">SUM</span>(CASE WHEN b.`field_B` IN (<span class="code-snippet__number">0</span>,<span class="code-snippet__number">1</span>,<span class="code-snippet__number">3</span>,<span class="code-snippet__number">7</span>) THEN <span class="code-snippet__number">1</span> ELSE <span class="code-snippet__number">0</span> END) AS `total_cnt`,</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">SUM</span>(CASE WHEN b.`field_B` IN (<span class="code-snippet__number">0</span>) THEN <span class="code-snippet__number">1</span> ELSE <span class="code-snippet__number">0</span> END) AS `todo`,</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">SUM</span>(CASE WHEN b.`field_B` IN (<span class="code-snippet__number">1</span>,<span class="code-snippet__number">7</span>) THEN <span class="code-snippet__number">1</span> ELSE <span class="code-snippet__number">0</span> END) AS `done`,</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">SUM</span>(CASE WHEN b.`field_B` IN (<span class="code-snippet__number">3</span>) THEN <span class="code-snippet__number">1</span> ELSE <span class="code-snippet__number">0</span> END) AS `auto` </span></code><br/><code><span leaf=""><span class="code-snippet__attribute">from</span> table_A a  join table_B b <span class="code-snippet__literal">on</span> a.field_A = b.field_C </span></code><br/><code><span leaf=""><span class="code-snippet__attribute">and</span> b.`field_B` IN (<span class="code-snippet__number">0</span>,<span class="code-snippet__number">1</span>,<span class="code-snippet__number">3</span>,<span class="code-snippet__number">7</span>) and b.create_time &gt;= {START_TS} and b.create_time &lt; {END_TS}  </span></code><br/><code><span leaf=""><span class="code-snippet__attribute">where</span>  a.is_deleted in (<span class="code-snippet__number">0</span>)</span></code><br/></pre></p><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">SQL2</span></strong></p></div><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="apache"><code><span leaf=""><span class="code-snippet__attribute">select</span> a.*, SUM(CASE WHEN b.`field_B` IN (<span class="code-snippet__number">0</span>,<span class="code-snippet__number">1</span>,<span class="code-snippet__number">3</span>,<span class="code-snippet__number">7</span>) THEN <span class="code-snippet__number">1</span> ELSE <span class="code-snippet__number">0</span> END) AS  `totalCount` ,</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">SUM</span>(CASE WHEN b.`field_B` IN (<span class="code-snippet__number">0</span>) THEN <span class="code-snippet__number">1</span> ELSE <span class="code-snippet__number">0</span> END) AS `amount`,</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">SUM</span>(CASE WHEN b.`field_B` IN (<span class="code-snippet__number">1</span>,<span class="code-snippet__number">7</span>) THEN <span class="code-snippet__number">1</span> ELSE <span class="code-snippet__number">0</span> END) AS `done`,</span></code><br/><code><span leaf=""><span class="code-snippet__attribute">SUM</span>(CASE WHEN b.`field_B` IN (<span class="code-snippet__number">3</span>) THEN <span class="code-snippet__number">1</span> ELSE <span class="code-snippet__number">0</span> END) AS `auto`, </span></code><br/><code><span leaf=""><span class="code-snippet__attribute">sum</span>(IF( b.create_time &gt;= {START_TS} and b.field_B = <span class="code-snippet__number">0</span>, <span class="code-snippet__number">1</span>, <span class="code-snippet__number">0</span>)) as amount_current </span></code><br/><code><span leaf=""><span class="code-snippet__attribute">from</span> table_A a  join table_B b <span class="code-snippet__literal">on</span> a.field_A = b.field_C </span></code><br/><code><span leaf=""><span class="code-snippet__attribute">and</span> b.`field_B` IN (<span class="code-snippet__number">0</span>,<span class="code-snippet__number">1</span>,<span class="code-snippet__number">3</span>,<span class="code-snippet__number">7</span>) and b.create_time &gt;= {START_TS} and b.create_time &lt; {END_TS}  </span></code><br/><code><span leaf=""><span class="code-snippet__attribute">where</span>  a.is_deleted in (<span class="code-snippet__number">0</span>) group by field_A order by amount desc limit <span class="code-snippet__number">0</span>, <span class="code-snippet__number">10</span></span></code><br/></pre></p><div style="margin: 15px 0px;box-sizing: border-box;"><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这两个是常见的复杂查询 SQL，在 MySQL 中的执行计划调到最优，耗时也需要 1.3s 和 3.9s。在 OceanBase 中对相同的 SQL 进行测试，并进行优化对比，</span><strong style="box-sizing: border-box;"><span leaf="">性能提升效果明显：</span></strong><span leaf="">通过 5 个维度的渐进式优化，<span textstyle="" style="font-weight: bold;">将 SQL2 执行时间从 4s 降至 0.02s，整体性能提升约 200 倍；SQL1 从 1.3s 降至 0.01s，提升约 130 倍。</span>下图详细介绍这几项优化的思路：</span></p></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.41203703703703703" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062148" src="https://wechat2rss.xlab.app/img-proxy/?k=84df0f37&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHv0tfBLp3Dnbksniaic4mMqVNWhlRj2PqZ5RYkvONwzgxDLJ6X6KzNnicfHJCmM81NhS3BNzCUeiaclqMg5yg7VFsqbYcFKFLXia2tI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">OceanBase 通过计划缓存复用、分区裁剪减少扫描、列存索引破最左前缀瓶颈、多核并行执行提速、Hint 指定算法五大特性，从 “计划生成→数据扫描→索引选择→执行调度→算法决策” 全链路压缩复杂 SQL 的执行开销。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4074074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062147" src="https://wechat2rss.xlab.app/img-proxy/?k=0289017e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvMmq78GvhI4EAHPuaGQodoNGwtdTc8hAibIoRzc195AaictwTE55ASJqHZk58xNq3F1CybpvhvT8LVia5g78DXeZ2NicmSrRrXGsU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">需要指出的是，OceanBase 提供了丰富的执行计划 Hint，</span><strong style="box-sizing: border-box;"><span leaf="">让 DBA 可以在 SQL 中直接指定算法，精准干预执行计划的生成。</span></strong><span leaf="">OceanBase 的执行计划 Hint 不是日常调优工具，而是优化器偏差时的兜底干预能力——当生产 SQL 突发劣化、统计信息失准或关联条件复杂导致选错算法时，DBA 可直接在 SQL 中指定算法纠正执行计划，无需改写 SQL，这份能力是 MySQL 所不具备的。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">下图是团队基于 OceanBase SQL 查询计划和 OceanBase SQL Hint 的详细拆解和分析。</span></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6731481" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062171" src="https://wechat2rss.xlab.app/img-proxy/?k=1e4509c8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHv8jNKgR181gRzFiaJvTaUMpT6a9NtgGYWUOra7gVXBqWibOATSxXro4kUzic1WRvVEywLu8bygZtPHric8qKRWxZfK3LWngKib1AtU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7018519" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062172" src="https://wechat2rss.xlab.app/img-proxy/?k=73a97a99&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuVSa7lLVficHNVYm6tjFMQOEeptaVDbsjDAMDqDX5tjRPsgIBp6ISPLVlpbECZwIHZLSrU1icK7NOTTZOIQRVCibtfNaibvJHO0Ls%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">业务 POC</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在正式推广业务之前，OceanBase 在 DBA 团队内部尝试，DBA 内部 AP 报表业务试点，SQL 执行速度平均提升 10~30 倍。DBA 报表业务一直基于 MySQL，存在复杂查询耗时长的问题，大部分超过 1 秒，甚至有超过 30s 才能执行成功，同时复杂查询带来的资源互斥、锁等待等运维问题。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">DBA 内部报表业务整体迁移到 OceanBase，使用 OceanBase 物化视图、行列混存等特性，SQL 执行速度平均提升 10~30 倍，同时通过混沌工程，验证 OceanBase 在各异常场景下的止血手段并形成运维 SOP，积累 OceanBase 运维经验，提振 DBA 团队把 OceanBase 面向业务落地的信心。</span></p></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一个“吃螃蟹”的业务</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在 DBA 内部尝试积累了实践经验后，我们对某业务团队的系统进行了综合评估，该团队共管理多套 MySQL 集群，总规模达百核 CPU、存储量 TB 级，有以下业务痛点：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">TP &amp; AP 混查，CPU 等告警频发：</span></strong><span leaf="">普遍没有只读实例，同时存在大量复杂聚合查询，长期对 TP 业务查询造成较大资源挤占，CPU 经常告警。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">磁盘容量问题凸显：</span></strong><span leaf="">部分 AI 相关 MySQL 磁盘增长迅速，B+Tree 架构下碎片明显；大表较多，执行 DDL 所需预留额外空间较大，磁盘成本压力显著。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">资源分配不合理：</span></strong><span leaf="">QPS 较低的实例较多，即使在最低配置下也存在资源浪费。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">运维处理复杂：</span></strong><span leaf="">存在大量空长事务及异常 DML，常规管控平台无法快速排查。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于业务团队目前遇到的切实痛点，DBA 团队构建了全面的迁移计划，涵盖</span><strong style="box-sizing: border-box;"><span leaf="">平台接入、资源规划、架构设计、集群配置、迁移变更</span></strong><span leaf="">等各个环节，整体迁移流程图如下：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2814814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062155" src="https://wechat2rss.xlab.app/img-proxy/?k=63d43ed0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsXvZ7EJVPvyXQPvVhvqZq1NxHDiaHmkrZoQA2al2iazicW6wzFR3Yia7Ivutc7GRUo4RD7xkB9jgyib6vlVMasL7kC1TJibniaVyzzfs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">业务整体迁移完成后，数据库架构升级，SQL 平均耗时下降 88.3%，业务超时接口清零，总体降本 43%。</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">架构清晰简洁，多套 MySQL 到 1 套 OB 集群，多租户隔离；三个主机便承载团队整体业务，并同时兼顾高可用和 TP / AP 业务资源隔离。集群底层宿主机为云 ECS 实例，共三个 Zone，分别部署在两个可用区，可用区 A 两个 Zone 用于读写业务，可用区 B 一个 Zone 用于只读业务，每个 zone 由若干计算节点组成。集群中也会留出部分冗余 CPU 资源，当租户出现 CPU 告警时，冗余 CPU 可以秒级完成租户的 CPU 扩容。整体架构如下：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6203703703703703" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062154" src="https://wechat2rss.xlab.app/img-proxy/?k=d081c1e8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtQ6yZNz9hKMFWiaibAlQecE6UIwoGrTldWeMbM9VibGVQpG7aMH1U2u1yLo3whQPBvPb7gxE3zgwWmMPGF7Ecxq4h4y6v0JfYLts%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">SQL 平均耗时下降 88.3%</span></strong><span leaf="">，业务超时接口清零，性能提升 8.6 倍，聚合 / 范围查询响应时间较 MySQL 降至 1% 以内，以某研发效能平台为例，AP 相关 SQL 平均耗时从 6.87s 降至 0.8s，性能提升约 8.6 倍，耗时下降 88%。详细数据如下：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5027777777777778" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062152" src="https://wechat2rss.xlab.app/img-proxy/?k=7922e829&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvmAZyDOgAhICfKFpG89wJrJln2byz8ibxrslNicAOo9Xz1jbpp5SI3FfJwSaDxAdTrRWtC9YuFmFkxLVEQl46r7qf8VhdOyyZYs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5109409190371991" data-s="300,640" data-type="png" data-w="914" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062151" src="https://wechat2rss.xlab.app/img-proxy/?k=e88be300&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHurkj8MxEm9o6xJ3aEutagW0ibfUFS50XPDThicVX6Id5sYSK0CQLagTusdnD4icuibHYqHE4oyPrFGz3SZpqg2O0oeOAn1iayGWVbo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">成本收益明显，相比 MySQL 总体下降 43%</span></strong><span leaf="">，主要体现在存储方面，MySQL 迁移到 OceanBase 后，压缩率 80% 以上，简单字段场景压缩比可达 10:1 以上。资源利用上，基于 OceanBase 特有的多租户 PrimaryZone 打散 + CPU 超卖，将集群 ECS CPU 利用率提高到 100%，远超 MySQL 主备架构的 50%。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一个“大换血”的业务</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">数据库底座重组，在有了第一次业务经验后，寻找新“战机”，了解到另外一个业务团队当前有切身痛点：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">传统 MySQL 架构：</span></strong><span leaf="">业务库会在 MySQL 下游接入异构从库，用于业务 B 端运营数据聚合查询。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多套异构数据库支撑业务：</span></strong><span leaf="">运营 B 端原先全走 StarRocks；商家 B 端大活动查询走 StarRocks，小活动查询走 MySQL，通过数据同步工具从 MySQL 异构同步到其他品类数据库。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">业务分流痛点：</span></strong><span leaf="">需要业务手动分流点查 / 聚合查询，而这种分流时常不准确，出现聚合查询走到 MySQL 影响业务的情况。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">存储数据量大：</span></strong><span leaf="">StarRocks + MySQL 占用了大量的存储空间，后续数据一致性依赖同步工具保障。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AP 查询性能急需优化：</span></strong><span leaf="">虽然业务对部分组件进行了拆分以提升查询效率，查询仍然存在提升空间。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在经过全面的 POC 验证及测试后，OceanBase 很好地解决了当前问题，特别是架构痛点，在承载 MySQL 业务的同时，压缩率及性能上均较 StarRocks 更优，在与研发业务高效协作后，对当前架构进行“大换血”，目前已将 StarRocks 部分流量切到 OceanBase 进行 POC，运营 B 端已全部走 OceanBase。并且整体效果超出预期。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">架构升级：</span></strong><span leaf="">从 MySQL + StarRocks 双链路 + 应用层手动分流升级为 OceanBase 行列混存一体化。</span></p></li></ul></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.543127962085308" data-s="300,640" data-type="png" data-w="1055" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062153" src="https://wechat2rss.xlab.app/img-proxy/?k=70f457e1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHutWvUuZk5x4r8Fjsriabut1XnD4qknHcib18bJetEII78j8EPSnqbCXgDvAkqRr3hB9HEwtiawUP9nDtYjib1KfvCEjvaJF4PKx50%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><p style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">消除异构：</span></strong><span leaf="">消除数据同步工具链路，数据从异步滞后到实时可见转变。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">业务分流风险消除：</span></strong><span leaf="">消除应用层手动分流，OB 内部自动路由点查 / 聚合，彻底杜绝分流错误影响业务的风险。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">存储降本：</span></strong><span leaf="">存储从数 TB 级降至百 GB 级，较 MySQL 压缩率达 94%，较 StarRocks 压缩率达 30%。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">SQL 提效显著：</span></strong><span leaf="">OceanBase 的聚合 / 范围查询响应时间较 StarRocks 平均降低 65%（10%-90%），较 MySQL 降至 1% 以内；高 QPS 点查与 MySQL 互有优势，且显著优于 StarRocks。实时性方面，OceanBase 查询完全实时无延迟，而 StarRocks 存在秒级写入-读取延迟。</span></p></li></ul></p><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">更多迁移收益和对比数据参考下图</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.27436140018921473" data-s="300,640" data-type="png" data-w="1057" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062157" src="https://wechat2rss.xlab.app/img-proxy/?k=163451cd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsBQ69uTBIlD5KYbBkickWBB5rMorqyROVQHw9Bxic1jObXvEUaJic2Qy9vMPOq442XpzKlytznKicbaHAAG8MwfBwuLBPc0q83m9s%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 46.5%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3574074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062158" src="https://wechat2rss.xlab.app/img-proxy/?k=eb4884b2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtopby5crLUVccUBRic0ibY93lOpOGodA9xIPbd3UWcGHxz56ia0aqRdpNiciavZq0g6eo0PzQsfA7c1iaprMLIBMLY2mscO8lJicHXGM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;width: 53.5%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.32116788321167883" data-s="300,640" data-type="png" data-w="959" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062156" src="https://wechat2rss.xlab.app/img-proxy/?k=d85c3c3f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuNjEgoiaFtCFkPyqmicBSe1T6gicI45UccCT2E0IXsDhOV5nvyVaKQ2Vib4b6upicd0Mib3Lgz3iaxyew0HumLiamsJQGvHQhfxQMS4as%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.45281220209723544" data-s="300,640" data-type="png" data-w="1049" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062159" src="https://wechat2rss.xlab.app/img-proxy/?k=95fb403c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvq76K1MmRicic8879uFwgrQ9QQpos7ZYMsLWIRefMACUaGNmuOcFga6P6D1gz9tKGQbB4frkfC03aY4KPRWC0s8jg3QBcUOMR98%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">四</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">落地遇到的问题及解决方案</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">目前报表业务及部分 TP 业务已完成 OceanBase 迁移，虽然带来性能和成本的双重好处，但迁移过程也遇到不少问题和挑战，除了性能问题，还包括兼容性等问题。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">迁移挑战</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在 OceanBase 最新的 LTS 版本 4.4.2 实践中，需注意与 MySQL 在 SQL 语法、事务隔离级别、自增列实现等方面的差异，通过业务适配或参数调整解决兼容性问题。性能方面，通过绑定执行计划、错峰刷新物化视图等手段，有效解决了 AP 查询走偏、物化视图卡住等瓶颈。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">更重要的一点是，从传统数据库如 MySQL 等迁移到 OceanBase 时，引入新特性需要特别小心，因为新特性新功能也仍在完善中，不可避免有场景限制甚至功能互斥，比如这里遇到的实时物化视图与 DDL 冲突问题，在引入新功能时须建立严格的准入审核、监控告警和故障演练机制。上线前应全面评估，避免对业务造成非必要影响。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在保障业务稳定性、可用性前提下，通过迁移 OceanBase 来获得性能、成本双重提升，特别是在接下来进入深水区、核心业务推广时，还有不少切实需要解决的问题，需要沉淀总结的经验。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">以下为迁移过程中遇到的问题和总结，例如实时物化视图和 DDL 相冲突、SQL 语法不兼容、用户连接字符串被转义等：</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 35%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9574074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062160" src="https://wechat2rss.xlab.app/img-proxy/?k=7c91252e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvpwbgr1g1r0cdbG2w1Qjne6kc5aV9tJkS1n8zJ6H3ClCfI8qic5OsEm6iaXnslmrSMlibEia9VoSdJlTiaa2ETuHzSn2ibiaytQffXOo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;width: 65%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5025641025641026" data-s="300,640" data-type="png" data-w="975" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062161" src="https://wechat2rss.xlab.app/img-proxy/?k=de34a069&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHu2Qy0EDVT7gTtPC2wEgicP0OARhs4uqbyapTAkaWZUv1RHTiaMeC6lBMG0Mjp3pVzzqa9RWV3WQlBicuWPAAyP9y2fgyzYT1U8Ck%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">运维体系转型</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">运维模式从实例级转为租户级 + 集群级，在监控、备份和容量规划上全面适配 OceanBase 的分布式特性。工具链也相应升级，从云 MySQL 的 “控制台 + 数据同步工具 + 数据库诊断工具 + 自研 DBA 管控平台” 切换为 OceanBase 的 “OCP + OMS + diag + ODC / 自研 DBA 管控平台” 体系，实现管控、迁移、诊断与开发的全链路覆盖。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 53.5%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2351851851851852" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062163" src="https://wechat2rss.xlab.app/img-proxy/?k=a8f3cf40&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtD6TrVyibsGZPQ8Pza4V7mYtT2WtHcvgGoRAkygMMZgB6RQBLibHotYc6JEm20QOLXNfDdBYSOUexbz14yhm1fdcjHkNkX2BV5Y%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;width: 46.5%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.26851851851851855" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062162" src="https://wechat2rss.xlab.app/img-proxy/?k=a25a169c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsOffCauMpqYBvM0FCQmHqyHNSGTJXWJT7UbkmG8nCiagGUDDQn1xpavPaUZvkcFxSdl96XJzh73HEUtQk4Bb0WiciaibLf3sk0DKs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">DBA 团队对 OceanBase 知识框架也进行了梳理：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3962962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062165" src="https://wechat2rss.xlab.app/img-proxy/?k=ce14abfa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsib0vbCYjmZzApf0IxKiaMOKLnYAfRXQfibLXveHDqTe2Pjm7lSb3Q267jsz3osKeKs6ajh0KZoEJzlB5naRWt8Atibvz7VMUx70w%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">团队能力建设</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过 “基础培训 — 深度实践 — 认证培养” 三层路径，DBA 团队系统提升从 OceanBase 架构原理到性能调优的实战能力，并通过达成 OBCP 认证目标，已建立 OceanBase 系统化知识体系框架，训练出 OceanBase 专项运维人员。同时，基于技术分享、项目实战带教和内部知识库等途径，形成 “分享 — 实战 — 沉淀” 的知识转移闭环，持续提升团队能力。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24351851851851852" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062164" src="https://wechat2rss.xlab.app/img-proxy/?k=69c48994&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtpHnQZ1x1cibicASNJlTOrzwiaHpVm3yfp6nsUVdYPWXbguZOH0Joob7Eu2hjETNHHiacKeRk2z1EUeibaMibHNszZ7M4ftWkrTS6ao%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">五</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">未来规划与架构演进</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">未来 OceanBase 在团队中的规划将逐步进入核心区、深水区，同时从成本、性能、效率、AI 智能、AI Agent 底座等多维度为业务赋能提效。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">大致分三个阶段推进：短期（0.5-1 年）夯实基础，建立技术支撑、标准 SOP 和应急演练体系；中期（1-2 年）引入 OBKV 落地业务场景、上线向量检索，完成多云多可用区建设并引流核心新增业务；长期（2-3 年）建成统一多模数据平台，覆盖 90% 数据场景。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4125" data-s="300,640" data-type="png" data-w="960" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062168" src="https://wechat2rss.xlab.app/img-proxy/?k=95bf8eec&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvrXduanhK40vhAGIm8BuGnLmvibD1zwxfGxO1A3jbL3hhhqKmiaUKo3tFSSdzXOwsic4kUbgL3fxWialZmdeEx9swHcdV6kS9ChSA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">围绕 AIOps 方向，从异常检测、根因分析、容量预测到自动调参，构建智能运维全链路能力，实现性能预警、故障自愈和资源规划的自动化与智能化。以 OceanBase 迁移为契机，实现成本、敏捷性、创新与风险四大收益：3 年内 TCO 降低 50%，业务上线准备缩短至 1 天内，覆盖实时分析与个性化推荐等新场景，并达成秒级故障恢复与数据零丢失。持续推动 OceanBase 的全面落地，关注并调研 OceanBase LakeBase 等面向 AI 底座的数据库产品，团队将致力于构建面向未来、面向 AI Agent 的多模多态数据基础设施，解决业务当前痛点，为业务创新提供坚实数据底座支撑。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.477035490605428" data-s="300,640" data-type="png" data-w="958" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062167" src="https://wechat2rss.xlab.app/img-proxy/?k=1bb1326b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuUqCupN409MKI9PSr5UHDe8gQKrGDEnhp6nziaZaMCEmzN2NicBOITiaGCm3muIjNzNFtKP0Cl9Qx1I6iaFgp6szFjichgS44VfW4E%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545653&amp;idx=1&amp;sn=e7c008cf208a9b5d535349dedc667651&amp;scene=21#wechat_redirect" textvalue="AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545565&amp;idx=1&amp;sn=2408887769f776089b6421e7bea8657e&amp;scene=21#wechat_redirect" textvalue="从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545481&amp;idx=1&amp;sn=3bba2e63d88f2b54d75943ba92b63686&amp;scene=21#wechat_redirect" textvalue="从表单到 Agent：得物社区活动搭建的 AI 实践之路" data-itemshowtype="0" linktype="text" data-linktype="2">从表单到 Agent：得物社区活动搭建的 AI 实践之路</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545376&amp;idx=1&amp;sn=62f5170e2075ef7beaf095de749fec51&amp;scene=21#wechat_redirect" textvalue="从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流" data-itemshowtype="0" linktype="text" data-linktype="2">从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544916&amp;idx=1&amp;sn=25d5c20a7a9d2b0dfed78eaf25598717&amp;scene=21#wechat_redirect" textvalue="让 Claude Code 拥有自我进化和记忆系统｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">让 Claude Code 拥有自我进化和记忆系统｜得物技术</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 / 菲利斯、未文</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062166" src="https://wechat2rss.xlab.app/img-proxy/?k=519b0b30&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtULMdhCicCCzSn2TibHwlRl0u1hvbugXVmOr3PjUSZWv5TxrBTKYfaDB22wUvdIHuaBe8NO7EAW5jd7B3JqwrZicY4Sn5OtbOChk%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=50887d90&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247545821%26idx%3D1%26sn%3D3234c5ee286b9efa19c14ef3b9a2fb1c">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 08 Jul 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>AI UITester：AI Native 的 UI 自动化测试新范式｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545653&amp;idx=1&amp;sn=e7c008cf208a9b5d535349dedc667651</link>
      <description>ai_UITester 代表了 AI Native 的 UI 自动化测试新范式：这不仅是工具的升级，而是测试范式的转变 —— 从 “代码驱动” 转向 “视觉驱动”，从 “人工调试” 转向 “AI 自愈”，从 “三端分离” 转向 “统一抽象”。</description>
      <content:encoded><![CDATA[<p>原创 <span>林霖</span> <span>2026-07-01 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=a4d7577f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvpHJmrjWVnYVryJMdk7iaL84Lgpor2pwuzLQNchBzMVAiaNSsESVafpiaxiazHKsibeTIrQ4R41xx7kxO1614PSdibsYFmwXzXiaDoW4%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>ai_UITester 代表了 AI Native 的 UI 自动化测试新范式：这不仅是工具的升级，而是测试范式的转变 —— 从 “代码驱动” 转向 “视觉驱动”，从 “人工调试” 转向 “AI 自愈”，从 “三端分离” 转向 “统一抽象”。</p>
  <p style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100040703" data-ratio="0.18232558139534882" data-s="300,640" type="block" data-w="1075" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、为什么需要 AI Native 的 UI 测试</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.传统方案的三大痛点</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.AI Native 的解法</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、能力一：用例平台数据自动转化</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.问题场景</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.解决方案：自动化 Pipeline</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.核心阶段：LLM 增强</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.Prompt 工程：让 LLM 生成高质量步骤</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.并行增强与断点续传</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    6.实际效果</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    7.Wiki 知识库：消费全景与核心原则</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、能力二：AI 智能调试与用例自愈</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.传统调试的困境</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.AI 智能调试模式</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.失败分类器：先过滤，再诊断</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.五类根因诊断</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.三个真实自愈案例</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    6.置信度机制：宁可漏点，不可误点</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、能力三：VLM 驱动的跨平台统一</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.VLM 方案的革命性</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.统一 API 接口</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.底层驱动自动选择</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.核心执行引擎：BaseAIDriver</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.Prompt 工程的四大约束</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    6.深度思考模式</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、架构设计取舍</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、行业对比：为什么是&#34;新范式&#34;</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.传统方案：Appium / Selenium / XCUITest</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.AI 辅助方案：Test.ai / Applitools</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.AI Native 方案：本文 ai_uitester</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.三条路线的演进关系</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">七、业务成果数据</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.核心效率指标</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.质量提升指标</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">八、总结</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么需要 AI Native 的 UI 测试</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">传统方案的三大痛点</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">痛点一：用例迁移成本高昂</span></strong></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">测试用例平台积累了大量描述性用例，但不可直接执行。QA 需要逐条手动翻译：理解业务逻辑、编写元素定位、调试执行路径。一个中等规模的模块，转化成本可能需要数人天。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">痛点二：调试效率低，人工介入多</span></strong></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">用例失败后的排查流程是：看截图、对比页面、判断失败原因、修改脚本、重新执行。当失败原因为 “弹窗遮挡”“流程变更” 等非显性因素时，调试成本极高。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">痛点三：三端各写一套，维护成本翻倍</span></strong></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">iOS、Android、HarmonyOS 的元素定位方式完全不同，UI 改版时三套脚本同步失效。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI Native 的解法</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19722222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061991" src="https://wechat2rss.xlab.app/img-proxy/?k=d9d57f10&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHt56vBM6VMAicvPbLa7sVRia0jHdaaXAkrqIFQsibpAemWwhuSmgibf3AfdPKuPt37oxruVb8C2WsMn7CQ9jvKibaxMzvcICC0hnLTU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">二</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">能力一：用例平台数据自动转化</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">问题场景</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">内部测试用例平台导出的 JSON 为多层树形结构（目录节点 + 用例节点），每条用例携带面包屑路径、优先级、标签等字段。以某业务模块为例，该结构包含数百个节点、上百条测试用例，最大深度十余层。传统处理方式为 QA 逐条手动翻译，完成上百条用例的转化需耗费数人天。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">解决方案：自动化 Pipeline</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">ai_uitester 设计了自动化 Pipeline，将用例平台 JSON 自动转化为可执行脚本。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="javascript"><code><span leaf="">平台 <span class="code-snippet__title">JSON</span> 导出</span></code><br/><code><span leaf="">  ↓</span></code><br/><code><span leaf=""><span class="code-snippet__title">Phase</span> <span class="code-snippet__number">1</span>: 树结构展平 — 提取所有叶节点及面包屑路径</span></code><br/><code><span leaf="">  ↓</span></code><br/><code><span leaf=""><span class="code-snippet__title">Phase</span> <span class="code-snippet__number">2</span>: 用例解析 — 面包屑路径 → 结构化用例数据</span></code><br/><code><span leaf="">  ↓</span></code><br/><code><span leaf=""><span class="code-snippet__title">Phase</span> <span class="code-snippet__number">3</span>: 去重 — 与已有 suite 去重</span></code><br/><code><span leaf="">  ↓</span></code><br/><code><span leaf=""><span class="code-snippet__title">Phase</span> <span class="code-snippet__number">4</span>: <span class="code-snippet__variable">LLM</span> 增强 — 生成可执行步骤 + 注入 <span class="code-snippet__title">Wiki</span> 知识</span></code><br/><code><span leaf="">  ↓</span></code><br/><code><span leaf=""><span class="code-snippet__title">Phase</span> <span class="code-snippet__number">5</span>: 持久化 — 写入配置文件</span></code><br/><code><span leaf="">  ↓</span></code><br/><code><span leaf=""><span class="code-snippet__title">Phase</span> <span class="code-snippet__number">6</span>: 版本归档 — 记录版本历史</span></code><br/></pre></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心阶段：LLM 增强</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">LLM 增强模块将 “描述性用例” 转化为 “可执行脚本”。输入为用例平台的 Checkpoint 描述（如 “某列表正常展示，可滑动查看更多”），输出是包含 App、Tap、Wait、Assertion、Swipe 等步骤类型的完整 JSON 脚本。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Prompt 工程：让 LLM 生成高质量步骤</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">StepGenerator 使用精心设计的 Prompt，关键约束包括：</span><strong style="box-sizing: border-box;"><span leaf="">步骤类型规范（每种类型有严格的 Instruction 格式）：</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.34444444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061994" src="https://wechat2rss.xlab.app/img-proxy/?k=c537eb38&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvLqbVQJJWIibASwmFTPGNA9ON2xDGpzakZhMd7LgB42lxtp5olWnsv24dHgRkEJiah6fB4Ll2uh9nqX6vzu8iaLialdfvP2pzNROM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">关键设计决策：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">条件弹窗用 Action 类型：弹窗存在时处理，不存在时自动跳过；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">不规范步骤自动降级：校验器兜底，宁可修正也不丢弃；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">每个用例必须包含 App 步骤，否则校验直接报错。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">并行增强与断点续传</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">LLM 增强支持高并发处理，并实现模块级 Wiki 预加载 —— 同一模块的用例共享同一份 Wiki 内容，避免重复调用。Pipeline 每个阶段完成后写入检查点文件，中断后自动跳过已完成阶段。增强完全失败时，构造 Fallback 用例，名称通过多级降级策略确定。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">实际效果</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2953703703703704" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061990" src="https://wechat2rss.xlab.app/img-proxy/?k=66d0a1da&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvgKL5WYWVrr1xficzAUaM6kQgicMoqkEmCEABTol7mBJMqs7kiccFewssufKicaLccgB4KU8rh7too0SrfcwOtsFbR0pmpicXsFs04%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Wiki 知识库：消费全景与核心原则</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Wiki 知识库不是独立文档集合，而是嵌入 ai_uitester 多个核心模块的基础设施层。它被 5 大场景消费：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">用例增强阶段：</span></strong><span leaf="">将 Wiki 知识注入用例生成，使生成步骤更精确；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">自愈诊断阶段：</span></strong><span leaf="">按模块加载 Wiki，辅助 LLM 区分 “UI 变更” 和 “用例描述错误”；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">运行时执行阶段：</span></strong><span leaf="">每次操作时注入索引，LLM 遇到盲区时按需加载对应页面；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">技能消费：</span></strong><span leaf="">多个下游技能读取 Wiki 作为背景知识；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">反馈闭环：</span></strong><span leaf="">每次执行后记录查找日志，持续优化匹配策略。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Wiki 质量直接影响三个核心指标：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19814814814814816" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061992" src="https://wechat2rss.xlab.app/img-proxy/?k=76955a29&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHt0yMyiaumAsL0aYvVT1bQxrCpyC02Hqic7QNPvicC5tzh2z3lJaQlgSYNvFKAxEJSylw0lUbnuSk4L0ZcssUZ4RY8iaAOg01tb3fM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“宁缺毋滥” 原则贯穿始终 —— 五层降级匹配（精确匹配 → 去除优先级后缀 → 去除括号 → LLM 语义匹配 → 跳过并缓存）确保注入 Prompt 的知识准确可靠，错误知识比无知识更有害。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">能力二：AI 智能调试与用例自愈</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">传统调试的困境</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">用例失败后的排查循环：失败 → 看截图 → 判断原因 → 修改脚本 → 重新执行 → 又失败 → ……，一个用例可能要调试多次才能通过。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI 智能调试模式</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">ai_uitester 内置了 AI 智能调试模式，实现自动诊断和自愈修复：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="bash"><code><span leaf="">用例执行（<span class="code-snippet__keyword">while</span> 循环，支持动态步骤变更）</span></code><br/><code><span leaf="">  ↓ 步骤失败</span></code><br/><code><span leaf="">失败分类器（规则引擎）</span></code><br/><code><span leaf="">  ├─ device / <span class="code-snippet__built_in">timeout</span> / network → 自动换机或重试</span></code><br/><code><span leaf="">  └─ business → 进入 AI 诊断</span></code><br/><code><span leaf="">  ↓</span></code><br/><code><span leaf="">AI 诊断（VLM）</span></code><br/><code><span leaf="">  ├─ 输入：✓✗○ 标注的步骤 + 错误信息 + 失败截图 + Wiki 知识</span></code><br/><code><span leaf="">  └─ 输出：diagnosis + confidence + complete_steps + resume_from_index</span></code><br/><code><span leaf="">  ↓</span></code><br/><code><span leaf="">┌──────────────────────────────────────────────┐</span></code><br/><code><span leaf="">│  置信度 &gt;= 阈值              │  置信度 &lt; 阈值     │</span></code><br/><code><span leaf="">│  → 自动应用修复             │  → 弹出人工审核   │</span></code><br/><code><span leaf="">│  → 替换执行步骤             │  → 展示步骤 diff  │</span></code><br/><code><span leaf="">│  → 从 resume_from_index    │  → 超时倒计时     │</span></code><br/><code><span leaf="">│    重新执行                 │  → Accept/Reject  │</span></code><br/><code><span leaf="">│  → 执行通过 → 固化用例      │  → 超时自动 Reject│</span></code><br/><code><span leaf="">│  → 执行失败 → 回退原用例    │                   │</span></code><br/><code><span leaf="">└──────────────────────────────────────────────┘</span></code><br/></pre></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">失败分类器：先过滤，再诊断</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">不是所有失败都需要 AI 诊断。系统通过规则引擎过滤设备故障、超时、网络问题等非业务失败，自动重试；只有业务逻辑失败才进入 AI 诊断流程。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五类根因诊断</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.29444444444444445" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061993" src="https://wechat2rss.xlab.app/img-proxy/?k=0a7dc680&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuWvzau9eDpmk0I8WiaFhWQAbJfnjAjdSlO2MHiaUnsmlibgNFwLicenBYrjUaQ23RzwFiazNarE3dJhoXVNOzRVuDm9z7jbCxyxbTo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三个真实自愈案例</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">案例一：UI 变更 — 功能按钮位置移动（Confidence: 0.9）</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="css"><code><span leaf="">原始：<span class="code-snippet__selector-attr">[tap]</span> 点击底部工具栏的某功能按钮 → 失败：找不到按钮</span></code><br/><code><span leaf="">修复：<span class="code-snippet__selector-attr">[tap]</span> 点击页面顶部功能菜单栏的对应按钮</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">案例二：UI 变更 — 进入页面需要额外操作（Confidence: 0.8）</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="css"><code><span leaf="">原始：<span class="code-snippet__selector-attr">[tap]</span> 点击入口 → 失败：点击后未进入目标页面</span></code><br/><code><span leaf="">修复：在步骤后插入等待，然后重新点击</span></code><br/><code><span leaf="">  <span class="code-snippet__selector-attr">[tap]</span> 点击入口</span></code><br/><code><span leaf="">  <span class="code-snippet__selector-attr">[wait]</span> 等待目标页面加载完成      ← 新增</span></code><br/><code><span leaf="">  <span class="code-snippet__selector-attr">[tap]</span> 再次点击入口按钮            ← 新增</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">案例三：前置步骤失效 — 弹窗遮挡导致后续步骤全部失效（Confidence: 0.9）</span></strong></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">冷启动 App 后弹出确认弹窗，遮挡了首页。AI 诊断洞察到中间步骤虽标记为 ✓ 但实际未产生预期效果，诊断结果为 “前置步骤失效”，将执行指针回退到步骤 2，并在启动 App 后插入条件 Action 处理弹窗。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">置信度机制：宁可漏点，不可误点</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在自动化测试中，“点错位置” 比 “没有点” 危害大得多。置信度校准锚点：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24722222222222223" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061995" src="https://wechat2rss.xlab.app/img-proxy/?k=ad6dcb09&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHu8rr6MJicW7B74xtqGyHBskoWdPibqZmaLSXhYOrEW3WmaZ5VlOcx2pa19SxmFu6eAl5S9ibAzNxZ7ZYnL8n6JFh0tTxfkRicUuuw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">两条铁律：(1) MatchedText 必须从截图中逐字符复制，不允许脑补；(2) 宁可不点击，也不点错。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">能力三：VLM 驱动的跨平台统一</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">VLM 方案的革命性</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">ai_uitester 的核心执行模型是 “截图 → 理解 → 执行” 闭环。VLM 看到的是像素级截图，而非 DOM 结构。这意味着：跨平台天然统一（同一套指令三端通用）、天然免疫 UI 变更（按钮移位照样能找到）、所见即所得（测试逻辑与人类看到的界面完全一致）。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">统一 API 接口</span></strong></p></div></div></div></div></div></div></div></div><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><span leaf="">执行引擎提供涵盖操作、断言、查询、等待等类别的统一 API，屏蔽底层平台差异。</span></span></p><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6842592592592592" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061998" src="https://wechat2rss.xlab.app/img-proxy/?k=82212a61&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHu5ySjF5zTS7UEE5XAlcS12Mic9WrxXwxWMNqzsMe04IHalNPt5icLOa76MYcicVNceFgeibZVtZ5uyHnaeXOa6Ydl3KZhIGibnJJnE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">同一条 JSON 脚本在 Android、iOS、HarmonyOS 上都能执行，无需任何修改。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">底层驱动自动选择</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 14px;box-sizing: border-box;"><span leaf="">根据设备类型自动选择对应的底层驱动框架，上层代码完全无感知。</span></span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24814814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061996" src="https://wechat2rss.xlab.app/img-proxy/?k=1c496fdc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtJLO56XSpROgnpUZ4qdmica31ibTFc8EvUkUpeWHhATjASIv25Kg5M0rpONIGRKX5006NicR6tibOX8hHn1EBHUD8D8QFSqgqiblHs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心执行引擎：BaseAIDriver</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">BaseAIDriver 作为全平台驱动的抽象基类，实现了 “截图→大模型解析→决策执行→记录日志→重新截图” 的感知-决策核心循环，该循环最多执行 20 轮，点击操作配套置信度校验机制，查询知识库后还会强制继续运行。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.6074074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061999" src="https://wechat2rss.xlab.app/img-proxy/?k=d9c0d5c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvARK65Aqib8wJ5koEhdvia72xbaib256dpz3lInp4Giax69ZkDDEONGFJAdNpStRzl6VFxkOCBh0KiaDRgxhDhicVMZbEYGl29LdvUE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.625" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061997" src="https://wechat2rss.xlab.app/img-proxy/?k=ed34d1f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuXuWqu9Kj11VUOdEicBWqEPicr2877SzVa50vNHdNmzttkWzYibVhkp54JDJMhiaWkAEn0FFOrzWNFKR2NOnB8snmYuqaFKjiaxGCs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Prompt 工程的四大约束</span></strong></p></div></div></div></div></div></div></div></div><p style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">约束一：</span></strong><span leaf="">每次只做一个动作。每步操作后屏幕状态变化，逐步执行确保每步决策基于最新画面。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">约束二：</span></strong><span leaf="">元素匹配的严格规则。MatchedText 必须从截图逐字符复制，Confidence &lt;= 0.5 时必须返回 Action: Null。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">约束三：</span></strong><span leaf="">高优先级知识自动注入。弹窗、权限、登录页等无需在用例中显式编写，VLM 自动处理。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">约束四：</span></strong><span leaf="">平台差异化适配。Prompt 根据平台自动切换系统操作指令，上层代码无感知。</span></p></li></ul></p><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">深度思考模式</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">开启深度思考模式后，模型获得子目标分解、进度跟踪（✓/→/○ 可视化）、前后截图对比三项能力，适用于复杂业务流程。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">架构设计取舍</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么 “逐步执行” 而非 “一次规划”？</span></strong><span leaf="">UI 测试的核心挑战是状态不确定性 —— 每步操作后屏幕变化，预先规划可能基于过时信息。代价是单次操作可能多轮 LLM 调用（最多 20 轮），通过深度思考子目标分解来平衡。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么置信度阈值设为0.5？</span></strong><span leaf="">经过大量实测调优，在准确率和覆盖率之间取得平衡 —— 阈值过高则大量操作被拒绝、执行效率低，阈值过低则误点风险上升。当前阈值确保 “通过即正确” 的高可信度。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么自愈返回完整步骤列表而非增量 Diff？</span></strong><span leaf="">增量 Diff 在多次修复后索引容易偏移，完整列表更直观可靠。Token 消耗更大，但避免了 “修复引入新 Bug”。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">行业对比：为什么是&#34;新范式&#34;</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">目前业界 UI 自动化测试主要有三条技术路线，我们从核心技术栈、跨平台能力、维护成本、自愈能力四个维度做一次系统对比。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">传统方案：Appium / Selenium / XCUITest</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心原理：</span></strong><span leaf="">基于元素定位 —— 通过 ID、XPath、Accessibility ID、Class Name 等定位器找到 UI 元素，再执行 Click/Input/Swipe 等操作。底层通过各平台的 Accessibility API 或 UIAutomator 获取 View Tree/DOM 结构。</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">典型代码：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="bash"><code><span leaf=""><span class="code-snippet__comment"># Android（Appium）</span></span></code><br/><code><span leaf="">driver.find_element(By.ID, <span class="code-snippet__string">&#39;com.example.app:id/btn_login&#39;</span>).click()</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># iOS（XCUITest）</span></span></code><br/><code><span leaf="">app.buttons[<span class="code-snippet__string">&#39;登录&#39;</span>].tap()</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># HarmonyOS（Hypium）</span></span></code><br/><code><span leaf="">driver.find_component(<span class="code-snippet__string">&#39;登录&#39;</span>).click()</span></code><br/></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">优势：</span></strong><span leaf="">执行速度快（单步操作毫秒级），社区成熟，CI/CD 集成方案完善，断言能力丰富。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">劣势：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">跨平台重复建设：</span></strong><span leaf="">同一功能三套脚本，三套定位器。一个按钮，Android 用 resource-id，iOS 用 accessibilityLabel，HarmonyOS 用 componentId，三端定位器完全不同；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">UI 变更即失效：</span></strong><span leaf="">按钮文案从 “下一步” 改为 “确认”，定位器失效；页面改版增加一层嵌套，XPath 断裂。一个中等规模 App 每次版本迭代约 15-30% 的用例需要修改；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">维护成本线性增长：</span></strong><span leaf="">用例数越多，维护成本越高。大规模用例集的回归，一次 UI 改版可能需要数周的修复时间；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">无自愈能力：</span></strong><span leaf="">失败即停，需要人工介入判断原因并修改脚本。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI 辅助方案：Test.ai / Applitools</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心原理：</span></strong><span leaf="">该方案在传统自动化框架基础上叠加 AI 能力，主要分为两大实现方向。 AI 元素定位（Test.ai）：依靠 CV 或 NLP 模型替代硬编码的 ID/XPath，可通过截图区域视觉特征匹配元素，或是以自然语言描述替代定位器； AI 视觉对比（Applitools）：借助 VLM 对比截图 Diff，自动判断 “是否视觉回归”，但不会替代底层执行引擎。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">优势：</span></strong><span leaf="">降低了定位器维护成本，自然语言描述比 ID 更具可读性，视觉回归测试能发现传统断言遗漏的 UI 问题。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">劣势：</span></strong></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">本质仍是元素定位：</span></strong><span leaf="">虽然用 AI 做了&#34;柔性匹配&#34;，但执行模型没变——仍然需要找到元素、点击元素。当元素不存在（UI 真的变了），AI 定位也找不到；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">跨平台仍需适配：</span></strong><span leaf="">Android 和 iOS 的截图分辨率、字体渲染、组件样式不同，AI 模型需要平台特异性的训练或适配；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">自愈仅限于重定位：</span></strong><span leaf="">如果按钮从底部移到顶部，AI 定位能找到它；但如果交互流程变了（新增中间页面、操作顺序改变），AI 定位毫无办法。这是&#34;元素级自愈&#34;，不是&#34;流程级自愈&#34;；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">无业务理解：</span></strong><span leaf="">不知道业务规则，不知道为什么某个步骤失败，只能报告&#34;找不到元素&#34;。</span></p></li></ul></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI Native 方案：本文 ai_uitester</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心原理：</span></strong><span leaf="">以 VLM 为执行引擎，以 “截图→理解→执行” 闭环替代元素定位。VLM 不仅识别 UI 元素，还理解页面语义、业务流程和上下文。知识库（Wiki）将业务规则与测试执行解耦。</span></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">典型代码：</span></strong></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="json"><code><span leaf=""><span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;steps&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__punctuation">[</span></span></code><br/><code><span leaf="">    <span class="code-snippet__punctuation">{</span><span class="code-snippet__attr">&#34;type&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;tap&#34;</span><span class="code-snippet__punctuation">,</span> <span class="code-snippet__attr">&#34;instruction&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;点击底部导航栏第一个Tab「社区」&#34;</span><span class="code-snippet__punctuation">},</span></span></code><br/><code><span leaf="">    <span class="code-snippet__punctuation">{</span><span class="code-snippet__attr">&#34;type&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;tap&#34;</span><span class="code-snippet__punctuation">,</span> <span class="code-snippet__attr">&#34;instruction&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;点击页面右上角的发布按钮&#34;</span><span class="code-snippet__punctuation">},</span></span></code><br/><code><span leaf="">    <span class="code-snippet__punctuation">{</span><span class="code-snippet__attr">&#34;type&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;assertion&#34;</span><span class="code-snippet__punctuation">,</span> <span class="code-snippet__attr">&#34;instruction&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;断言页面出现功能入口&#34;</span><span class="code-snippet__punctuation">}</span></span></code><br/><code><span leaf="">  <span class="code-snippet__punctuation">]</span></span></code><br/><code><span leaf=""><span class="code-snippet__punctuation">}</span></span></code><br/></pre></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">同一段 JSON 脚本，Android、iOS、HarmonyOS 三端通用，无需任何修改。</span></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">与传统方案和 AI 辅助方案的核心差异：</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.44074074074074077" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062004" src="https://wechat2rss.xlab.app/img-proxy/?k=9a1a60d5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvGVeSd95hibWt5XMNxPicHibalXZ1C7ySquxJBurOrwD6fHhxjboKO3jBjUUF78fXQPDE5nlGg2lKSsHACOeTOj537d4FftjTNG8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三条路线的演进关系</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三者的关系不是替代，而是能力维度的跃迁：</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="javascript"><code><span leaf="">传统方案（<span class="code-snippet__title">Appium</span>）</span></code><br/><code><span leaf="">  └─ 解决<span class="code-snippet__string">&#34;能不能测&#34;</span> → 提供基础执行能力</span></code><br/><code><span leaf="">      └─ <span class="code-snippet__variable">AI</span> 辅助方案（<span class="code-snippet__title">Test</span>.<span class="code-snippet__property">ai</span>）</span></code><br/><code><span leaf="">            └─ 优化<span class="code-snippet__string">&#34;好不好测&#34;</span> → 降低定位器维护成本</span></code><br/><code><span leaf="">                └─ <span class="code-snippet__variable">AI</span> <span class="code-snippet__title">Native</span> 方案（ai_uitester）</span></code><br/><code><span leaf="">                      └─ 重新定义<span class="code-snippet__string">&#34;谁来测&#34;</span> → 从人驱动变为 <span class="code-snippet__variable">AI</span> 驱动</span></code><br/></pre></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">关键差异一句话总结：传统方案和 AI 辅助方案的假设是 “UI 不变”，所以需要人维护定位器；AI Native 方案的假设是 “UI 一定会变”，所以让 AI 理解变化并适应变化。这是测试哲学的根本转变 —— 从 “抵抗变化” 到 “拥抱变化”。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">七</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">业务成果数据</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">ai_uitester 在得物 App 客户端测试中已落地运行，核心指标如下：</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心效率指标</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24722222222222223" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062001" src="https://wechat2rss.xlab.app/img-proxy/?k=89a4fe45&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtdKxMqZEaQACWrLXKVCFolaIumqhicMFnjl2jpCkzfd6O9augHchiaZ0cOLhMMrrGZSTEN3cWh4vtNYeezRNlCLHOia8Cw06CU7U%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">质量提升指标</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.22592592592592592" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062003" src="https://wechat2rss.xlab.app/img-proxy/?k=d74750ff&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvdUJBAzkGbbicbQB3g9EGFuUKGf11ibvOCG20naMIokm84RwYEVY4xzQFLvV3uFeBjRJlKcAXWhfDpZTic1GWMkTwPZgYTvJEJH0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">注：自愈成功率受知识库质量和执行场景影响，复杂流程变更仍需人工确认。以上数据基于多个核心业务模块的实测均值。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">八</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">总结</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">ai_uitester 代表了 AI Native 的 UI 自动化测试新范式：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19722222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062002" src="https://wechat2rss.xlab.app/img-proxy/?k=5069787f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHugkz8iaRDeppGiaWy1tDc5zR19KN7H83GIRagicSwOqB6nT3cUFfx6HtuQnTuJvFG5SlibfNGea54uIykPHCWo3o6E6u9cYludoRs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这不仅是工具的升级，而是测试范式的转变 —— 从 “代码驱动” 转向 “视觉驱动”，从 “人工调试” 转向 “AI 自愈”，从 “三端分离” 转向 “统一抽象”。Wiki 知识库的闭环设计确保了这不是一次性工具，而是越用越智能的测试基础设施。</span></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545565&amp;idx=1&amp;sn=2408887769f776089b6421e7bea8657e&amp;scene=21#wechat_redirect" textvalue="从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理" data-itemshowtype="0" linktype="text" data-linktype="2">从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545481&amp;idx=1&amp;sn=3bba2e63d88f2b54d75943ba92b63686&amp;scene=21#wechat_redirect" textvalue="从表单到 Agent：得物社区活动搭建的 AI 实践之路" data-itemshowtype="0" linktype="text" data-linktype="2">从表单到 Agent：得物社区活动搭建的 AI 实践之路</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545376&amp;idx=1&amp;sn=62f5170e2075ef7beaf095de749fec51&amp;scene=21#wechat_redirect" textvalue="从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流" data-itemshowtype="0" linktype="text" data-linktype="2">从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544916&amp;idx=1&amp;sn=25d5c20a7a9d2b0dfed78eaf25598717&amp;scene=21#wechat_redirect" textvalue="让 Claude Code 拥有自我进化和记忆系统｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">让 Claude Code 拥有自我进化和记忆系统｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544879&amp;idx=1&amp;sn=4d1a92199b785d5d3d3de1758545adba&amp;scene=21#wechat_redirect" textvalue="用 LLM Agent 重构告警排查流程｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">用 LLM Agent 重构告警排查流程｜得物技术</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 / 林霖</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100062000" src="https://wechat2rss.xlab.app/img-proxy/?k=19b0728e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuy8At6SeXdWDC2R9CtcicJqEbicC6Q7eEj23xOuia9ViaUZZfP8KxfHGFpInSC6qZYiakq54MljgSKF8ca1P3fOiajBQewfvSVkkKUc%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><p><span leaf="">t</span></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=c3eb875d&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247545653%26idx%3D1%26sn%3De7c008cf208a9b5d535349dedc667651">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 01 Jul 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>从狂野代码到按目标生产：得物推荐 AI Harness 的工程化实践｜AICon 演讲整理</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545565&amp;idx=1&amp;sn=2408887769f776089b6421e7bea8657e</link>
      <description>AI 写代码已经不新鲜，真正困难的是：怎么让 AI 在复杂业务系统里按目标、按边界、按质量标准持续生产。得物推荐的答案不是再造一个更会写代码的工具，而是围绕 PDCA 全链路搭建一套 AI Harness，让需求可约束、执行不断点、效果可度量、经验可复用。</description>
      <content:encoded><![CDATA[<p>原创 <span>三白</span> <span>2026-06-29 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ba55c918&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuOABEQk5er56s4v5kOLKicKaljQc2OKRVibFzhnTFlpoTb3bkDIr53A7zKhicSZ7XCYUXkA7GJe2YklBxiaJPicRhSicldm3ZxG9990%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>AI 写代码已经不新鲜，真正困难的是：怎么让 AI 在复杂业务系统里按目标、按边界、按质量标准持续生产。得物推荐的答案不是再造一个更会写代码的工具，而是围绕 PDCA 全链路搭建一套 AI Harness，让需求可约束、执行不断点、效果可度量、经验可复用。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、从 AI Coding 到 AI Builder</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、为什么只做 AI Coding 不够</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、Harness 的本质：不是铁笼，而是环境</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、Plan：用 Contract 把需求变成护栏</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、Do：让 AI 开发零等待</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、Check：让推荐效果 7x24 可度量</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">七、Act：把 Bad Case 变成下一轮能力</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">八、七阶段之后，还有三个深层痛点</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">九、知识治理：文档给人看，Coding 给 AI 戴枷锁</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">十、推查查：Highway 与 ATV 的混合 Agent 架构</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="" data-pm-slice="1 1 [&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);&#34;,&#34;data-pm-slice&#34;:&#34;0 0 []&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;margin: 0px 0px 8px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;p&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;margin: 0px;padding: 0px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;}]">    1.Highway：确定性来自代码</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="" data-pm-slice="1 1 [&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);&#34;,&#34;data-pm-slice&#34;:&#34;0 0 []&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;margin: 0px 0px 8px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;p&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;margin: 0px;padding: 0px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;}]">    2.ATV：长尾问题需要受控探索</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">十一、NOW：从单点提效到工程复利</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">十二、尾声：碳硅梦蝶</span></p></div></div></div></div></div><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p data-pm-slice="0 0 []"><span leaf=""><span textstyle="" style="font-weight: bold;">本文是得物技术专家在 AICon 上海演讲整理的技术实录。</span><a class="weapp_text_link js_weapp_entry" style="" data-unique-id="mqujqqbc-kogjc6" data-miniprogram-type="text" data-miniprogram-appid="wxe81de4a47ea1ab33" data-miniprogram-path="https://aicon.infoq.cn/2026/shanghai/schedule" data-miniprogram-nickname="小外链" data-miniprogram-servicetype="0" data-miniprogram-applink="">AICon上海2026_全球人工智能开发与应用大会暨大模型应用生态展_InfoQ技术大会</a></span></p><p data-pm-slice="0 0 []"><span leaf=""><span textstyle="" style="font-weight: bold;">「得物推荐 AI Harness 工程化实践系列」的开篇内容，本系列共三篇连载。</span>将系统拆解得物推荐复杂业务场景下，AI代码从生成、防护校验到安全上线的完整技术体系，逐一详解自研AI Harness整体架构框架、全流程安全防护机制、混合智能体核心算法实现，以及工业级工程落地的实战细节。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">本篇（上篇）</span>：将整体介绍团队自研的AI Harness体系，包括建设思路、全生命周期防护机制、混合智能体架构及落地效果。</span></p></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">从 AI Coding 到 AI Builder</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI 写代码已经不新鲜，真正困难的是：怎么让 AI 在复杂业务系统里按目标、按边界、按质量标准持续生产。得物推荐的答案不是再造一个更会写代码的工具，而是围绕 PDCA 全链路搭建一套 AI Harness，让需求可约束、执行不断点、效果可度量、经验可复用。</span></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">过去一年，AI Coding 的体验快速成熟。它能写代码、补测试、改 bug，甚至能在局部任务里表现得非常高效。但在真实工程系统里，“能跑” 并不等于 “按目标生产”。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">推荐系统尤其如此：链路长、模块多，改一处可能牵动多路召回；效果变化很难解释，经验也很难沉淀成标准。AI 如果只停留在 Do 阶段，就会变成一个更快的代码生成器，而不是一个能推动业务迭代的工程伙伴。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心变化：</span></strong><span leaf="">AI 化的不只是开发环节，而是整个周期闭环。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">二</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么只做 AI Coding 不够</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">传统工程迭代可以抽象成 PDCA：Plan 对齐目标和边界，Do 完成开发实现，Check 验证效果和风险，Act 沉淀复盘与下一轮优化。AI Coding 主要解决的是 Do，但复杂系统里的失败，往往并不只发生在 Do。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24722222222222223" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061899" src="https://wechat2rss.xlab.app/img-proxy/?k=d3a1ef22&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHu6oX8SAKq40fTS3dAsN0OTVWVhEU0S6uSsiaqcAFMibHEkuImgJFKdiamoibXhKzLMDDmOt0mlIcric6u1jHL57g01FJECibiakRFpFk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">因此，我们推荐做AI的目标不是让 AI “更会写代码”，而是让 AI 进入完整迭代飞轮：目标更清晰、执行不断点、效果可量化、经验可复用。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2462962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061901" src="https://wechat2rss.xlab.app/img-proxy/?k=1cfa6e22&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsUicJ5tNYXMiajZYluhkgDibb2ibSUDjn3UaC2yw7EabOe851Uic6oDCjbe99hKmcG0TAxw2ibIbFhsQGYv5CHOnNFpNGBAduldqcLM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 10px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5311627906976745" data-s="300,640" data-type="png" data-w="1075" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061897" src="https://wechat2rss.xlab.app/img-proxy/?k=f80e6466&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvCmsVlLx7icIT6tp6UlcpFpAUJC9EVTWAmRGoSc2icJ5niaOgdq8P9L7lCBUwhH0KXLHubGLexTuGFZ1YCpqicuC9uzsCQaTHC5Dc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI Coding to AI Builder：能跑不等于按目标生产</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">三</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Harness 的本质：不是铁笼，而是环境</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">讲 Harness 之前，可以先想一部电影：《楚门的世界》。楚门被关在一个巨大的虚假世界里，但真正有效的约束并不是摄像头、海岛或演员，而是环境本身：它让楚门觉得，这就是世界本来的样子。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">好的 AI Harness 也是这样。它不是在 AI 外面挂一串硬规则，而是把目标、边界、依赖、验证和回流能力做进协作环境，让 AI 在“自然行动”的同时不容易越界。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">好的 Harness 不是铁笼，是环境。它让 AI 觉得自己在自由行动，但每一步都天然处在可验证、可回滚、可复用的工程上下文里。</span></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5009259259259259" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061916" src="https://wechat2rss.xlab.app/img-proxy/?k=6bfd6732&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHszGb4u5VPu4ctwbCRaZlp0hrM9PqL8BGTlpmByrcqfYNicfEr9JmiaVib9rS6skn4U9nukGLofdicNJyImjxmAhCd77lSVIEpIL1s%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">楚门的世界：最有效的harness是环境，让他觉得，世界本该如此</span></p></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">七阶段护栏：把 PDCA 拆成可度量协作面</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24537037037037038" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061900" src="https://wechat2rss.xlab.app/img-proxy/?k=0119951c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvUe2Yib8XjZicYJxHw4RZxEeYGRLwxwJ0aPpP6vNf6D6GsFSKRKHQG6T9ibq2uelX7jjCW5iaqEuomuR0bl74DXOfJukSTebwAcGc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 10px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5190343546889508" data-s="300,640" data-type="png" data-w="1077" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061898" src="https://wechat2rss.xlab.app/img-proxy/?k=f070024a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsA2geArSiaUibVxK2LNHGBzX3jRXIL61QwVu80mJmmK3hBqglSU26YlkEiayJFRGd2kwOSR4tkrAyBrQTuUuK248gYrpKG5Q09nA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">七阶段护栏：全面覆盖 PDCA</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Plan：用 Contract 把需求变成护栏</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">很多需求失败，不是因为代码没写好，而是从一开始就理解错了。自然语言 PRD 对人已经有歧义，对 AI 更是如此。所以 Plan 阶段的核心，是把需求改造成 AI 能理解、能执行、能验证的结构化契约。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在得物推荐实践里，T-PRD 会把需求拆成 EP，每个 EP 再绑定影响范围、指标方向、稳定性红线和验收断言。以“负反馈调权”为例，产品说“用户点不感兴趣，希望少推类似商品”，工程上要拆成信号接入、多粒度降权策略、实验与指标护栏等可执行单元。</span></p></div><div style="margin: 15px 0px;box-sizing: border-box;"><p class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"></ul><pre class="code-snippet__js" data-lang="ruby"><code><span leaf=""><span class="code-snippet__symbol">feature:</span>negative_feedback_rerank</span></code><br/><code><span leaf=""><span class="code-snippet__symbol">goal:</span>用户点“不感兴趣”后，减少相似商品曝光</span></code><br/><code><span leaf=""><span class="code-snippet__symbol">scope:</span></span></code><br/><code><span leaf="">  -<span class="code-snippet__title">Signal</span><span class="code-snippet__symbol">:not_interested/dislike</span></span></code><br/><code><span leaf="">  -<span class="code-snippet__title">Rnking</span><span class="code-snippet__symbol">:item/spu/shop/brand</span></span></code><br/><code><span leaf=""><span class="code-snippet__symbol">guardrails:</span></span></code><br/><code><span leaf="">  -禁止核心点击率显著劣化</span></code><br/><code><span leaf="">  -必须保留多样性与新颖性观察</span></code><br/><code><span leaf="">  -所有影响模块需具备回滚路径</span></code><br/></pre></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Do：让 AI 开发零等待</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI 自主开发最怕“等人”。它写完代码跑不起来，拿不到日志，依赖服务不稳定，就会不断回头问人，最终变成一个很贵的自动补全。</span></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19814814814814816" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061906" src="https://wechat2rss.xlab.app/img-proxy/?k=2c36e0b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtx0hYGRN5pyXstAicLDbXd8nhhZSjuu9NoCM246J8TQQn8Y9rO9VIKMmHibbiaq1bNJS2hqTUBF547icnquicuZGUic3tiaaLDoYLUuM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Check：让推荐效果 7x24 可度量</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">推荐系统的 Check 很难，因为很多时候团队自己也无法简单判断“这次推荐到底好不好”。传统方式依赖 AUC、GAUC、线上实验和人工评审，成本高，反馈慢。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Axis 推荐 AI 评测平台引入 AI 评审员，模拟不同用户画像，从新颖性、质量、相关性等维度对推荐结果打分。它不是替代线上实验，而是在上线前多一层体验风险雷达。AI 全量评分，专家抽样复核，再把复核知识沉淀回评测体系。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">关键点：</span></strong><span leaf="">AI 评测不是为了证明模型一定对，而是为了让体验风险更早暴露、让评审口径可以持续沉淀。</span></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="3 4 []"><div style="text-align: center;margin: 10px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5074074074074074" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061902" src="https://wechat2rss.xlab.app/img-proxy/?k=37580815&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuOV3suicTV5C3AaFcvCFZHIibiageBCmoekl2b84UHN5Dibb4OmaWHH9uqGnc6WCgMCRYVQQQY220KVX0DhhpLk1IBugGJsm0XF80%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Check：Axis 推荐 AI 评测平台，把体验评审变成 7x24 自动评审</span></p></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">七</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Act：把 Bad Case 变成下一轮能力</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当线上出现异常，系统会进入 Bad Case 捕获、诊断、沙箱复盘和 Story 沉淀流程。一次问题排查不应该只留下一个结论，而应该留下下一次能直接复用的路径。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">八</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">七阶段之后，还有三个深层痛点</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">流程护栏能解决很多问题，但 Agent 本身仍然有局限：知识会丢、行为会漂、路径不透明。这些不是某个阶段的问题，而是 Agent 工程化承载的问题。</span></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19722222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061904" src="https://wechat2rss.xlab.app/img-proxy/?k=69de7852&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuia3oicTa2kIZRS95yatdsTdFs7W8PQ4BfCRB3SVJbb0Ykzu7Q2Enwd8ooV4WXrZhAeLHuh49lKt3DnM1duE8eSKWonwmws0gGI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">九</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">知识治理：文档给人看，Coding 给 AI 戴枷锁</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">有个程序员笑话：程序员最不喜欢两件事，第一是别人不写文档，第二是我写文档。AI 也一样。你不告诉它规则，它就乱跑；你用纯自然语言告诉它，它又很难稳定理解边界。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">得物推荐把知识分成三层：L1 是整体架构，定义不可逾越的行动边界；L2 是模块设计文档，解释关键取舍和依赖关系；L3 是代码注释，最贴近 AI，读代码时随用随取。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19814814814814816" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061903" src="https://wechat2rss.xlab.app/img-proxy/?k=0b0763b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsyCJRlOicCQL9gGSSmUjAC3yAYBibBib0cynKnBWt3cklS0KR3jnc1nOpaTJ69qRuicsF4qanWEMxRmccMoowyDcicB5In6R5s1iaia8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在实验中，补充 L3 注释后，简单问题准确率从 52% 提升到 91%，复杂问题准确率达到 100%；简单题整体 token 消耗下降 48%，复杂题下降 26%。单次上下文可能变长，但任务完成轮次显著减少，整体成本反而下降。</span></p></div><div style="text-align: center;margin: 10px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5125581395348837" data-s="300,640" data-type="png" data-w="1075" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061905" src="https://wechat2rss.xlab.app/img-proxy/?k=e28a3d5b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtCyDdXblQakKibFX7iczFyibPBwotRGFjgs8DztNaOfKDyIbedbNeCYdUw92635UlLm9dhXlAiaI0X5JjDCWPZ1liaDgL47k22NQys%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">L3 注释评测：让模型从猜测走向可验证</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">十</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">推查查：Highway 与 ATV 的混合 Agent 架构</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在推荐链路排查场景里，一个现实观察是：80% 的问题是高频、可归类、可复现的，20% 的问题是长尾、复杂、需要探索的。两类问题不应该用同一种 Agent 路径解决。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.19814814814814816" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061910" src="https://wechat2rss.xlab.app/img-proxy/?k=3105fc3a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtKmf1cP6Rl99156vkhslk3HVs8ibBgjib8ArqiaD3slQk8c1Tz2tDLXnyibtlmyhqkuAHAXVQy5ShWiaWDJ2G88MdEQGHibjx1cEMFs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Highway：确定性来自代码</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一个经典玩笑是：女朋友让你买两根香蕉，如果看到卖苹果的，就买四根。人会脑补，到底买香蕉还是苹果；代码不会，它只会按条件执行。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Highway 的原则也一样：好的 Highway 不是更会猜，而是不脑补。把稳定路径写进代码，让每一次都在同一个地方执行、同一个地方观测、同一个地方定位错误。LLM 只负责最后的结果润色。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">ATV：长尾问题需要受控探索</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">剩下 20% 的长尾问题无法靠写死程序覆盖。ATV 提供工具、MCP 和约束，让 Agent 按 ReAct 方式自主拆解、调用工具、读取结果、生成结论。探索成功后，Memory 会把轨迹剪枝，把 UID 等一次性特征升维成业务变量，再经过 Dry Run 准入，沉淀为新的 Highway 能力。</span></p></div><div style="text-align: center;margin: 10px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5204841713221602" data-s="300,640" data-type="png" data-w="1074" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061909" src="https://wechat2rss.xlab.app/img-proxy/?k=ddecd8cc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvEILuKfibkpdlkr3Cb3UKbaoqOxhgedDeOWz8Py4zkZQhABBLWkCicbydMLQnVhwsTXDuBKqTZQz51TPpB2OQf8E2A0LvfdUxwE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Memory：把一次成功变成下次默认能力</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">十一</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">NOW：从单点提效到工程复利</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当 Plan、Do、Check、Act 都被 AI Harness 纳入治理，收益就不只是“某个人写代码快了”，而是整个迭代系统开始转起来。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24722222222222223" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061908" src="https://wechat2rss.xlab.app/img-proxy/?k=bd422eb2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsavibFFaJ94JbVUzUw1JZVTsaKufpc1NzQv5mrNDSIFXkp9wlsQvI68v8xBCvyEptf5fKiauBIaKmNEba6qaXLa1yxkj5rqlOeI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这套体系的价值，不是让 AI 替代工程师，而是让工程系统本身更适合人和 AI 一起工作。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">十二</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">尾声：碳硅梦蝶</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">两千多年前，庄子醒来，不知道是自己梦见了蝴蝶，还是蝴蝶梦见了自己。今天的 AI 协作也有类似的错觉：我们一边给大模型写 Prompt、喂 Context、鼓励它进入创造状态；另一边，我们自己在流程、工单、SOP 和评测指标里越来越像一个接口。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">于是，一个有趣的反转出现了：我们把 AI 当人用，接受它的涌现、幻觉和不确定性；同时，我们也把人当 AI 用，把沟通前提、输入输出、执行边界和健康度工程化。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Harness 就是梦境边缘。它不判断谁在做梦，只保证 AI 梦醒时有规则兜底，人类疲惫时有流程支撑。最终的命题不是“AI 会不会写代码”，而是“我们能不能把 AI 纳入一套可控、可度量、可复用的工程协作系统”。这才是从狂野代码走向按目标生产的真正跃迁。</span></p></div><div style="text-align: center;margin: 15px 0px 5px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5342592592592592" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061911" src="https://wechat2rss.xlab.app/img-proxy/?k=0a122eef&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHubY7k1m2Y0XolicKtSIEWYiaWqtLbyhAGFmEqHmpb2tcMv3iarar8Spy2nVr208Isq7JCpwpLJ226ibwcyibej8iaBLIHhickdSYZECs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">碳硅梦蝶：Harness 是梦境边缘，也是工程协作的安全网</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;text-align: justify;"><span leaf="" data-pm-slice="1 1 [&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);&#34;,&#34;data-pm-slice&#34;:&#34;0 0 []&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;p&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;}]"><span textstyle="" style="font-size: 15px;font-weight: bold;">下篇预告：</span><span textstyle="" style="font-size: 15px;font-weight: normal;">「得物推荐 AI Harness 工程化实践系列」</span></span><span leaf="" data-pm-slice="1 1 [&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box; font-style: normal; font-weight: 400; text-align: justify; font-size: 16px; color: rgb(62, 62, 62);&#34;,&#34;data-pm-slice&#34;:&#34;0 0 []&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;font-size: 15px; font-family: PingFangSC-light; box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;p&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;white-space: normal; margin: 0px; padding: 0px; box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;node&#34;,{&#34;tagName&#34;:&#34;strong&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;}]"><span textstyle="" style="font-size: 15px;font-weight: normal;">（中篇）《推荐系统诊断Agent：从&#34;调接口&#34;到&#34;会思考&#34;｜得物技术》将</span></span><span leaf="" data-pm-slice="1 1 [&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);&#34;,&#34;data-pm-slice&#34;:&#34;0 0 []&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;box-sizing: border-box; font-style: normal; font-weight: 400; text-align: justify; font-size: 16px; color: rgb(62, 62, 62);&#34;,&#34;data-pm-slice&#34;:&#34;0 0 []&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;section&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;font-family: PingFangSC-light; font-size: 15px; box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;},&#34;para&#34;,{&#34;tagName&#34;:&#34;p&#34;,&#34;attributes&#34;:{&#34;style&#34;:&#34;white-space: normal; margin: 0px; padding: 0px; box-sizing: border-box;&#34;},&#34;namespaceURI&#34;:&#34;http://www.w3.org/1999/xhtml&#34;}]"><span textstyle="" style="font-size: 15px;font-weight: normal;">基于本文进一步拆解更多原理和工程落地细节。</span></span></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544742&amp;idx=1&amp;sn=95a1c9a7738bbda6f89f887df7767534&amp;scene=21#wechat_redirect" textvalue="得物技术在 AICon 关于大模型与 Agent 技术实践分享来袭！" data-itemshowtype="0" linktype="text" data-linktype="2">得物技术在 AICon 关于大模型与 Agent 技术实践分享来袭！</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545481&amp;idx=1&amp;sn=3bba2e63d88f2b54d75943ba92b63686&amp;scene=21#wechat_redirect" textvalue="从表单到 Agent：得物社区活动搭建的 AI 实践之路" data-itemshowtype="0" linktype="text" data-linktype="2">从表单到 Agent：得物社区活动搭建的 AI 实践之路</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545376&amp;idx=1&amp;sn=62f5170e2075ef7beaf095de749fec51&amp;scene=21#wechat_redirect" textvalue="从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流" data-itemshowtype="0" linktype="text" data-linktype="2">从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544916&amp;idx=1&amp;sn=25d5c20a7a9d2b0dfed78eaf25598717&amp;scene=21#wechat_redirect" textvalue="让 Claude Code 拥有自我进化和记忆系统｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">让 Claude Code 拥有自我进化和记忆系统｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544879&amp;idx=1&amp;sn=4d1a92199b785d5d3d3de1758545adba&amp;scene=21#wechat_redirect" textvalue="用 LLM Agent 重构告警排查流程｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">用 LLM Agent 重构告警排查流程｜得物技术</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 /三白</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061913" src="https://wechat2rss.xlab.app/img-proxy/?k=31a587b8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsgljsge4ABGuOoEYuXXxrO5gQdnkDTcJ1JliaIVOLEmeibyiclXc7LqAicEPDYibf25zbicdSnNQezot7OxKTcpzzMwRzZQPiahgWGuI%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>


<p><a href="https://aicon.infoq.cn/2026/shanghai/schedule">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=6f1f0a31&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247545565%26idx%3D1%26sn%3D2408887769f776089b6421e7bea8657e">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 29 Jun 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>从表单到 Agent：得物社区活动搭建的 AI 实践之路</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545481&amp;idx=1&amp;sn=3bba2e63d88f2b54d75943ba92b63686</link>
      <description>一场营销活动从策划到上线，运营要在三个系统间跳转 10 + 次、填写 40 + 个字段。我们用 AI 重新设计了这条链路 —— 从 “AI 帮你填表单” 到 “两阶段 Agent + 聚合工作台”。这篇文章记录的不是技术细节，而是这条路上的选择和反思。</description>
      <content:encoded><![CDATA[<p>原创 <span>航飞</span> <span>2026-06-24 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=2c06aa98&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuXiaAOJ4mnTiaCppibN4ZOPmjickNsa7zVm5q49ovTYRZgUbZ4BCEKy20DrqFpWiaKb8LvDqwaILx9B271yskpaZyhCDdps5PnqmXE%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>一场营销活动从策划到上线，运营要在三个系统间跳转 10 + 次、填写 40 + 个字段。我们用 AI 重新设计了这条链路 —— 从 “AI 帮你填表单” 到 “两阶段 Agent + 聚合工作台”。这篇文章记录的不是技术细节，而是这条路上的选择和反思。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、项目背景</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、第一版探索与Agent CLI可行性评估</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.让 AI 帮你填表——但人还是主角</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.Agent CLI方案的可行性评估</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、第二版实现与组件模块协议</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.从&#34;填表&#34;到&#34;审卡片&#34;</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.选择 LangGraph 作为编排引擎</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.Interrupt / Resume：前后端的交互语言</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.运营视角：一场活动怎么搭</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.Capability Registry：一个壳装所有场景</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    6.组件模块协议：把差异封进模块</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、第三版设计与工程实践</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.从&#34;我有文档&#34;到&#34;帮我写文档&#34;</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.两阶段架构</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.Stage 1：活动方案生成 Skill</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.Stage 2：聚合工作台</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.表单托管runtime：一个务实的工程妥协</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、架构全景</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、实践中的取舍</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">七、总结与展望</span></p></div></div></div></div></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">项目背景</span></b></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一场营销活动从策划到上线，运营要在三个系统间跳转 10 + 次、填写 40 + 个字段。我们用 AI 重新设计了这条链路 —— 从 “AI 帮你填表单” 到 “两阶段 Agent + 聚合工作台”。这篇文章记录的不是技术细节，而是这条路上的选择和反思。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.562962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061798" src="https://wechat2rss.xlab.app/img-proxy/?k=a6be0ec9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvFEXib115IAHwrUS4nqsXU9NSeiasWYAribhFAQ4b1yA1Mt4pCV7fnzMicR08iavcOFDT6fKGJKoCmdiajV89iaZRcU6zdKqSLh4WHqc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">想象你是得物社区运营，下周要上一场 “夏季户外好物推荐” 活动，你需要打开 A 系统创建话题、切到 B 系统填写活动配置、再打开会场搭建系统配置组件，最后提交审核。三个系统各自独立，但字段高度耦合。活动名称改了一个字，A 系统和会场里也要跟着改，其中大量是重复录入。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">二</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一版探索与Agent CLI可行性评估</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">让 AI 帮你填表——但人还是主角</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们的第一反应是：让 AI 帮运营填字段。做法是一个 5 步表单向导，AI 在第一步解析策划文档，后续步骤中预填字段：AI 的能力来自两个 Dify Workflow（Dify：开源的 LLM 应用开发平台）。第一个负责把策划文档解析成结构化字段，第二个负责把解析结果与系统的下拉选项做语义匹配。效果上，运营从 “全部手填” 变成了 “AI 预填 + 人工校验”。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.1962962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061795" src="https://wechat2rss.xlab.app/img-proxy/?k=4397541a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHs70mao8X7uNDkL6n3ia5w7qTTXZgeX7s2ZWF0cZtHQdgB8MXicerl3qDDzymyYA4bk7yUXBkeCTfgR3bGoAmWSLOub0yk7fmnuA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">上线后发现，操作时间缩短了，但远没有达到 “质的飞跃”。</span><strong style="box-sizing: border-box;"><span leaf="">原因很简单：范式没有变。</span></strong><span leaf="">运营仍然是流程的主体，AI 只是预填了一部分字段，你还是得理解每个字段、按顺序走完 5 步、在三个系统间跳转、自己判断 AI 填得对不对。更具体的问题：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">不可逆</span></span></strong><span leaf=""> —— 文档解析错了就得从头来；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI 是黑盒</span></strong><span leaf=""> —— 调用需要 5-15 秒等待，过程中没有真实反馈；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">组件硬编码</span></strong><span leaf=""> —— 只支持一个模板、5 个组件；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">没有持久化</span></strong><span leaf=""> —— 刷新浏览器进度丢失。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一版给了我们一个重要认知：如果 AI 的角色只是 “帮你填字段”，它永远不会带来质变。</span></strong><span leaf="">真正的变化应该是 ——AI 来驱动流程，人只在关键节点做确认。这个认知和 AI 产品领域的规律一致：AI 产品的价值跃迁，几乎都发生在 “AI 从辅助工具变成流程主体” 的那个拐点上。GitHub Copilot 从 “行级补全” 进化到 “Copilot Workspace”，ChatGPT 从 “对话” 进化到 “GPTs+Actions”，都是同一个拐点的不同表现。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Agent CLI方案的可行性评估</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在决定重写之前，我们评估了一个更激进的方向：Agent CLI。OpenCode CLI、Cursor、Claude Code 这类工具展示了另一种可能 —— 用自然语言指导 AI Agent 完成整个开发流程。理论上，会场搭建也可以用类似方式：运营说 “我要做一个夏季户外主题活动”，Agent 自主完成话题创建、活动配置、组件搭建，完全不需要结构化的 UI 卡片。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们坚信这是未来，但当前落地有三个硬性障碍：第一，Agent 对会场的业务约束没有 “体感”；第二，Agent 无法获取实时状态；第三，Agent 的操作缺少审计与可解释性。这让我们意识到：需要在 “完全自主的 Agent” 和 “纯人工操作” 之间找到合适的位置。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Anthropic 的 Agentic 系统复杂度光谱正好提供了这个框架 —— 它将 AI 系统的自主性从低到高分成多个层级。我们的工作流大致对应光谱中间的 Prompt Chaining + Routing + Human-in-the-loop 组合。这不是光谱上最复杂的位置，但对我们来说是最合适的位置。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.562962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061797" src="https://wechat2rss.xlab.app/img-proxy/?k=623a6219&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuFYfsaWaxcmYibYmjPoSBtKtGMCEPWQyJ2N3geibVQayqpNSO8O5HFbPSNjHNzmT9gZhEDcfpQ1ViaybCFvUHsTx9ZvJ7ITBkrDA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">三</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第二版实现与组件模块协议</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">从&#34;填表&#34;到&#34;审卡片&#34;</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">第二版是一次架构级的重写。核心理念用一句话概括：把运营从 “流程执行者” 变成 “流程监督者”。运营要做的事情缩减为两件：提供信息 —— 粘贴一份飞书策划文档链接；关键确认 —— 在 AI 弹出的结构化卡片上做校验和微调，其他所有事情（抓取文档、解析字段、创建话题、创建活动、复制会场模板、配置组件）全部由工作流驱动完成。在选技术方案之前，有一个更根本的问题需要先回答：我们需要的是一个 Workflow（工作流）还是一个 Agent（智能体）？</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24814814814814815" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061794" src="https://wechat2rss.xlab.app/img-proxy/?k=c87bef18&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsgISbTrl4oiaOPLk6AxL8KVxycjfuUubcOKpnI3uCP7159icbudV4uFicjNMjFXLJyV39TlKIKdKibicm8F4HWHaCaa2Yv5vJspT3U%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们的会场搭建流程有明确的步骤（解析 → 选组件 → 补字段 → 确认 → 构建），每步的完成条件是确定的，而且对正确率有极高要求。这显然更适合 Workflow 模式。但这不意味着完全不用 Agent 能力。在局部场景中 —— 比如 AI 改写规则文案、理解自然语言修改组件配置 —— 我们使用了 Agent 式的 LLM 调用（给 LLM 工具，让它自主决定如何完成这个局部任务）。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一个实用的经验法则</span></strong><strong style="box-sizing: border-box;"><span leaf="">：</span></strong><span leaf="">如果你的业务流程可以被画成一张有限状态机图，那就用 Workflow；如果它更像 “给定一个目标，让 AI 自己想办法达到”，那就用 Agent。大多数企业级场景是两者的混合 —— 大框架用 Workflow 保证可控，局部节点用 Agent 提供灵活性。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个区分在行业中越来越被重视。LangChain 的创始人 Harrison Chase 在多个场合强调过：当前大部分成功的 AI 应用都是 Workflow 而非 Agent。Klarna 的 AI 客服系统被广泛报道为 “Agent”，但从架构上看，它更接近一个精心设计的 Workflow—— 有明确的意图分类路由、有标准化的工具调用流程、有人工升级（escalation）机制。真正在生产环境中跑 “完全自主 Agent” 的案例仍然非常少。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">选择 LangGraph 作为编排引擎</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">明确了需要 Workflow 之后，我们评估了多个方案，最终选择了 LangGraph 作为编排引擎。LangGraph 是 LangChain 团队推出的状态编排引擎，MIT 开源。它用有向图定义 AI 工作流：每个节点是一个处理步骤（可以是 LLM 调用、工具调用或人工确认），边定义了步骤之间的流转条件。内置 Checkpointer 机制可以持久化每个会话的完整状态，支持中断后恢复。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24722222222222223" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061796" src="https://wechat2rss.xlab.app/img-proxy/?k=c6e8effa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHswfQQQJY1hFQdVXUb3y4qB2v0Nv59C6F6knkcJXO9QHjYd0rQwpoCvFtr8H0mcBqic5cTS9A71KjAbkwUPvQBOicj5N9gGNro1o%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在我们的系统里，LLM 不是 “决策者”，而是 “节点内的执行者”—— 在明确定义的节点里做信息解析和文案生成，不参与流程路由。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Interrupt / Resume：前后端的交互语言</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">整个前后端的交互基于 LangGraph 的 interrupt/resume（中断 / 恢复）机制。</span><strong style="box-sizing: border-box;"><span leaf="">Interrupt / Resume 是什么？</span></strong><span leaf="">可以把它理解为 “程序的暂停和继续”。当后端流程执行到需要人类输入的步骤时，调用 interrupt () 暂停整个图的执行，同时把一个结构化的数据包（payload）发给前端。前端根据数据类型渲染对应的 UI 卡片。用户操作完后，前端通过 Command (resume=value) 把结果推回去，图从断点处继续执行。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9527777777777777" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061799" src="https://wechat2rss.xlab.app/img-proxy/?k=c8ad7217&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtR6qBhhpibcRfcU8MRUnwDPtPmiacxyIxrZaSJQkz2IdIkDnSZWODzsuQLT9hbiaibLSuapdicduibD6kTlP1ibh9jnoSHiaktPkInhIc%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">结合 LangGraph 的 interrupt 机制和 LangChain 的 Human-in-the-loop 文档，人工介入通常覆盖几类动作：Approve / Reject：审批或拒绝——适合高风险操作前的确认，Edit：编辑 Agent 的动作、状态或中间结果——适合人工修正 AI 的输出，Respond / Input：提供额外信息或补充反馈——适合 AI 无法自行获取的数据，我们的 6 个中断点对应了这几类模式的混合：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.34444444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061803" src="https://wechat2rss.xlab.app/img-proxy/?k=8c70acd6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtwxgeR1UV0WoPI9k0gL7pzMge3pvXzrK5ZxFFjicEKTFiayM8C6dxTZ8MRLYO6nVEXBTGic23KuO0icLFgibf4Yg01EovCIj59SYgU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">运营视角：一场活动怎么搭</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">以&#34;夏季户外好物推荐&#34;活动为例：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.4203703703703703" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061802" src="https://wechat2rss.xlab.app/img-proxy/?k=a54562f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsvrFGTJIa9RWjYFewABLC9EwXmgFL0YmlNGMVibhhFOHCGsaC7PBCo2ua51My3a3ibS3bxHCgxJe7SBdBZpDyBaCpfz7pzbrgrE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">全程在同一个对话界面完成，不需要跳转到其他系统。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.42314814814814816" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061800" src="https://wechat2rss.xlab.app/img-proxy/?k=271bba53&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuic5SygPdD3LafnDuG6sibO0muHbBPwVLD11oicRwDHkffVvBxbn5x7oKqBQia1pt4xHq43XarH0Q1A789zIjKickLFmyuKfiaBFojo%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Capability Registry：一个壳装所有场景</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">前端没有把 “会场场景” 写死，而是通过一套能力注册表（Capability Registry）来动态挂载不同场景的 UI。什么是 Capability Registry？类似于插件系统 —— 每个业务场景是一个 “能力模块”，向统一的交互壳注册自己的 UI 贡献（欢迎态、中断卡片、结果展示等）。交互壳不关心具体业务，只负责调度和渲染。新增场景时只需要注册一个新模块，不需要改壳的代码。这个设计思路与微前端架构中的 Module Federation 有相似之处 —— 都是将 “壳” 和 “能力” 解耦，让新能力可以独立开发、独立注册。不同之处在于我们的粒度更细：不是整个页面模块的联邦，而是 UI 贡献点（欢迎态、卡片、结果展示）级别的注册。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">第二版把体验从 “填表单” 推进到 “审卡片”：AI 从 “帮你填字段” 升级为 “驱动整个流程”，支持中断恢复 —— 关掉浏览器再打开可以继续。能力注册表的设计让系统具备良好扩展性，当前已接入会场搭建、动态筛选和通用聊天三个场景，未来新场景只需实现对应的能力模块即可。但第二版仍有一个前提：运营已经有一份策划文档。很多真实业务场景里，运营一开始并没有文档，只有一个活动想法。这直接推动了第三版。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">组件模块协议：把差异封进模块</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">为什么需要一套协议</span></strong></p></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在进入第三版之前，需要先讲第二版里最重要的一层设计 —— 组件表单模块协议。它解决了一个核心的业务扩展性问题。会场由多个组件构成：头图、动态 Feed、活动任务、规则说明、Banner、瓜分激励等。每个组件的配置逻辑差异很大。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.29444444444444445" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061801" src="https://wechat2rss.xlab.app/img-proxy/?k=67fb523e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvZiaPjNIAuibZgd1gt4TSjIOHeujCw9vPz1dUich5o4ILVTDfoLbCMXQlnvpEg5NpUxtOIxxOm7qzBO6iczjVHkk0jV1ia8FvhfdiaU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">第一版的做法是在一个文件里写条件判断分发。每加一个组件就要改中心调度文件，组件的业务逻辑散落各处。5 个组件时还能接受，16+ 个组件就不可行了。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">生命周期：每个组件的统一节奏</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们把每个组件抽象成独立模块，定义统一的生命周期：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.13240740740740742" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061804" src="https://wechat2rss.xlab.app/img-proxy/?k=5a7f448b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHt0whm8LcT1Mfk7jUibyZ0IQVQSp5XM4XOP7fzEtDjKKpLe94rjPFzKwNnUwoWSh5Pbib4zSHoKjSNsOibSOchGz3lz6eFV9cvIBM%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">最重要的规则是初始化阶段不产生副作用（比如调后端创建资源）。真正会产生写操作的动作必须放在 “构建前” 阶段，即用户明确点了 “构建会场” 之后。这个规则避免了一个真实 bug：有组件在初始化时偷偷调了后端保存接口，导致用户只是打开卡片看了一眼，系统就已经创建了活动数据。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="margin: 0px 0%;box-sizing: border-box;"><div style="padding: 0px;font-size: 15px;color: rgb(0, 0, 0);line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">双轨注册：显式选择 + 条件注入</span></strong></p></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9046296296296297" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061807" src="https://wechat2rss.xlab.app/img-proxy/?k=789378ea&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtpEOsIR2WK35bUeRUKvnwq92dcel91l1E0QSYZaRXRxZO9Hickh1OXS5ncO8mpMROb6ic8rNgFqgk5ElIrcS9hALB57PjhLPnCI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">新增组件时只需要实现模块接口并注册到对应轨道，不需要改任何调度逻辑。这是协议级设计的核心优势 —— </span><strong style="box-sizing: border-box;"><span leaf="">开闭原则</span></strong><span leaf="">（Open-Closed Principle）：对扩展开放，对修改关闭。这种 “根据上下文自动注入，用户不感知” 的模式，在软件架构中其实很常见：</span><strong style="box-sizing: border-box;"><span leaf="">把 “是否需要某个组件” 的决策从使用者手中拿走，交给系统根据规则自动判断。</span></strong><span leaf="">好处是使用者的心智负担更低，坏处是系统行为变得更难预测 —— 所以我们的条件注入轨道会在工作台上展示 “已自动注入” 的提示，让运营知道系统替她做了什么决定。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">声明式位置编排</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">组件输出的不只是配置数据，还可以声明位置意图 ——“我希望被放在哪个组件的前面或后面”。以 Feeds 组件为例，一个活动可能有多条 Feed，其中 “竖向那条” 要放到页面底部。Feeds 模块不需要知道 “底部在哪里”，只需要声明 “这条竖向 Feed 想放在页面末尾”。三层关注点分离，每层只关心自己的事。</span></p></div><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.09722222222222222" data-s="300,640" data-type="jpeg" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061805" src="https://wechat2rss.xlab.app/img-proxy/?k=8721afe8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuQtJ15t7Sibia8Es9libLTdBoznBDZAHRtlaXwqVj93jicsafC8IwZLIGAZOyDSYW69FSNib3xNiajCdYh832TlSkFhl0dSDT76WXtk%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">四</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第三版设计与工程实践</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">从&#34;我有文档&#34;到&#34;帮我写文档&#34;</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">第二版解决了 “会场搭建流程如何被 AI 驱动” 的问题，但它有一个隐含前提：运营已经有一份策划文档。实际业务中，很多运营连文档都没有 —— 只有一个模糊的想法，就被要求先写一份结构化的飞书文档，再粘贴到 Agent 里。策划生成和会场搭建是两种不同范式：</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24722222222222223" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061806" src="https://wechat2rss.xlab.app/img-proxy/?k=0f2b1684&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvomtK7x1LhC2icSRZTibX8Loa5YMQCeljtWeCkd9vdmFaqWJIp89ETgImcrqqibZx8RWA6ibxRXOrGhibHj5gmrPbic3iajnNYDrYQPw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这两种范式的差异，决定了我们需要一个两阶段架构来分别承载：第一阶段解决&#34;从想法到策划文档&#34;，第二阶段解决&#34;从策划文档到会场配置&#34;。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">两阶段架构</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5472222222222223" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061808" src="https://wechat2rss.xlab.app/img-proxy/?k=e9d37985&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtuoxNtL71ia2TicTicS1G4bPkZTtFUjlIsTHa8oQHTZOvtvLmK5RwQMryudZqPH6pTVgGjic3KAqtgvMpnz0LbwicRYGJfalnaTKRE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Stage 1：活动方案生成 Skill</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Stage 1 Skill 的核心约束是只读不写 —— 只查询候选数据（预算池、类目、标签、历史会场），不做任何写操作。所有写操作（创建话题、创建活动、复制会场、提交审核）全部由 Stage 2 闭环。这个 “只读” 约束不是技术限制，而是权限模型的设计选择。在 Agent 系统中，一个反复出现的架构决策是：AI 的能力边界应该在哪？</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">读权限：</span></strong><span leaf="">AI 可以查询任何数据 —— 风险低，最多是查到不相关的结果；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">写权限：</span></strong><span leaf="">AI 可以创建 / 修改数据 —— 风险中等，可能产生脏数据；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">发布 / 审批权限：</span></strong><span leaf="">AI 可以影响线上 —— 风险高，直接影响真实用户。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Stage 1 只给读权限，Stage 2 逐步开放写权限，发布权限则要求人工确认后触发。这个分级和 AWS 的 IAM 最小权限原则（Principle of Least Privilege）是一脉相承的：每个主体只拥有完成当前任务所必需的最小权限集。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">引导策略是渐进式的，不一次性要求填完整表单：</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8472222222222222" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061809" src="https://wechat2rss.xlab.app/img-proxy/?k=d7893dc8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtym2dlKO1wzSc8ib3a7qG3pJXOXTTibCEakVl6QvJq9HbuSteD9ibZwO4jxOf9j1YWKlwId9vcKWGBzeBwqJe6lV8AJFb70NFhTw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8444444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061811" src="https://wechat2rss.xlab.app/img-proxy/?k=00327e9d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtj9XYlicxG2yPXmo0OumboPxL10iaaFyR6xgp51EIAZrD06EfBIqz1wxiaRCDYcsdNUnVTq90sLuQyWZgGNs2lQJYFTtKHwQ1ialc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">最低三件套：活动名称 + 活动时间 + 至少一个话题。其他信息按对话进度逐步追问。</span><strong style="box-sizing: border-box;"><span leaf="">渐进式信息收集：一个 UX 模式。</span></strong><span leaf="">这种 “不一次问完所有问题，而是按对话进度逐步追问” 的策略，在 UX 设计中叫做 Progressive Disclosure（渐进式披露）。Nielsen Norman Group（NNG）对这一经典 UX 模式做过系统阐述和案例推广，但它并不是由 NNG 首次提出的概念。核心思想是：不要一次给用户太多信息或太多选择。在用户需要的时候、以用户能理解的方式、提供恰好足够的信息。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Stage 2：聚合工作台</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Stage 2 是一个独立的页面，不是聊天壳里的一个面板。它承载的是更偏生产操作的密集交互。中栏预览是核心升级。它复用了搭建器已有的 H5 编辑页面，在上面覆盖了一层可交互的遮罩。运营可以点击预览里的任何组件，右侧自动展示该组件的配置表单。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6444444444444445" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061812" src="https://wechat2rss.xlab.app/img-proxy/?k=8d76c4bc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsowNeNEyl5N1hAc2aYoYKRMQ60Vic4PjnGxpbN3RMINkPxSrTlaGWKkibMzVHic8ia8ZRvibRKI0IUkxaaMJqgJuhqhtOcwurrG5aY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin-top: 10px;margin-bottom: 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 95%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6481481481481481" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061810" src="https://wechat2rss.xlab.app/img-proxy/?k=6137718f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuVECqPlFjpsyemuSG8hC21PYdVRcsY9XkkW8BTBEBHdT9mb0LxG4tBlARwNOWzdgricgQZajSRj74YyYlSicNlgqVpekJhQyUoI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个设计的关键在于 “不重新实现预览器”—— 搭建器已经有完整的会场渲染能力，我们只是在外层加了交互层。草稿实时同步保证操作不丢失：每次组件增删改或属性修改都会即时更新预览，同时异步持久化到后端。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">组件级 AI 改造有两个层次：</span><strong style="box-sizing: border-box;"><span leaf="">显式 AI 辅助面板</span></strong><span leaf="">——部分组件支持在 “AI 辅助” 和 “原表单” 之间切换，运营可以用自然语言描述想要的效果；</span><strong style="box-sizing: border-box;"><span leaf="">通用自然语言编辑</span></strong><span leaf="">——在工作台对话里输入修改需求，系统把当前选中的组件上下文交给后端的编辑子流程处理。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">工作台中 “用自然语言修改组件” 的能力 —— 比如 “把这个 Banner 的标题改成夏季清凉风格”—— 是当前 AI 辅助设计（AI-Assisted Design）领域的一个缩影。这个领域正在快速发展。几个值得关注的产品和方向：Figma AI：Figma 正在将 AI 能力嵌入设计工具 —— 自动布局建议、文案生成、设计稿搜索。它的做法和我们类似：AI 做建议，设计师做决定。Vercel v0：用自然语言描述生成 React UI 组件代码。它走的是更激进的路 ——AI 直接生成完整代码，而不是修改已有组件的属性。Adobe Firefly：Adobe 在 Photoshop 和 Illustrator 中嵌入的生成式 AI，走的是 “AI 在画布内局部生成，人工在全局把控” 的路线。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这些产品的共同模式是：AI 做局部生成 / 修改，人做全局决策。完全用 AI 替代设计师的产品（如一些 “AI 自动建站” 工具）目前还很难在专业场景中落地 —— 和我们的会场搭建面临同样的问题：正确率和品牌一致性要求太高。</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 15px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">表单托管runtime：一个务实的工程妥协</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">工作台右侧的组件表单运行在一个独立构建的子项目中。原因是搭建器的组件表单依赖特定的运行时环境和 Formily 表单引擎，与我们的前端技术栈不兼容。我们没有重新实现几十个组件表单，而是做了一个独立构建，复用搭建器原版的运行时，通过消息协议与主页面通信。这是 “避免重复开发” 的工程妥协 —— </span><strong style="box-sizing: border-box;"><span leaf="">虽然增加了架构复杂度，但把有限的开发精力放在了真正新增的价值上（预览交互、AI 辅助、草稿同步），而不是重造已有的轮子。</span></strong></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">五</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">架构全景</span></b></p></div></div></div></div></div></div></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">系统分层</span></strong></p></div></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5546296296296296" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061813" src="https://wechat2rss.xlab.app/img-proxy/?k=45412b1c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuib5lWnQ91adetaCaqBCgybyC2weRFUVgOaqSd6NFlad9LuaTusvtVpLIjLXqRSdaeuibnOBwhn1jUZQwNJlwyyOO6ia8WzyeAm4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">实践中的取舍</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI与人的分工边界</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">&#34;全 AI 控制&#34;现阶段不现实。会场组件业务约束复杂：字段来自多个外部系统，规则有优先级，部分组件会触发真实资源创建。最终方案是 AI 负责信息提取、草稿生成、字段改写和推荐，代码负责流程、结构、校验和副作用时机。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">交互方式的选择</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">结构化 UI 不是&#34;不够 AI&#34;，而是对运营认知负担的尊重。让运营在下拉列表里选预算池，比用自然语言描述然后让 AI 去猜更高效准确。最好的交互方式是混合的：自然语言描述意图、结构化 UI 确认细节、可视化预览检查结果。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">副作用控制的时机</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">组件模块协议最重要的规则之一：初始化阶段不产生副作用，只有用户明确确认后才允许写操作。这是 LangGraph 的 Edit Action 保护机制，决定了系统是否会在用户未确认时产生脏数据。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">工程妥协的边界</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Form Host 是工程妥协但必要。完全重写成本高且容易引入行为差异。复用旧生态让工作台能把有限的开发精力放在真正新增的价值上。</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">信任建立的方式</span></strong></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">假进度条是过度承诺。AI 产品的信任是慢慢建立的，每一个&#34;假反馈&#34;都在消耗信任。Microsoft 的 HAX 设计指南建议让用户清楚系统为什么做了它做的事——我们的每张中断卡片都在做这件事，不只是给运营一个表单，还解释了&#34;为什么需要你填这些字段&#34;和&#34;AI 已经做了什么、还缺什么&#34;。</span></p></div><div style="margin: 25px 0px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">七</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">总结与展望</span></b></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.562962962962963" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061815" src="https://wechat2rss.xlab.app/img-proxy/?k=aef78d61&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHu9ADNnImbIVOzGibzWyT7mKN4L1icC0SglnQTg96xqNeoeGQW1GBUrA7bItus3EiaUnTqllPricerGr7voEvxq5mAVAl13RI1VVKQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个项目的演进路径：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第一版：</span></strong><span leaf="">AI 帮你填字段，人还是主角。效率有提升，但没有质变。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第二版：</span></strong><span leaf="">AI 来开车，人来踩刹车。从 “填表单” 变成 “审卡片”，运营从流程执行者变成流程监督者。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">第三版：</span></strong><span leaf="">AI 不仅开车，还帮你规划路线。策划生成前移到 Stage 1，会场搭建落到 Stage 2 聚合工作台，运营从 “我得先写文档” 变成 “AI 帮我写文档”。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">下一步可能会是什么？也许是 Agent CLI 方案的成熟，让更多操作可以通过自然语言完成；也许是更多场景的接入，让同一套架构支撑更多业务；也许是 LLM 能力提升后，“组件全 AI 控制” 变得可行。但无论如何演进，有三条原则不会变：</span><strong style="box-sizing: border-box;"><span leaf="">流程可控</span></strong><span leaf=""> —— 不能让 AI 自由发挥到不可预测的地步；</span><strong style="box-sizing: border-box;"><span leaf="">正确率优先</span></strong><span leaf=""> —— 会场配置错误直接影响线上运营；</span><strong style="box-sizing: border-box;"><span leaf="">运营负担更低</span></strong><span leaf=""> —— 技术再酷，最终要让运营觉得好用；技术形态会变，业务约束不会变。</span></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545376&amp;idx=1&amp;sn=62f5170e2075ef7beaf095de749fec51&amp;scene=21#wechat_redirect" textvalue="从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流" data-itemshowtype="0" linktype="text" data-linktype="2">从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544916&amp;idx=1&amp;sn=25d5c20a7a9d2b0dfed78eaf25598717&amp;scene=21#wechat_redirect" textvalue="让 Claude Code 拥有自我进化和记忆系统｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">让 Claude Code 拥有自我进化和记忆系统｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544879&amp;idx=1&amp;sn=4d1a92199b785d5d3d3de1758545adba&amp;scene=21#wechat_redirect" textvalue="用 LLM Agent 重构告警排查流程｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">用 LLM Agent 重构告警排查流程｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544742&amp;idx=1&amp;sn=95a1c9a7738bbda6f89f887df7767534&amp;scene=21#wechat_redirect" textvalue="得物技术在 AICon 关于大模型与 Agent 技术实践分享来袭！" data-itemshowtype="0" linktype="text" data-linktype="2">得物技术在 AICon 关于大模型与 Agent 技术实践分享来袭！</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link mp_article_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544708&amp;idx=1&amp;sn=cc8d064185a5bdc27fd7748f0958182d&amp;scene=21#wechat_redirect" textvalue="HorizonVault 技术深潜：如何在 HDD 上做出 100GB/s+ 级大吞吐分布式存储｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">HorizonVault 技术深潜：如何在 HDD 上做出 100GB/s+ 级大吞吐分布式存储｜得物技术</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 /航飞</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061814" src="https://wechat2rss.xlab.app/img-proxy/?k=52d805f1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsntqTBoY6jEOiavGEoubLrx4fEdhhUI16R1Q8icD1EKyYokUoiaCjWTUiaTQUmNATLqbHXGsO9OtDh27N395uqLh3faSpW0prnAZE%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=8f68b818&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247545481%26idx%3D1%26sn%3D3bba2e63d88f2b54d75943ba92b63686">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 24 Jun 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>从埋点需求到规则资产：Hermes Agent 重构得物数仓工作流</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247545376&amp;idx=1&amp;sn=62f5170e2075ef7beaf095de749fec51</link>
      <description>埋点和指标需求中，消耗数据承接方的不是生成答案，而是补齐证据链、对齐历史口径、识别下游影响，并在生产写入前留下可追溯的确认记录。本文数据承接方指承接业务需求的数据同学或业务合作伙伴；后文讨论内部研发、元数据、查询和门禁能力在流程中的角色。</description>
      <content:encoded><![CDATA[<p>原创 <span>小诘、博温</span> <span>2026-06-17 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=81a266ab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtfmiaJULWCSYjY4aYlM7tPEx10ZYgU9fIAnnVaKeLRXa7JOuDDpDAJ2gOicWaNsVTCFDugt3ibJibArJX4SUusBLhKKMb1oiaBFkTQ%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>埋点和指标需求中，消耗数据承接方的不是生成答案，而是补齐证据链、对齐历史口径、识别下游影响，并在生产写入前留下可追溯的确认记录。本文数据承接方指承接业务需求的数据同学或业务合作伙伴；后文讨论内部研发、元数据、查询和门禁能力在流程中的角色。</p>
  <p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18232558139534882" data-s="300,640" data-w="1075" type="block" data-imgfileid="100040703" src="https://wechat2rss.xlab.app/img-proxy/?k=0c76d17a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FAAQtmjCc74DZeqm2Rc4qc7ocVLZVd8FOASKicbMfKsaziasqIDXGPt8yR8anxPO3NCF4a4DkYCACam4oNAOBmSbA%2F640%3Fwx_fmt%3Dgif%26wxfrom%3D5%26wx_lazy%3D1"/></p><div style="box-sizing: border-box;font-style: normal;font-weight: 400;text-align: justify;font-size: 16px;color: rgb(62, 62, 62);" data-pm-slice="0 0 []"><div style="margin-top: 10px;margin-bottom: 10px;box-sizing: border-box;"><div style="border-left: 5px solid rgb(110, 230, 232);border-bottom: 5px solid rgb(110, 230, 232);border-top-color: rgb(110, 230, 232);border-right-color: rgb(110, 230, 232);box-sizing: border-box;"><div style="background-color: rgba(71, 193, 168, 0.77);padding: 10px;box-sizing: border-box;"><div style="margin: 8px 0px 0px;box-sizing: border-box;"><div style="text-align: center;color: rgb(0, 0, 0);font-size: 18px;font-family: PingFangSC-light;line-height: 2;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">目录</span></strong></p></div></div><div style="margin: 0px 0px 8px;box-sizing: border-box;"><div style="text-align: left;font-size: 13px;color: rgb(0, 0, 0);font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一、Hermes Agent 让流程可控</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、用单 Agent 串流程，用能力模块沉淀可复用能力</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.固化流程契约</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.可复用能力模块设计：从埋点链路迁移到更多数据研发场景</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、总体工作流：从一次对话变成一条可回放链路</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、能力底座：把规则、上下文和命令资产化</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.规则资产化：先决定什么值得记住</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.协作可见：让 AI 不在后台默默跑完</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.上下文与事实源：下一任务读什么，最终相信什么</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.结构化工具接口：把生产动作变成可验证接口</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、风险治理：可验证执行、人工确认点与审计留痕</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、结论</span></p></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在埋点和指标需求里，最消耗数据承接方的往往是</span><strong style="box-sizing: border-box;"><span leaf="">把分散的信息重新拼起来：需求文档里的动作到底要不要采集，历史上有没有类似点位，指标口径有没有被下游使用，新增字段要改哪几层表，发布前又该由谁确认。</span></strong><span leaf="">我们选择Hermes Agent而不是OpenClaw是因为它具备持续在线、持久记忆和技能沉淀能力。对数据团队来说，下面几个原生能力正好对准了这类流程痛点：</span></p><ul style="list-style-type: disc;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">分层持久记忆：</span></strong><span leaf="">短期会话/中期交互/长期知识/技能库四层结构，本地SQLite+FTS5全文检索。&#34;关掉窗口就失忆&#34;，在需要反复回溯历史口径的数仓场景是不可接受的；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">技能自动沉淀：</span></strong><span leaf="">任务完成后能把经验提炼成Markdown技能文档并持续优化。这正是&#34;专家经验资产化&#34;的框架级支撑，本文反复出现的&#34;规则包&#34;就构建在这套技能机制之上；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多平台统一网关：</span></strong><span leaf="">原生接入飞书、钉钉、企业微信等协作平台，智能体直接嵌进团队已有的沟通现场，不用另建工作台；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">工具与扩展生态：</span></strong><span leaf="">终端执行、定时任务、浏览器自动化等内置工具，企业内部系统经MCP命令封装稳定接入。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在这套框架之上，我们把一次埋点需求承接拆成四个可追踪的工程构件：工作区（每个需求独立空间，集中存放需求文档、历史讨论、评审结论和交付产物）、看板（状态机流转：进入、设计、预演、评审、交付，每步有责任人）、规则 + 长期记忆（把&#34;老同学才知道&#34;的判断写成可执行检查清单）、结构化工具接口 + 预演 + 人工确认点（高风险动作走结构化接口，写入生产前先预演、再等人放行）。</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4388888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061703" src="https://wechat2rss.xlab.app/img-proxy/?k=d93d3f18&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHshyVbMxYea2HPDclPj9UmibbWFlMae7M4Y5CqNFExgibjOLDSe6DuiayLIcpGD9rMIgGJ9m6So0jIZU4LvwiaMjGMOwUR03BxrEsk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：Hermes Agent 能力底座与 OpenClaw 对比</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2537037037037037" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061706" src="https://wechat2rss.xlab.app/img-proxy/?k=fa4b2527&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs8JDNj2xSooicNm3KLOnQZtXxcx4FO72TJfaulT8dBIy0cZtR3QQwJjhMkHEAvraQIBdLiaGfIFUUBic0gXvWwCK5B3MxKjcBrEg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4388888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061705" src="https://wechat2rss.xlab.app/img-proxy/?k=3e86b2f8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvqEH6wZiaPmr4BKFicfQWPfM8YTsYptuv1FsBc4Qejwn9z9rFaZUr7Jp7kwWneN0qib8RZibZtAuMrtib1SIjPQsRkb4aLg6NEJfmE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：Hermes Agent 工作流主线</span></p></div><div style="margin: 25px 0px 20px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">一</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Hermes Agent 让流程可控</span></strong></p></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如果让AI直接给最终结论，确实会很快，但这种快并不让人放心。因为数仓链路里的错误通常是依据没找全、假设没说清、风险没暴露，最后带着一个“看起来完整”的方案进入评审或生产。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">所以Hermes Agent的边界是把问题整理到足够可判断。</span></strong><span leaf="">它负责把材料、历史、候选方案、系统预演和风险证据组织起来；人负责业务语义、指标口径、敏感字段、下游影响和生产放行。</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5444444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061707" src="https://wechat2rss.xlab.app/img-proxy/?k=8d2cac52&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHssiaPECoKBG50PxW7l6rGeiaRsOM2gQZICZyAhA9ATPyZZyBphPFK9qHWBcd4iaNCIwsibNB9CeVicto93OLWFnZs9rib8HBpVEgRkQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：Hermes Agent 的能力边界与人工确认线</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px 20px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Hermes Agent 真正承担的是判断前的工程化准备</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在这条链路里，Hermes Agent 更像一个流程编排者，而不是一个埋点生成器。它把一次需求拆成几件能被检查、能被追踪、能被恢复的事，所做的准备如下图所示：</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5444444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061704" src="https://wechat2rss.xlab.app/img-proxy/?k=41be7fb8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHurh1RmN40oa1et9Usd5gxRG1bcEibqasKcib4r3Xh5icxk4PoT7sSJ289co0uNW9oh8sjLaVnJSiasqia7bL7icvWTysItBiaxfAXFvc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="box-sizing: border-box;"><span leaf="">图：Hermes Agent 判断前准备四步</span></span></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">要从流程侧切入：这不是弱化数据承接方的判断，恰恰相反，是把数据承接方从反复翻材料、追状态、补上下文里释放出来，让人把精力放在真正需要负责的地方：口径能不能成立，风险能不能接受，生产动作能不能放行。</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4388888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061712" src="https://wechat2rss.xlab.app/img-proxy/?k=e5251a0d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHukfU2KMIJ4chJZC3wsKQ7V4Rba0tLpkwocRAOEicaUQE81PYUP7rvXHczJD86ytHtxpEp9mjkzJEYdcAJyTyor2yHEmIzbdV58%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="text-align: center;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：为什么先从流程侧切入与风险边界</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">边界说清楚后，选型的重点不在 Agent 数量，而在上下文、规则和确认点能不能在同一条链路里稳定运转。</span></p></div><div style="margin: 25px 0px 20px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">二</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">用单 Agent 串流程，用能力模块沉淀可复用能力</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这一类需求如果只靠一段提示词，很快会遇到两个问题：一是同一个需求换个问法，输出结构和检查重点就会漂；二是模型可以写出“看起来完整”的方案，却说不清它读了哪些事实、调用了哪些系统、哪些动作必须等人确认。所以我们没有把能力拆成一组互相独立的智能体，而是选择“单Agent编排+多能力模块+看板确认点”：</span><strong style="box-sizing: border-box;"><span leaf="">Hermes Agent 保持统一上下文，负责调度阶段；能力模块承接稳定动作，负责把工具调用、输入约束、输出产物和停顿条件固化下来。</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.44537037037037036" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061711" src="https://wechat2rss.xlab.app/img-proxy/?k=a47eb6c8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv4bwg5yNmhA1KWZBWfguxnpEv3Y0YwXMEE3ZNR6OUf9ZUhEUEwXeBLGlmlGaPuFhHv5X5TicO73gAnV2AAyt1KPVwcQicUyZRVQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5660559305689489" data-s="300,640" data-type="png" data-w="1037" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061710" src="https://wechat2rss.xlab.app/img-proxy/?k=062ff9a3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsnBu9ck5nBMMgcLfIWx9jWEKagobd81n8Yw4MeXzaD6MYPNpgBxDjuKQJWaa9orKnyjOowVGhM0EiaJgq5O30ZSS7xwhYqqhsw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：Hermes Agent 选型：单 Agent 编排 + 多能力模块</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px 20px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">固化流程契约</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">选型确定以后，</span><strong style="box-sizing: border-box;"><span leaf="">要固化的是每个能力模块的输入、动作边界、输出产物、失败处理和经验回写。</span></strong><span leaf="">只有这些契约稳定，Hermes Agent才不会因为提示词换一种说法就改变检查重点</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4388888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061708" src="https://wechat2rss.xlab.app/img-proxy/?k=77ccf1b7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsROvLsuhTaMPZ4mqbRYMjLNDicGJLy4eRuPdP9SIpia0yicQ6UbFicBvibDmia6YBHnJCRZoAb1yjvL1z0DeR8QYY7yN7LEbDrQDkdc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：能力模块不是工具清单，而是流程契约</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px 20px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">可复用能力模块设计：从埋点链路迁移到更多数据研发场景</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这些能力模块不是只服务一次埋点需求，而是把素材采集、历史检索、变更预演、发布确认、经验沉淀抽成可复用的流程模块。换事实源和工具接口后，同一套机制也能迁移到指标发布、配置变更和数据质量排查，</span><strong style="box-sizing: border-box;"><span leaf="">可复用的SKILL就是这套机制的核心载体。</span></strong></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4388888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061709" src="https://wechat2rss.xlab.app/img-proxy/?k=46e26e24&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHshV4t6e3mibfletaGrlejCIrq80GM0rpMHa3YQibo5OFy1wibFcPXVibOfLKJtY4CnI5Q3C6uhTjquJEuiaduav1BlZUXQNu96iaUbY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：可复用能力模块设计地图</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这一选择把 Hermes Agent 的长期记忆和能力模块 机制变成团队可复用的作业制度，也为工作区、看板、预演和确认点提供统一上下文。</span></p></div><div style="margin: 25px 0px 20px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">三</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">总体工作流：从一次对话变成一条可回放链路</span></strong></p></div></div></div></div></div></div></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5175925925925926" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061716" src="https://wechat2rss.xlab.app/img-proxy/?k=58431256&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvJrLkk1u6EyJsnPwwIR6G2Vxjib0FhhJ9f620pHicoibL7icgjjP0d0fpmfMVdkuibqqYGMjJHhic0k7C0chqf1cpsicxuPns3xWNEiak%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：Hermes Agent 埋点需求端到端工作流</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">下面用一个场景串联完整链路：业务希望稳定查看“昨天各体裁发布量”。如果只让模型直接写 SQL，很容易把物理字段、业务发生日期和默认过滤混在一起，</span><strong style="box-sizing: border-box;"><span leaf="">Hermes Agent 的做法是先固化事实，再预演风险，最后把需要人判断的点推到看板确认。</span></strong></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5851851851851851" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061715" src="https://wechat2rss.xlab.app/img-proxy/?k=81dec4f1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtBmcicoMMBttMQU7mjqHJHKfXy1A5cBmoib2eo8eUwYmVhM2xKUZUIOB4iaQDcbGuAXYx9rzRzVTohFvGN49RMKbzRBEcXia99kVE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">全链路把需求入口、工作区、规则包、系统预演、人工确认和交付归档串在一起；会议纪要则作为协作语境进入需求上下文，补充已确认事实、责任人和待澄清问题。</span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.42407407407407405" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061717" src="https://wechat2rss.xlab.app/img-proxy/?k=cbd149a3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHv1Qw9ElggxIBo6gVDj4w58Y8EMPg58X7iboW1RyQSSW3y9IbA0rWbySZ3pAibHS6tOW3obU7Wib4qkIqDPjdFpflaJHtIF8RAQ9k%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：会议纪要进入需求上下文的链路</span></p></div></div><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.42407407407407405" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061714" src="https://wechat2rss.xlab.app/img-proxy/?k=e03bc8e9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtSCVIGc5BRegSbsuuJdNRfBA5g1liayTpoVZEHh97V16ZazlQ90GmkibqeVxTicT6bPkuPSxib3ssQSCJ5yPEPseZORxKREyAWCKw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="text-align: center;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：周期性同步需求并写入工作看板</span></p></div></div></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.42407407407407405" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061713" src="https://wechat2rss.xlab.app/img-proxy/?k=94d2501a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvZgNIR60niaibwZicYO6rjZic6Ga6XSpwGFOvmerBPtdBbfEssIdyqibYlcvarh0fHxCic5S6ianCQiaghNtTXZLBA6ZK5ibwXhVsottZs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：任务看板承接需求状态、推进和人工介入</span></p></div></div><div style="display: inline-block;vertical-align: top;width: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4083333" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061718" src="https://wechat2rss.xlab.app/img-proxy/?k=4446883d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsEvVQCVwczyKAqn8yWboic3vwu8CR73VwmiaBpxtlI9ARyJLNQ9HolxyjCJiafNWpK7B0OYSEZfRorEyialPgasY4o2qU32Ryicbeo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：工作区保留的事实源</span></p></div></div></div><div style="margin: 25px 0px 20px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">四</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">能力底座：把规则、上下文和命令资产化</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这一节聚焦“什么值得沉淀”。埋点自动化真正难的是把历史口径、下游影响、人工确认和生产状态拆成可复用资产：规则包回答“怎么判断”，工作区回答“依据在哪里”，看板回答“卡在哪里”，结构化工具接口回答“系统状态是否验证过”。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.33055555555555555" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061719" src="https://wechat2rss.xlab.app/img-proxy/?k=14da0af2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuicicrEVSnkwe9L1ubibv6hNNUic3vSElNsYOyOtVKqc0NZb0wyRklwoVuH45qHQOHZ01F1DQT8V9U55od96KhJngJ6o8JAqegWII%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px 20px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">规则资产化：先决定什么值得记住</span></strong></p></div></div></div></div></div></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这里的关键不是让 Hermes Agent 记得更多，而是把材料分层：临时信息留在本轮任务，能复用的做法沉进规则包，需要人工把关的内容进入治理记忆。这样下一次相似需求到来时，系统先补证据、提醒风险，而不是让数据承接方从头解释。</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4388888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061721" src="https://wechat2rss.xlab.app/img-proxy/?k=2feaca61&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtTwf3ZBoKNKo8icAWcL1pOgTI8QoBicaiaalPd1g3XOkUyFs2grX6pmWibvUVFDUACazapz0kJqgKCNUlJibiaE9TE5tw1gSugDG2pE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：规则资产化与长期记忆闭环</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px 20px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">协作可见：让 AI 不在后台默默跑完</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">规则资产只有进入协作流程才有价值。看板负责暴露阶段、阻断项和责任人，飞书保留澄清、驳回和确认语境，工作区承接证据和产物；三者合起来，才能让人知道AI做到了哪一步、还缺什么、哪里必须停下来等确认。</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4388888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061720" src="https://wechat2rss.xlab.app/img-proxy/?k=bb89de8f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsfHEhchJJhibXibeGmj2ibQfMmEs8wicdxUZvuN864KHGJM4T0KtU03icn8ibP3LkYiasQRjpnwJkiaV6obAYxT75zOzt4TDbdLIeknQs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：看板 + 飞书让 AI 每一步可见</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px 20px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">上下文与事实源：下一任务读什么，最终相信什么</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">上下文传递不能靠“多塞材料”解决，而是把任务背景、阶段结论、人工反馈和运行元数据分开保存。与此同时，聊天只能补语境，工作区负责留证，系统预演负责验证，生产系统才是最终事实源。</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4388888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061722" src="https://wechat2rss.xlab.app/img-proxy/?k=f319cd83&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuQPzyzMQL2QwrlwU01jNA2gUoANSBHKwSaf8flficxUbvP5tFx4X4N0tia9I33DEoHdDN4fpxicRTdTIveibibl5KNEZ89TBrJTOKo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：上下文传递与事实源边界</span></p></div><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 25px 0px 20px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;transform: translate3d(2px, 0px, 0px);-webkit-transform: translate3d(2px, 0px, 0px);-moz-transform: translate3d(2px, 0px, 0px);-o-transform: translate3d(2px, 0px, 0px);margin: 2px 0px 0px;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);background-color: rgb(105, 242, 244);box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px 5px;transform: translate3d(-5px, 0px, 0px);-webkit-transform: translate3d(-5px, 0px, 0px);-moz-transform: translate3d(-5px, 0px, 0px);-o-transform: translate3d(-5px, 0px, 0px);width: 100%;align-self: flex-start;background-color: rgb(255, 255, 255);border-style: solid;border-width: 1px;border-color: rgb(62, 62, 62);padding: 5px 15px;box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 2;box-sizing: border-box;"><div style="color: rgb(0, 0, 0);text-align: center;letter-spacing: 4px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">结构化工具接口：把生产动作变成可验证接口</span></strong></p></div></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当智能体接近生产系统时，最不应该依赖页面识别和临场点击。结构化工具接口的作用，是把查询、绑定、发布、验证这些动作包装成参数明确、返回结构化、过程可审计的接口；越靠近写入，越要先预演、再确认、最后留痕。</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4388888888888889" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061725" src="https://wechat2rss.xlab.app/img-proxy/?k=efce8863&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHscvfPDSfoLhfGibp1qgoxIYbsSDLkTu6x1l2cHQzqmXccVic4wKNCUD3nsflwLFyicMc9ABK8241tEhnLJYQ2udvYQTP3K7rxIBQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：结构化工具接口把生产动作变成可验证接口</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这四类资产合在一起，才让 Hermes Agent 从“会回答”变成“能交接”。越靠近生产，越要把资产和治理连起来：规则给出判断边界，命令提供验证证据，看板承接人工确认。</span></p></div><div style="margin: 25px 0px 20px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><b style="box-sizing: border-box;"><span leaf="">五</span></b></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">风险治理：可验证执行、人工确认点与审计留痕</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Hermes Agent越靠近生产链路，越不能只追求“自动执行”。上线前只看三类硬证据：事实来源是否可信，系统预演是否通过，责任人是否已经确认。</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5444444444444444" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061726" src="https://wechat2rss.xlab.app/img-proxy/?k=19b585a4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtjLxe9qQMIssjAhHG814m1xD6LM64EugFO2RxoK7WKXCXe9WObQdf5ItkXcxiaQ3sGzOa6tVD1GFQxm6dHlENbjMlddLd0w4uk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：Hermes Agent 的能力边界与人工确认线</span></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">上线前只过三道门</span></strong><span leaf="">：事实源门、预演门、责任门。任何一道门缺证据，Hermes Agent 都只能停在候选方案或待确认状态，不能继续推进生产写入。</span></p></div><div style="text-align: center;margin: 15px 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2833333333333333" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061727" src="https://wechat2rss.xlab.app/img-proxy/?k=217bb282&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuiaIlcPNoXTtJJN6EmH2ib20hwpG7XqtxXQ3ql5WGJ8wQ9ZfxJvRmRMdRS7uv34kuxnnUFuBNBJjmwY6ZG5ya4jpDeauoY0ulMU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">治理的目标不是让数据承接方把系统做过的事再手工复查，而是让系统在关键位置停下来，把证据、预演结果和责任人摆到台面上。人的精力应该留给真正的判断点：口径要不要调整，风险能不能接受，生产动作能不能放行。</span></p></div><div style="margin: 25px 0px 20px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;align-self: flex-start;box-sizing: border-box;"><div style="margin: 10px 0px;text-align: justify;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;background-color: rgba(0, 0, 0, 0.04);border-width: 0px;border-style: none;border-color: rgb(62, 62, 62);align-self: flex-start;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;padding: 0px 13px;box-sizing: border-box;"><div style="transform: rotateZ(12deg);-webkit-transform: rotateZ(12deg);-moz-transform: rotateZ(12deg);-o-transform: rotateZ(12deg);box-sizing: border-box;"><div style="text-align: center;justify-content: center;margin: -20px 0px;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;background-color: rgb(105, 242, 244);padding: 20px 13px;min-width: 10%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: flex-start;box-sizing: border-box;"><div style="transform: rotateZ(348deg);-webkit-transform: rotateZ(348deg);-moz-transform: rotateZ(348deg);-o-transform: rotateZ(348deg);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);font-size: 17px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">六</span></strong></p></div></div></div></div></div></div><div style="display: inline-block;vertical-align: middle;width: auto;flex: 100 100 0%;height: auto;align-self: center;padding: 6px 15px 6px 6px;background-color: rgb(0, 0, 0);box-sizing: border-box;"><div style="color: rgb(255, 255, 255);text-align: center;font-family: PingFangSC-light;font-size: 17px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">结论</span></strong></p></div></div></div></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Hermes Agent值得放大的是可回放、可确认、可复用的工作流能力。当前链路已经围绕四件事形成主线：跑通需求流转，前置风险拦截，沉淀规则资产，让数据承接方把精力放到口径裁决和生产边界上。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">下一步的重点不是继续堆更多自动化动作，而是把证据口径跑实：用连续样本证明准备时间、交付周期、评审通过率和返工原因的变化。只有当这些指标和看板、日志、确认记录一一对应时，这条链路才真正具备扩大使用的工程基础。</span></p></div><div style="text-align: center;margin: 15px 0px 10px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;width: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5037037037037037" data-s="300,640" data-type="png" data-w="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061723" src="https://wechat2rss.xlab.app/img-proxy/?k=b8562b86&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuibNIg5EwIXz088WUatTDKNotbzaESWcrYch6Pia7wdvIMJnHh4ta6ENGV2pYD2ibf9pOHibV0UwBsWfibdEWEg5vfmXr2Z2DicrUmo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">图：Hermes Agent 规模化落地路径</span></p></div><div style="margin: 7px 0% -18px;text-align: center;isolation: isolate;box-sizing: border-box;"><div style="display: inline-block;border-radius: 1em;background-color: rgb(92, 170, 233);padding: 4px 20px;color: rgb(255, 255, 255);letter-spacing: 6px;line-height: 1.5;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">往期回顾</span></strong></p></div></div><div style="margin: 0px 0% 10px;text-align: left;justify-content: flex-start;display: flex;flex-flow: row;box-sizing: border-box;"><div style="display: inline-block;width: 100%;vertical-align: top;background-color: rgb(233, 250, 255);border-width: 0px;border-radius: 8px;border-style: none;border-color: rgb(62, 62, 62);overflow: hidden;padding: 22px 10px 10px;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="color: rgb(106, 106, 106);text-align: justify;font-size: 14px;line-height: 2;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.<a class="normal_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544916&amp;idx=1&amp;sn=25d5c20a7a9d2b0dfed78eaf25598717&amp;scene=21#wechat_redirect" textvalue="让 Claude Code 拥有自我进化和记忆系统｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">让 Claude Code 拥有自我进化和记忆系统｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.<a class="normal_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544879&amp;idx=1&amp;sn=4d1a92199b785d5d3d3de1758545adba&amp;scene=21#wechat_redirect" textvalue="用 LLM Agent 重构告警排查流程｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">用 LLM Agent 重构告警排查流程｜得物技术</a> </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3.<a class="normal_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544742&amp;idx=1&amp;sn=95a1c9a7738bbda6f89f887df7767534&amp;scene=21#wechat_redirect" textvalue="得物技术在 AICon 关于大模型与 Agent 技术实践分享来袭！" data-itemshowtype="0" linktype="text" data-linktype="2">得物技术在 AICon 关于大模型与 Agent 技术实践分享来袭！</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4.<a class="normal_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544708&amp;idx=1&amp;sn=cc8d064185a5bdc27fd7748f0958182d&amp;scene=21#wechat_redirect" textvalue="HorizonVault 技术深潜：如何在 HDD 上做出 100GB/s+ 级大吞吐分布式存储｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">HorizonVault 技术深潜：如何在 HDD 上做出 100GB/s+ 级大吞吐分布式存储｜得物技术</a></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5.<a class="normal_text_link" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544651&amp;idx=1&amp;sn=9a231b02a15ac5e33bd4bf41148a021d&amp;scene=21#wechat_redirect" textvalue="Claude Code Harness 工程：数仓侧落地方案｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Claude Code Harness 工程：数仓侧落地方案｜得物技术</a></span></p></div></div></div><div style="text-align: center;font-size: 14px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">文 /小诘、博温</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">关注得物技术，每周三更新技术干货</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">要是觉得文章对你有帮助的话，欢迎评论转发点赞～</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 11px;box-sizing: border-box;"><span leaf="">未经得物技术许可严禁转载，否则依法追究法律责任。</span></span></p></div><div style="text-align: left;justify-content: flex-start;display: flex;flex-flow: row;margin: 10px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: bottom;width: auto;align-self: flex-end;flex: 100 100 0%;height: auto;padding: 0px 29px 0px 0px;box-sizing: border-box;"><div style="margin: 10px 0px -53px;box-sizing: border-box;"><div style="text-align: justify;font-size: 71px;color: rgb(61, 243, 244);box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">“</span></p></div></div><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: 0px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;min-width: 5%;max-width: 100%;flex: 0 0 auto;height: auto;align-self: center;box-sizing: border-box;"><div style="text-align: justify;color: rgb(243, 198, 37);font-size: 23px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="color: rgb(0, 0, 0);font-size: 18px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">扫码添加小助手微信</span></strong></span></p></div></div></div><div style="margin: 0px;text-align: center;box-sizing: border-box;"><div style="text-align: justify;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如有任何疑问，或想要了解更多技术资讯，请添加小助手微信：</span></p></div></div></div><div style="display: inline-block;vertical-align: bottom;width: 37%;flex: 0 0 auto;height: auto;align-self: flex-end;box-sizing: border-box;"><div style="text-align: center;margin: 0px;line-height: 0;box-sizing: border-box;"><p style="max-width: 100%;vertical-align: middle;display: inline-block;line-height: 0;border-style: solid;border-width: 5px;border-color: rgb(61, 243, 244);box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1" data-s="300,640" data-type="jpeg" data-w="724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100061724" src="https://wechat2rss.xlab.app/img-proxy/?k=6da46ff5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHu1P7BSv0HUibKbIojpuJJQB8CGR9CAJy7j22lLPnlJy3TL3putHSKib5uQtzOIOnODicWiabrubEc6ibysictqIJrnQgFeroLpKgvpQ%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div></div><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=091e9174&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247545376%26idx%3D1%26sn%3D62f5170e2075ef7beaf095de749fec51">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 17 Jun 2026 18:30:00 +0800</pubDate>
    </item>
  </channel>
</rss>