<?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>BP Claw 破解 AI 编码输入难题 ——FlinkSpec 需求智能化实践｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544623&amp;idx=1&amp;sn=470300ff2996709904dffe87f0b02d8c</link>
      <description>本文为 FlinkSpec 系列之开篇，亦是这场工程化变革的序章。BP Claw 所立之处，不过链路之源。FlinkSpec 所图，乃以 AI 之力，将实时数仓从需求落地至验收上线的全程工序，熔铸为一套精密自洽、生生不息的智能工程体系。</description>
      <content:encoded><![CDATA[<p>原创 <span>子宸</span> <span>2026-05-13 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=41a23ad3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtBM4SHtaC8PbrNZiaHn5cSlbs5Oh2dF9ZYFLyia2psZ1CTnoChpcWqK5ENUT9IylgnqwzJzmj5M8BHxsDqqfxTdK7Fc4qRUOkNQ%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>本文为 FlinkSpec 系列之开篇，亦是这场工程化变革的序章。BP Claw 所立之处，不过链路之源。FlinkSpec 所图，乃以 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="">一、FlinkSpec：实时数仓的 AI 工程化底座</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.FlinkSpec 全景架构</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.BP Claw 在 FlinkSpec 中的定位</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.BP Claw 解决实际问题案例</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.对实时数仓而言，一份好的 PRD 应该是什么样的？</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.能力二:PRD 质量评分（参照能力）</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.省 Token 的技巧</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.打磨 Skill 的技巧与难点</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、与 FlinkSpec 的联动:全链路赋能</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.BP Claw → FlinkSpec 的价值传递</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.体验效果：PRD 质量提升对 AI Coding 的赋能</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></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="">一句话理解 BP Claw：它是 FlinkSpec 上游的 “AI 数据 BP”，把产品经理的非标 PRD 自动转化为 AI Coding 可消费的高质量需求文档。在深入阅读之前，先用一张表告诉你 BP Claw 能带来什么。</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%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.28425925925925927" 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="100060956" src="https://wechat2rss.xlab.app/img-proxy/?k=a770ee50&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsic42t3FmicBg8NoHfhe4UVkviceKdibCTWcOWBf0RnRibrb1urYIR5djT8LwCh0X04G9IjokDSnJUrYDEExU63C4MNvhLPOAbea0w%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 效果不稳定，同样的框架、不同的需求，结果天差地别；需求沟通来回反复，一个指标口径要确认三四轮；PRD 质量参差不齐，开发阶段频繁踩雷、返工延期。BP Claw 的答案是：问题的根源在输入，解法在源头。</span></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="">FlinkSpec：实时数仓的 AI 工程化底座</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="">在深入 BP Claw 之前，我们先来看一个更大的图景 ——FlinkSpec。FlinkSpec 是实时数仓团队打造的 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="">FlinkSpec 全景架构</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;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.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="100060960" src="https://wechat2rss.xlab.app/img-proxy/?k=b8f32f56&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvfoDKEtRahNpXZkqxR3wQdePHUxeZMgDLGgPgBPqrgic4ZYE6okIARV5icicNqia9HVBBXVf90srh8NyiaxhjCF5l6mAFs6TyicE2rg%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="">BP Claw 在 FlinkSpec 中的定位</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="">在 FlinkSpec 的四个阶段中，需求澄清阶段是一切的起点。而需求澄清阶段的质量，取决于一个</span><strong style="box-sizing: border-box;"><span leaf="">关键输入</span></strong><span leaf=""> ——</span><strong style="box-sizing: border-box;"><span leaf="">PRD 文档</span></strong><span leaf="">。如果 PRD 质量不达标，后续的一切都是空中楼阁：需求定义模糊 → Intake 门控反复打回 → Define 阶段耗时翻倍；技术口径缺失 → Flink-SQL Agent 无法编码 → 频繁触发阻塞协议（BLOCK-N）；验收标准不清 → Review 阶段发现问题 → 回退到 Define 重来。</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.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="100060958" src="https://wechat2rss.xlab.app/img-proxy/?k=dced3a98&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvgRCvgkltlpySwthuy3sIa6gKjiarUfcohSV8HSKYgdgibShjY06ufHD6Z1p0za4icmQcXxEatU0oVI0pQQ0VViaA2ZibDRKLes6rA%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="">BP Claw 解决实际问题案例</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="">商业化广告投放链路中，一次广告曝光往往由多个商家共同参与竞价。这种一对多的流量-主体映射关系，在指标聚合时会产生一个结构性的歧义：以&#34;商家&#34;为维度下钻时，同一次流量事件会被多个商家各自计入，导致商家侧明细加总后，与平台侧总量不等。这不是数据质量问题，而是两套在各自语义下都正确的口径共存在同一张宽表里，却没有被显式区分：</span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">impression_cnt</span></span><span leaf="">（平台侧）去重到流量维度，一次曝光 = 1；</span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">impression_cnt</span></span><span leaf="">（商家侧）展开到主体维度，N 个商家参与 = N。当下游消费方使用同一个字段名、却按不同语义聚合时，CTR、CVR、ROI 等衍生指标就会系统性失真。</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;"><span leaf="">实时数仓的指标开发通常以 FlinkSQL 为载体，开发侧看到的输入是 Kafka 事件流和维度表，字段语义的边界在建模时已经隐式确定。</span><strong style="box-sizing: border-box;"><span leaf="">问题在于：</span></strong><span leaf="">FlinkSQL 层面的 GROUP BY 逻辑无法自动感知上游指标应该以哪个粒度聚合。如果流量事件里同时携带了 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">advertiser_id</span></span><span leaf=""> 列表，不同的展开方式对应完全不同的业务语义，而这一选择在代码里只是一行 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">UNNEST</span></span><span leaf=""> 或一个 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">JOIN</span></span><span leaf=""> 的差异。常规的 Code Review 能发现 SQL 逻辑错误，却很难发现&#34;SQL 逻辑正确、但口径选择与业务预期不符&#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="">BP Claw 的介入点</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="">BP Claw 作为需求到编码之间的中间层，其核心能力是在指标定义阶段做口径显式化，而不是在开发完成后做数据校验。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">具体做法是结合 OpenViking 知识库（团队历史建模文档、字段定义、历史踩坑记录）做语义召回，识别当前需求涉及的指标是否存在多粒度歧义，并在进入 FlinkSpec 之前，将以下约束显式写入需求文档：</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.25462962962962965" 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="100060957" src="https://wechat2rss.xlab.app/img-proxy/?k=742cc9dc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuYjctn8icfDg4nM8njDXBib8weOBLIok1WlumIKOtYKR0oajqaZglHsibZZCBnkQIqzgFw5DhhaCu65XiagaljicB4IDwwwIOXnpjA%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="">这套约束作为 FlinkSpec 的输入，让 AI Coding 在生成 DDL 和 INSERT 逻辑时，直接基于已经对齐的语义边界，而不是从模糊描述中自行推断。</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 Coding 的差异</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 工具在给定输入后，会选择一种&#34;看起来合理&#34;的实现——对于多商家指标，它会倾向于展开商家维度（因为需求里写了&#34;按商家查看&#34;），但不会主动判断这是否会导致平台侧口径膨胀。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">BP Claw 的差异在于知识来源：它使用的不是通用语言模型对业务逻辑的推断，而是团队在同类建模问题上积累的历史决策和约束条件。对于&#34;多商家指标是否需要分口径建模&#34;这个问题，OpenViking 里已经有过明确结论，BP Claw 将其召回并作为强约束注入当前需求，而不是重新推断一次。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">BP Claw 正是为了解决这个&#34;源头问题&#34;而生。它站在 FlinkSpec 的上游，确保进入 Define 阶段的 PRD 文档质量足够支撑后续的 AI 自动化编码。</span></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;"><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="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.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="100060959" src="https://wechat2rss.xlab.app/img-proxy/?k=d9390b4e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsCG0Z0lRibB9vAvLa8qMGLNf4XxhPMJpO8cf2ZkGTGooW5mtTe9OCmXmDsbkNXRIQW7P37Dlo147k544BAn0CphL60hlH3Ibjw%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="">BP Claw 的设计遵循三条核心原则，</span><strong style="box-sizing: border-box;"><span leaf="">原则一</span></strong><span leaf="">：嵌入现有场景——用户不需要打开新页面、学习新工具，直接在飞书群聊中 @ 机器人即可触发，和日常&#34;拉群评审&#34;的行为完全一致；</span><strong style="box-sizing: border-box;"><span leaf="">原则二</span></strong><span leaf="">：产品经理零感知提效——产品经理只需要提交原始 PRD 文档，BP Claw 自动完成规范化转换，产品经理无需关心格式，产品经理收到的是结构化、高质量的评审群，而非一堆格式要求；</span><strong style="box-sizing: border-box;"><span leaf="">原则三</span></strong><span leaf="">：不硬卡点，做参照系——PRD 评分是&#34;参照&#34;，不是&#34;阻塞&#34;，帮助团队建立质量意识，而非制造流程摩擦，逐步提升 PRD 质量基线，而非一刀切。</span></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="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="">对实时数仓而言，一份好的 PRD 应该是什么样的？</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="">在深入技术实现之前，我们先回答一个根本性问题：实时数仓对 PRD 文档的要求是什么？一份好的实时数仓 PRD，需要覆盖七大模块：</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.40185185185185185" 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="100060963" src="https://wechat2rss.xlab.app/img-proxy/?k=3edcfdac&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsUJvuRQI49UrNRTY2EA7kibPCcYfE6AbfFfPoVtPiayKorPeVzkQx1NNibHOA5l6WpJH9AZJjicxjC8GaqibQX18oLG7bXlQK75a0U%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="">然而，产品经理提交的文档往往只覆盖了其中的 2-3 个模块，而且格式五花八门。这正是 BP Claw 要解决的核心问题 —— 需求转化。</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="">这是 BP Claw 最核心、最有技术含量的能力。它做的事情，本质上是 模拟一个经验丰富的数据 BP 的工作过程。</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-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.5574074074074075" 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="100060965" src="https://wechat2rss.xlab.app/img-proxy/?k=da63b1f9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsnsOMt0fQYtnaSibETNlkXLWFsod7zM9a57oT4wt4ZgjnhLEDWuS2icww4X5iaC9E81lz6aeVoVIB5aTvuIcVF6bsUuEdBWzyFf0%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></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.30185185185185187" 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="100060964" src="https://wechat2rss.xlab.app/img-proxy/?k=6f910eee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvjc4niaIqqqUxAcumqfBrZaKwdAibZUX7ibATScZryLZ6LlBRvnbAsibgb4Jq6BQDNiclk3GyibhqyF2NZPFBXIRSbANIphepktcIhI%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-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="">；原文有歧义的信息保留原始表述，同时标注歧义点；原文划删除线的标注为&#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="">能力二:PRD 质量评分（参照能力）</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="">在完成需求转化后，BP Claw 会对标准化文档进行多维度质量评估，生成诊断报告。</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-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.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="100060962" src="https://wechat2rss.xlab.app/img-proxy/?k=beff0af9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvb3UvRe8J3GydoTgEiboGIXBHIbcUmV0jaibto9O5zuMovrsASXVicKd85gk5Mbia9gWSk7ngAVgPF8ENGpfCHfKZ4FZtYT8t5Zs0%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-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="">：技术口径一票否决——如果技术口径得分 &lt; 15 分（满分 25），即使总分 ≥ 90，也标注为不可执行。原因：没有技术口径，FlinkSpec 的 Flink-SQL Agent 完全无法启动编码。</span><strong style="box-sizing: border-box;"><span leaf="">规则二</span></strong><span leaf="">：验收标准缺失扣分——验收标准完全缺失，总分直接扣除 20 分；严重不足（≤5 分），扣除 10 分。原因：没有验收标准的需求，上线即翻车。</span><strong style="box-sizing: border-box;"><span leaf="">规则三</span></strong><span leaf="">：溢出得分机制——某维度特别优秀可超出该维度满分，但总分上限仍为 100 分。原因：鼓励在关键维度上做到极致。</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.2518518518518518" 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="100060961" src="https://wechat2rss.xlab.app/img-proxy/?k=64e3c0e4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuZgIkE82XATM9zworpYKqSL0P5boadurSFOlMqWBzQtwiaK5csnXrtCPiaCugjtRJ4ZC0nnoljAK16osDXGWXE0byomdEA7iavT0%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="">需要强调的是：PRD 评分不是硬卡点，不是流程阻塞。它是一面镜子，帮助团队看到当前 PRD 的质量水位，逐步建立质量意识。</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="">自动拉群看似简单，但它承载着一个重要的产品设计意图——降低落地阻碍。为什么做自动拉群？如果 BP Claw 只能生成文档，用户还需要手动拉群、手动 @ 人、手动转发文档，那使用体验就是割裂的。自动拉群让整个流程变成了&#34;一步触发、全程自动&#34;：用户只需要在飞书群里 @ 机器人、@ 评审人，附上文档链接。BP Claw 自动完成：读取文档 → 生成标准化文档 → 质量评估 → 创建评审群 → 邀请成员 → 发送文档和诊断报告。评审人在新群里直接看到结构化的文档和质量报告，开始评审。这就是&#34;贴合现有工作流&#34;的具体体现——用户的行为没有变，但背后的效率翻了20倍。</span></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="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="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 应用中，Token 消耗直接关系到成本和响应速度。BP Claw 在这方面做了多项优化。</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="">对于包含 10 个以上指标的大文档，我们不会一次性生成完整文档（这会导致上下文溢出），而是采用</span><strong style="box-sizing: border-box;"><span leaf="">分段生成</span></strong><span leaf="">：先创建文档骨架（业务背景 + 角色-页面-指标矩阵），逐个追加指标定义模块，每追加 5 个指标发送一次进度反馈，最后追加验收标准和用数链路。本质是把&#34;一次大事务&#34;拆成&#34;多次小提交&#34;，即使中途失败也保留了已写入内容，不需要从头来。同时每段写入后向群聊发送进度消息（已生成 5/12 个指标），让用户有等待感知，不会误以为机器人卡死。收益：避免单次 API 调用超时，同时减少重复上下文传递的 Token 消耗。</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;"><span leaf="">BP Claw 采用</span><strong style="box-sizing: border-box;"><span leaf="">编排者</span></strong><span leaf="">（动态调度，按需组合 Skill，职责清晰）模式，将核心逻辑拆分到三个独立 Skill 中：</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.20277777777777778" 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="100060966" src="https://wechat2rss.xlab.app/img-proxy/?k=2221182d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtv4Cceulo9hucqMFAZaVqD1wVAmZbLfafz3QFSpn2fevCpSY5t1jfE2NqIjAE9hiamVohthu5vjKV59hAJpuArkaAT1LxtgUVo%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 独立运行、独立管理上下文，避免了将所有逻辑放在同一个上下文中导致的 Token 膨胀。</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="">技巧三:模板化 Prompt 设计</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="">标准化文档的七大模块，每个模块都有严格定义的模板结构。通过模板约束 AI 的输出格式，避免了冗余输出：明确指定输出字段，不多不少；使用 Markdown 表格约束结构；通过 Few-Shot 示例引导输出风格。</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="">这是 BP Claw 最重要的技术挑战。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-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="">在 Skill 的核心 Prompt 中，我们设置了多层约束：</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=""><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 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="">当 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="">prd-quality-scorer 作为独立的评分 Skill，会对生成的文档进行&#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><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__variable">API</span> 前，强制校验所有必填参数</span></code><br/><code><span leaf="">• 文档生成失败 → 最多重试 <span class="code-snippet__number">3</span> 次（间隔 2s → 5s → 10s 指数退避）</span></code><br/><code><span leaf="">• <span class="code-snippet__number">3</span> 次均失败 → 终止流程，发送明确的错误消息</span></code><br/><code><span leaf="">• 绝不降级生成<span class="code-snippet__string">&#34;简化版&#34;</span>文档（不完整不如不生成）</span></code><br/></pre></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="">打磨 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;"><strong style="box-sizing: border-box;"><span leaf="">难点一</span></strong><span leaf="">：如何让 AI 理解&#34;实时数仓&#34;的领域语义？普通的 LLM 并不理解&#34;去重视图&#34;&#34;Lookup Join&#34;&#34;sink.properties.columns&#34;这些领域概念。我们通过以下方式解决：领域知识注入（在 Skill 定义中嵌入实时数仓的核心概念解释）；模板驱动（通过模板结构限定输出范围，减少 AI 的&#34;自由发挥空间&#34;）；Few-Shot 示例（提供真实的标准化 PRD 样例作为参考）。</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="">：如何处理超长文档？有些 PRD 文档超过 10000 字符、包含 15+ 指标，直接处理会导致 API 超时（默认 60 秒不够用）、Token 超限、输出截断。解决方案：显式设置 timeoutSeconds=1200（20 分钟）；采用分段生成策略，每次只处理 3-5 个指标；实时进度反馈，让用户知道系统仍在工作。</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="">：如何协调多个 Skill 的执行顺序？BP Claw 作为&#34;指挥家/编排者&#34;，需要严格控制 4 个步骤的执行顺序和依赖关系：</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=""><code><span leaf="">规则：严格串行，前序成功才执行后续</span></code><br/><code><span leaf="">STEP 1 成功 → STEP 2</span></code><br/><code><span leaf="">STEP 2 成功 → STEP 3</span></code><br/><code><span leaf="">STEP 3 成功或失败 → STEP 4（评分失败不阻塞）</span></code><br/><code><span leaf="">STEP 4 成功 → 完成</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">任一关键步骤失败 → 立即终止，通知用户</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;"><span leaf="">为什么 STEP 3 失败不阻塞？因为质量评分是&#34;参照&#34;而非&#34;卡点&#34;。即使评分失败，标准化文档和评审群依然有价值。</span></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="">与 FlinkSpec 的联动:全链路赋能</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="">BP Claw → FlinkSpec 的价值传递</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;width: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060970" src="https://wechat2rss.xlab.app/img-proxy/?k=65f7c6dd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsBoUzgAA6raB8EFyP4d5MbLbljxE4ibo0cibvlx6nia302icWiamSRN3PQq3VdPqmQDusrNYHA2Mws5qm7m1Nt2MRRPbkXSxzuobHA%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="">体验效果：PRD 质量提升对 AI Coding 的赋能</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="">：技术口径完整的 PRD——BP Claw 评分 ≥ 90 分，FlinkSpec Define 阶段一次通过，无 BLOCK，Flink-SQL Agent 直接编码无需人工干预，整体交付周期为天级 ⏱️。</span><strong style="box-sizing: border-box;"><span leaf="">场景二</span></strong><span leaf="">：技术口径缺失的 PRD——BP Claw 评分 &lt; 60 分，触发技术口径一票否决，FlinkSpec Define 阶段频繁触发阻塞协议，Flink-SQL Agent 无法编码需反复沟通，整体交付周期为周级。</span><strong style="box-sizing: border-box;"><span leaf="">结论</span></strong><span leaf="">： BP Claw 每提升 10 分的 PRD 质量，FlinkSpec 的编码阶段效率约提升 30%。</span></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;"><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="">一个好的产品工具，如果没有运营手段的配合，是无法真正落地的。BP Claw 在落地过程中，我们采用了</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="">我们建立了 域级 PRD 成熟度评分 机制，通过持续追踪各业务域的 PRD 质量水位，推动整体提升：</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.25092592592592594" 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="100060967" src="https://wechat2rss.xlab.app/img-proxy/?k=84b1d694&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvibY93gEbKRIII8PBOAicb1JnEa0fUsoey9b6hRiaTX3foGwvKiaJC7uaPqLrW7wLyENIu5P9VVtBmpPt62vKapKLDxHbRoYCiba4E%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="">通过持续收集每次 PRD 评分数据，建立质量趋势看板：按业务域维度追踪质量变化；识别高频缺失项，定向改进；月度质量复盘，表彰优秀案例。</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="">将高分 PRD 案例沉淀为模板，形成可复用的知识资产：优秀案例库（≥ 90 分的 PRD 自动入库）；改进指南（针对常见扣分项提供标准化的补充模板）；新人培训（通过 BP Claw 评分报告快速上手 PRD 编写规范）。</span></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="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><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__meta">@商业化MOSS</span> <span class="code-snippet__meta">@评审人1</span> <span class="code-snippet__meta">@评审人2</span> <span class="code-snippet__meta">@评审人N</span><span class="code-snippet__operator">....</span> 需求拉群 飞书<span class="code-snippet__type">PRD文档链接</span></span></code></pre></p><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.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="100060969" src="https://wechat2rss.xlab.app/img-proxy/?k=421e6ffb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuicp0nr0GfRZI9PiadXW51t61WRSmOibExXYN4KABtkl2MUWhph4zfpqicuz5oEyDpYaibqViczjcNFuNcvZkus8ACN708QMuDAb74E%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-5 分钟，你将在新的评审群中看到：标准化 PRD 文档、质量诊断报告、改进建议清单。</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-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.2518518518518518" 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="100060968" src="https://wechat2rss.xlab.app/img-proxy/?k=6b648c9a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvsmibicVgwMezoDbPmXTtQp3UK5Bm6GUevneqKQp0vmkicjmMtgRV7AicjyuhqvdpUK5iaKPOkSiaGcoV1zq6wl0hfC3URiaCIOmbIX0%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><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="">本文为 FlinkSpec 系列之开篇，亦是这场工程化变革的序章。BP Claw 所立之处，不过链路之源。FlinkSpec 所图，乃以 AI 之力，将实时数仓从需求落地至验收上线的全程工序，熔铸为一套精密自洽、生生不息的智能工程体系。宏图未竟，后续系列将逐章揭幕，敬请期待！</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=2247544494&amp;idx=1&amp;sn=a0df4bcc0f9762cfe06b81041f147126&amp;scene=21#wechat_redirect" textvalue="基于 Harness + SDD + 多仓管理模式的 AI 全栈开发实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">基于 Harness + SDD + 多仓管理模式的 AI 全栈开发实践｜得物技术</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=2247544412&amp;idx=1&amp;sn=86d3afe68029fc53c2c03fd4cbe83b8d&amp;scene=21#wechat_redirect" textvalue="通用 AI Agent 驱动网关路由安全审计实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">通用 AI 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=2247544174&amp;idx=1&amp;sn=b87982ec3a52d256511e71ac0691c490&amp;scene=21#wechat_redirect" textvalue="AI驱动：从运营行为到自动化用例的智能化实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544067&amp;idx=1&amp;sn=6dfd6e3f1948f4a36d30abf1e79ef6ef&amp;scene=21#wechat_redirect" textvalue="生成式召回在得物的落地技术分享与思考" data-itemshowtype="0" linktype="text" data-linktype="2">生成式召回在得物的落地技术分享与思考</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=2247544056&amp;idx=1&amp;sn=18bd6749a8e9b8ff2dde91b066a2526a&amp;scene=21#wechat_redirect" textvalue="立正请站好：一个组件复用 Skill 的工程化实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">立正请站好：一个组件复用 Skill 的工程化实践｜得物技术</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="100060971" src="https://wechat2rss.xlab.app/img-proxy/?k=08e8926c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtz4OAqlHttibx2wrFMfVL9XmJ8HzlibeJLZXqXuHicpjPkLjecVREj5HvAS834E1Glcjd53xib12geLb3h8GAnsQXNqoEpLnuP7Yo%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=ae1d3f6b&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544623%26idx%3D1%26sn%3D470300ff2996709904dffe87f0b02d8c">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 13 May 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>《技术达人养成记｜青铜1年：新手村升级攻略！》</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544495&amp;idx=1&amp;sn=9c8da893b14628a6db6798d10f2d93c2</link>
      <description>对话两位入职得物一年多的技术新人，看他们从接任务到打副本，解锁0-1技术落地实战！</description>
      <content:encoded><![CDATA[<p>原创 <span>技术达人养成策划</span> <span>2026-05-08 12:01</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=00770365&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHu2cJhrulJWUrVpUeiaAYA9Q8qI1ng6SF0B8PJXiaiaPHjZRtnNu9xKtO5QmJgB5xTzTPwc5RGWXCF4XxOR89zqgibqCHLO6HTVKTk%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>对话两位入职得物一年多的技术新人，看他们从接任务到打副本，解锁0-1技术落地实战！</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-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 class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060769" 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=af8b9255&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHs18fmVMfZ6tJGicq3DBXwic9ZylcT8nX03soERcBBNkiby1mVTFLe8fwAzYf3an1ZzGpoD7pUILicwTqaayYbgib4m0UZ3CicR8mGhg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;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="">这些在得物技术部不是段子。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们抓来两位司龄1岁+的校招生——</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="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="1.3675925925925927" 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="100060768" src="https://wechat2rss.xlab.app/img-proxy/?k=03107d2b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsJn6gponVujiaCSWkwmWrkvC4eXibEU4n0DydB1A6z1wqMzictA47Q7EvQzEPZicSOialzLZYicIsjLxEe9QMe8mkQR6ibjTic6Af0IVs%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="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="100060770" src="https://wechat2rss.xlab.app/img-proxy/?k=55649b13&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuQDcXwfQyuFV3wlnChKOr4pSoyqiaEn3XNwibibhnvogQQc5G3dN1es2QlUibYrLrScxvqCRtzxJnMO3TuAEJ0C5lyDGk7TY7M1NM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: auto;box-sizing: border-box;"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 20px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;line-height: 0;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;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: 2px;border-color: rgb(17, 142, 227);margin: 0px;padding: 0px 25px;line-height: 1.6;background-color: rgb(3, 221, 221);box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 3;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="margin: 0px;box-sizing: border-box;"><div style="text-align: center;font-size: 20px;color: rgb(255, 255, 255);letter-spacing: 2px;box-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></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.37037037037037035" 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="100060766" src="https://wechat2rss.xlab.app/img-proxy/?k=243c37e7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvhFj0RNB1ZH99rQicCsFgeIRKnRoCTfKEmibxRYdB14Pia1jicH5EWMpmgAEHYlmf4eJibcGdrY4sbKBYgY7oIOanTYTvZ1OicVNgbE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(253, 227, 103);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@乔伊：</span></strong></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="">在过去的一年多里，TL和组内师兄按照项目难度循序渐进的分配工作，同时又得益于过去一年算法平台对大模型的大范围使用，让作为校招新人的我得以快速进步和成长，紧跟领域前沿技术。</span></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(254, 198, 255);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@泽锐：</span></strong></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="">从校园到职场，对我来说挑战巨大。得益于部门系统性的培养、TL/师兄的倾囊相授以及快节奏的工作氛围，我在业务理解、技术深度（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="">：虽然是新人，但团队和部门给了我极大的信任空间，不仅给机会，还给资源、给兜底（希望用不上），能够主导一些具有创新性和重要性的项目，这种信任即是压力，也是强大的驱动力，感觉随时充满“Passion”，促使我快速提升能力以匹配职责。</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;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.37037037037037035" 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="100060765" src="https://wechat2rss.xlab.app/img-proxy/?k=4f2f2354&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHt792eE72P6ZNCOZdicavY7OZcRJAKkb0mz2UvwfsbgB2Rfs7zkkx4WLsnAI93c3NPCTpKyurVxwqYOoNhtg7BN0epbsTJlI3aI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(253, 227, 103);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@乔伊：</span></strong></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在复杂任务早期，TL会帮助我分析并拆解任务，判断任务可行性同时提出修改建议。</span><strong style="box-sizing: border-box;"><span leaf="">有带教师兄的培养机制</span></strong><span leaf="">我认为对我们新人的培养是最有效的。在早期工作过程中，可能有着许多文档无法提到的流程和操作细节，请求带教师兄可以省去大量不必要浪费的时间。</span></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(254, 198, 255);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@泽锐：</span></strong></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="">详细的SOP文档和业务流程图</span></strong><span leaf="">等知识沉淀，结合知无不言的师兄，在业务理解、工作方法、沟通协调上给予我细致指导，使得我能快速构建起业务全景图，并上手实际的质量保障工作。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">新人的培养也不是一股脑乱塞资料，TL和师兄会根据我所负责的业务</span><strong style="box-sizing: border-box;"><span leaf="">定向推荐业务沉淀文档、学习资源、内部技术分享</span></strong><span leaf="">，并分配一些边界清晰、较为简单的新手友好小任务，让我能精准打击知识盲区，在做中学，学中做，效率拉满，同时师兄会在关键节点review、指导，确保不跑偏。</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><strong style="box-sizing: border-box;"><span leaf="">荣誉激励</span></strong><span leaf="">，是快速获取公司周边的好机会！</span></p></div><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: auto;box-sizing: border-box;"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 20px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;line-height: 0;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;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: 2px;border-color: rgb(17, 142, 227);margin: 0px;padding: 0px 25px;line-height: 1.6;background-color: rgb(3, 221, 221);box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 3;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="margin: 0px;box-sizing: border-box;"><div style="text-align: center;font-size: 20px;color: rgb(255, 255, 255);letter-spacing: 2px;box-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></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.37037037037037035" 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="100060774" src="https://wechat2rss.xlab.app/img-proxy/?k=e05b0528&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuSgDzcaW5UO5BpcU4bH6Zr0VRs3tR5c6PBp2Bt9mSfibsLsAgD6gKGdNJTffHyOEUticncC3LQF1SlcwHHHZDSXg4u0Q306KlTU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(253, 227, 103);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@乔伊：</span></strong></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="">。</span></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(254, 198, 255);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@泽锐：</span></strong></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="">作为项目Owner，我需要首先梳理清楚项目目标、收益、具体方案、运营计划、项目排期、里程碑等内容。提前预约好项目各时间节点的会议，在会议前，需要准备清晰的会议议程，包括项目目标、当前进展、需要支持的具体事项以及预期时间节点。得益于前期准备充分，会议沟通都整体较为顺畅，虽然过程中也遇到了一些业务规则理解上的分歧，但都通过及时沟通的方式解决掉，最终项目成功落地，取得了较好的结果。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这期间，TL提前帮我明确了项目的目标和价值，指明了大方向，师兄也在项目启动前就帮我梳理了关键干系人和沟通策略，</span><strong style="box-sizing: border-box;"><span leaf="">在遇到卡点时也会提供建议，必要时协助推动，始终让我站在前台主导</span></strong><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.46296296296296297" 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="100060773" src="https://wechat2rss.xlab.app/img-proxy/?k=f5a0775e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvahye2JsDFhltAjn6mRDp8iaZvnf44GZkT6ia3kDNlpkokn2OOERXhYDnrqOItEWdGao16ficM1zBNwdxibqYbQHyGP2CqE0petns%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(253, 227, 103);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@乔伊：</span></strong></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在模型优化效果不佳的时候，TL并没有指责，而是</span><strong style="box-sizing: border-box;"><span leaf="">帮助一起分析当前优化性能不佳的原因</span></strong><span leaf="">，并提供了很多业内其他公司的优化示例和论文帮助后续优化提供方向。在后续工作过程中，遇到卡点的时候会汲取之前的经验，广泛吸纳领域内其他的优秀方案，并本地化解决项目中的问题。</span></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(254, 198, 255);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@泽锐：</span></strong></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">有的。在负责AI生成功能用例项目的初期，大家对使用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="">在后续项目中，我们建立了反馈机制，收集来自测试同学的具体反馈，以便定期更新优化功能，提升AI生成用例的效果和易用性，同时提供使用教程和最佳使用姿势并实时更新，帮助用户更好地理解、接受和使用AI生成用例功能。我自己也清楚了</span><strong style="box-sizing: border-box;"><span leaf="">团队是具备“容错”的，更关注于成长</span></strong><strong style="box-sizing: border-box;"><span leaf="">，重要的是从中学习并改进</span></strong><span leaf="">，这也增强了我在后续挑战性任务中的信心和韧性。</span></p></div><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: auto;box-sizing: border-box;"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 20px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;line-height: 0;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;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: 2px;border-color: rgb(17, 142, 227);margin: 0px;padding: 0px 25px;line-height: 1.6;background-color: rgb(3, 221, 221);box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 3;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="margin: 0px;box-sizing: border-box;"><div style="text-align: center;font-size: 20px;color: rgb(255, 255, 255);letter-spacing: 2px;box-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></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.46296296296296297" 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="100060771" src="https://wechat2rss.xlab.app/img-proxy/?k=0670946f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvttSic8Y8aIu6QCbHQsWWzLh0aSibdgxQC2tsTn6T2o0GVqmibWZuQvMDqM0xQ5NdoqnMGa4UAY9qx81ic1DpofrrEBibH7MxkLAsc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(253, 227, 103);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@乔伊：</span></strong></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">DeepSeek R1 刚发布时，我参与并推动了该模型在公司业务中的从0到1落地。我的主要工作内容是deepseek的推理优化工作，说实话，deepseek作为当时参数最多的开源模型，且模型中包含多个新结构，优化难度很大。在优化过程中，将优化目标按照任务难度分为多个阶段，在</span><strong style="box-sizing: border-box;"><span leaf="">内部研究同时紧盯业内优化手段</span></strong><span leaf="">，最终交付了三个以上的优化版本。经历了刚好满足业务RT需求到RT减半，吞吐翻倍等多个阶段。</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.46296296296296297" 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="100060772" src="https://wechat2rss.xlab.app/img-proxy/?k=0118eca7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtsM4ibd8YJ1LugvV9tl5sCaeiaczqcvtvzUYrBVhwNWDVgTUs6OdCQviclpavFQgervzkZ9QLKPTomjtkndicSVWMsztdgdyOHqGM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(254, 198, 255);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@泽锐：</span></strong></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自动化测试项目时，部门并没有限制我必须使用某一特定的技术栈。我可以基于问题场景，调研业界方案，提出技术构想，并在充分POC后获得资源支持进行探索和实践，允许我在完成业务质量保障工作的同时，投入精力去“折腾”这些创新点。</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;"><strong style="box-sizing: border-box;"><span leaf="">提供展示与交流平台</span></strong><span leaf="">：部门让我负责一些创新性的项目，极大地锻炼了我的技术实践能力和项目管理能力。同时，部门内部的技术分享、甚至质量平台级别的分享会，都为我们展示项目成果、交流实践经验提供了平台，这种认可是也是我持续创新的动力。</span></p></div><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: auto;box-sizing: border-box;"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 20px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;line-height: 0;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;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: 2px;border-color: rgb(17, 142, 227);margin: 0px;padding: 0px 25px;line-height: 1.6;background-color: rgb(3, 221, 221);box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 3;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="margin: 0px;box-sizing: border-box;"><div style="text-align: center;font-size: 20px;color: rgb(255, 255, 255);letter-spacing: 2px;box-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></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.46296296296296297" 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="100060775" src="https://wechat2rss.xlab.app/img-proxy/?k=7c289929&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHujBeZlNUIP6WjPgicMnT6HicM3wscvphPiapluvf255kJefpZMqvjibXC1O192hlRBxpoDuSHiboW90ez5T8y6iaxA6x4CgtgIgyhOg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(253, 227, 103);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@乔伊：</span></strong></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="">。另外，要沉下心打好基础，愿意花很长的时间和精力去啃源码和细节。</span></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(254, 198, 255);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@泽锐：</span></strong></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">第一站肯定是每个技术部校招得物er都会经历的</span><strong style="box-sizing: border-box;"><span leaf="">入职培训</span></strong><span leaf="">，从技术部文化和安全、效率工程和项目管理、质量&amp;研发效能相关内容和工具的课程培训，到校招项目实践的实战，帮助我们快速落地，完成校园到职场的身份转换。</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="">的质量都非常高，我会经常搜有没有同事写过相关主题（例如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="">动手实践往往比单纯的学习理论知识来的要快</span></strong><span leaf="">，遇到不懂的大胆提问，能快速帮我们理清业务脉络、避开历史深坑，往往能get到很多容易被忽略到的细节。</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;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.37037037037037035" 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="100060778" src="https://wechat2rss.xlab.app/img-proxy/?k=cd6a63fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtd3M5xesaqtwYyZf7RicErHuCvf0BjrPrYUKd8CaJdHfxuaYhjaW7IMQVfm03uj1Y2HK8Jbu0Lz4hfZCia6wdU5O3Fw7P4OW7vg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(253, 227, 103);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@乔伊：</span></strong></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="">，目前在社区推理框架基础上，开发出多个功能适配版本和推理优化版本。</span></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(254, 198, 255);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@泽锐：</span></strong></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="">： 刚入职时，可能仅仅只关注单个功能点有没有Bug，质量保障的视角处于“低维”状态；现在，通过负责代码覆盖率、UI自动化、前端巡检等质量专项，深刻理解了 “全链路质量保障” 的概念。不仅要保证功能正确，还要关注性能、稳定性、变更影响范围、用户体验等，</span><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="">从手工点点点 -&gt; 驾驭AI搞自动化：刚入职时，只具备基础的测试理论、自动化测试和编程能力，对AI在测试中的应用停留在概念层面；现在能探索并实践基于 AI Agent 的端到端自动化测试方案，并将想法进行落地，将其嵌入到现有测试流程中，打开了新世界的大门！</span></p></div><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: auto;box-sizing: border-box;"><div style="text-align: center;justify-content: center;display: flex;flex-flow: row;margin: 20px 0px 10px;box-sizing: border-box;"><div style="display: inline-block;width: auto;vertical-align: top;align-self: flex-start;flex: 0 0 auto;line-height: 0;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;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: 2px;border-color: rgb(17, 142, 227);margin: 0px;padding: 0px 25px;line-height: 1.6;background-color: rgb(3, 221, 221);box-sizing: border-box;"><div style="display: flex;width: 100%;flex-flow: column;box-sizing: border-box;"><div style="z-index: 3;box-sizing: border-box;"><div style="justify-content: flex-start;display: flex;flex-flow: row;margin: -5px 0px;box-sizing: border-box;"><div style="display: inline-block;vertical-align: middle;width: auto;align-self: center;flex: 0 0 auto;min-width: 5%;max-width: 100%;height: auto;box-sizing: border-box;"><div style="margin: 0px;box-sizing: border-box;"><div style="text-align: center;font-size: 20px;color: rgb(255, 255, 255);letter-spacing: 2px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">NPC有话说：写给开服萌新</span></strong></p></div></div></div></div></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.37037037037037035" 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="100060776" src="https://wechat2rss.xlab.app/img-proxy/?k=37478168&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvBMa0tPCkZ8fIV3KEiaRnhWRD03yqV3aYo3FZf42H8GUFUjrcBvKo27d6ziappI9l1X5Wj1Xia6wyyHkuM04CCeyJb6jofGI0ic8U%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(253, 227, 103);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@乔伊：</span></strong></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我想说，不必焦虑，周围的同事和TL都很nice，</span><strong style="box-sizing: border-box;"><span leaf="">未来比你想象得要精彩。</span></strong></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(254, 198, 255);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@泽锐：</span></strong></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><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=""> ：看见能优化的地方？有新奇的想法？不要局限于被分配的任务，主动去发现流程中的痛点、效率的瓶颈，大胆提出自己的想法和解决方案，甚至撸个MVP。 在得物，主动出击的人更容易获得机会和资源。</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;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.37037037037037035" 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="100060777" src="https://wechat2rss.xlab.app/img-proxy/?k=24d5e9ab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtm3fWAMoDIs1PpNcIq4y9VOssK1nboVtFaLAFOjufmlf96somPwfZLWlfNhxr9Ptxic7IaZhuL3n3ibGQQwY5NjAIzU9J8zBNg8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(253, 227, 103);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@乔伊：</span></strong></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">刚入职遇到问题不要着急，可以多搜搜公司的文档，也可以直接向师兄和TL请教，大家都很乐意解答。</span></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 16px;background-color: rgb(254, 198, 255);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">@泽锐：</span></strong></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">拒绝能力纬度单一，要做“T”型人才</span></strong><span leaf="">：只专注于某一方面的工作，只会干一件事，很容易导致自己“能见度太低”，最好是先扎根于某一能力，再围绕这个能力拓展开来，成为“一专多能”的“T”型人才。</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><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><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">最后，引用一句TL给我的话作为结尾：“</span><strong style="box-sizing: border-box;"><span leaf="">年轻人干工作，优势就是胆子大，加油</span></strong><span leaf="">！”。</span></p></div><div style="font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 20px;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="">SOP文档与业务流程图，新人也能迅速理解复杂系统；</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="">更聚焦经验沉淀与认知升级，而非责任追究；</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;"><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-top: 10px;margin-bottom: 10px;text-align: left;box-sizing: border-box;"><p style="display: inline-block;box-sizing: border-box;"><span style="display: block;padding: 0.3em 0.5em;border-radius: 0.8em 0.8em 0px 0px;background-color: rgb(3, 221, 221);font-size: 14px;color: rgb(255, 255, 255);box-sizing: border-box;" title=""><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">技术达人养成记</span></p></span></p><div style="border: 1px solid rgb(3, 221, 221);border-radius: 0px 0px 0.8em 0.8em;padding: 10px;box-sizing: border-box;"><div style="font-size: 14px;color: rgb(160, 160, 160);box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">本系列采访将聚焦得物技术校招入职1-4年的技术同学，重点呈现年轻技术人在业务洪流中的成长加速度与突破方法论。</span></p></div></div></div><div style="text-align: center;font-size: 15px;line-height: 2;letter-spacing: 0.5px;padding: 0px 10px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 14px;box-sizing: border-box;"><span leaf="">⬇️下期将解锁⬇️</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-size: 14px;box-sizing: border-box;"><span leaf="">《技术达人养成记｜白银2年：组队挑战高难副本！》 </span></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.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="100060780" src="https://wechat2rss.xlab.app/img-proxy/?k=505dd04f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvBamZ0CebVEFqdqkFpK0DU3OiaiahZqZM6MRRTvFwicM9YbQjDVBqia8ico9LZU9G9icyzaHwMb66GOo02czpjqwIsticmzVDRQic7Nsk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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.7407407407407407" 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="100060779" src="https://wechat2rss.xlab.app/img-proxy/?k=add8dbaa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs0bqLtRAntGuQ8PoZAbQQTdq40E3M9FsaWVP4PE0KNkWDxlVupCEzOEI51YZcf4JZkLJQBZnv9tPpVPxEwdnEesGQFvakUI7k%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></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=e7f75eeb&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544495%26idx%3D1%26sn%3D9c8da893b14628a6db6798d10f2d93c2">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 08 May 2026 12:01:00 +0800</pubDate>
    </item>
    <item>
      <title>基于 Harness + SDD + 多仓管理模式的 AI 全栈开发实践｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544494&amp;idx=1&amp;sn=a0df4bcc0f9762cfe06b81041f147126</link>
      <description>Harness（约束）思维的本质是：给 AI 一个已有的实现作为参照，让它照着复刻一份，而不是凭空创造。就像给一个新入职的工程师说&#34;你照着这个模块的风格，写一个类似的&#34;，而不是&#34;你自由发挥&#34;——前者往往能更快产出符合团队规范的代码。</description>
      <content:encoded><![CDATA[<p>原创 <span>盖伦</span> <span>2026-05-06 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=90990d41&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtrEIcGjcEHQWhHwN3wxxLic9KDhGpDqhiaBYKeeYXPx4nTUcW5mrCTD7VJluUVv1GkY4Bpco5ibEaMxx6aTicdaUvpg3N1lOz3xibw%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>Harness（约束）思维的本质是：给 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="">一、核心理念：Harness 思维 — 让 AI 模仿，而不是凭空创造 </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. Harness 思维的核心：给 AI 一个&#34;模仿对象&#34;  </span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3. 在提示词中体现 Harness</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、全栈工作区搭建与 Codebase Indexing   </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. Codebase Indexing 的价值</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3. Cursor vs Claude Code：选哪个？</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4. 全栈工作区搭建 &amp; SDD 初始化</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、SDD 驱动的全栈代码生成流程</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1. 全栈 SDD 的特殊之处</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="">    4. SDD 文档产出</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5. SDD 指令使用说明</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. Cursor 中的多 Agent 协作</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3. Claude Code 中的 Subagent 能力</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4. 多 Agent 实践建议</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、前后端联调：Mock 数据与分阶段验证</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. Mock 数据编写要点</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="">六、警惕 SDD 陷阱：测试如何介入全栈研发</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1. SDD 不等于需求文档</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></div></div></div></div></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="">核心理念：Harness 思维 — 让 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="">全栈 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="">全栈 SDD 开发中，最常见也最致命的错误是：让 AI 从零开始写代码。AI 模型具备&#34;通识能力&#34;，给它一个需求描述，它确实能生成可运行的代码。但问题在于，这些代码往往是&#34;外星代码&#34;：</span><strong style="box-sizing: border-box;"><span leaf="">风格不一致</span></strong><span leaf="">（命名规范、目录结构、分层方式与项目现有代码不同）、<span textstyle="" style="font-weight: bold;">复用率低</span>（没有利用项目已有的公共组件、工具函数、请求封装）、<span textstyle="" style="font-weight: bold;">采纳率低</span>（Code Review 时后端同学看到&#34;外来风格&#34;的代码，会产生大量修改意见）。结果就是：AI 生成了代码，但 Review 成本和返工成本反而更高了。</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="">Harness 思维的核心：给 AI 一个&#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="">Harness（约束）思维的本质是：给 AI 一个已有的实现作为参照，让它照着复刻一份，而不是凭空创造。就像给一个新入职的工程师说&#34;你照着这个模块的风格，写一个类似的&#34;，而不是&#34;你自由发挥&#34;——前者往往能更快产出符合团队规范的代码。</span></p></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">哪怕是&#34;抄一份改一改&#34;，也比用新方式写好</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr></tbody></table></p></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">&#34;结束语&#34;功能参照&#34;场景化欢迎语&#34;的前后端完整实现</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;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="">greetingExtendInfo</span></span><span leaf=""> 的数据结构，新建 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">closingExtendInfo</span></span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">Controller / Service / Repository 按已有接口模仿</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">@FeatureTable/index.tsx:53-58</span></span></p></div></td></tr></tbody></table></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;"><strong style="box-sizing: border-box;"><span leaf="">不推荐（凭空创造）：</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=""><code><span leaf="">请实现一个结束语管理的 CRUD 接口</span></code></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="">推荐（Harness 约束）：</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="bash"><code><span leaf="">请参照现有<span class="code-snippet__string">&#34;场景欢迎语&#34;</span>功能（后端接口 /api/v1/feature/list，</span></code><br/><code><span leaf="">前端入口 FeatureTable/index.tsx:53-58）实现<span class="code-snippet__string">&#34;结束语&#34;</span>功能。</span></code><br/><code><span leaf="">数据结构、分层方式、命名风格都保持一致。</span></code><br/><code><span leaf="">新增场景 code：categoryCode = <span class="code-snippet__string">&#34;SCENARIO_CLOSING&#34;</span></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;"><span leaf="">两者的差距不在于 AI 是否&#34;聪明&#34;，而在于你给了 AI 多少约束和上下文。约束越精准，生成代码的可用性越高。</span></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="">全栈工作区搭建与 Codebase Indexing</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="">前后端代码通常分布在两个独立仓库。如果分开打开，AI 生成后端接口时看不到前端的调用方式，生成前端代码时看不到后端的返回结构，接口字段对不上是家常便饭。将前后端代码放在同一个工作区下，有三个核心价值，</span><strong style="box-sizing: border-box;"><span leaf="">Codebase Indexing</span></strong><span leaf="">：Cursor 对工作区内所有代码进行向量化嵌入，建立语义索引。AI 能跨仓库理解代码关系，生成质量大幅提升。</span><strong style="box-sizing: border-box;"><span leaf="">上下文完整</span></strong><span leaf="">：AI 同时能看到前后端代码，接口字段、命名风格自然对齐。</span><strong style="box-sizing: border-box;"><span leaf="">SDD 文档集中管理</span></strong><span leaf="">：前后端 SDD 文档在同一工作区，便于接口契约对齐。</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="">Codebase Indexing 的价值</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="">Cursor 的 Codebase Indexing 会对工作区内的代码进行向量化嵌入，建立语义索引。</span><strong style="box-sizing: border-box;"><span leaf="">这意味着</span></strong><span leaf="">：当你问 AI &#34;场景欢迎语是怎么实现的&#34;，它不需要你手动指定文件，能通过语义检索自动找到相关的 Controller、Service、前端组件。当你让 AI &#34;照着欢迎语写结束语&#34;，它会检索到欢迎语的前后端完整实现链路，而不只是单个文件。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">前后端放在同一个工作区，Codebase Indexing 覆盖两侧代码。AI 生成后端接口时能参考前端的调用方式，生成前端代码时能参考后端的返回结构。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Tips</span></strong><span leaf="">：Cursor 打开工作区后，首次索引可能需要几分钟。可以在 Cursor 设置查看索引进度。确保索引完成后再开始让 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="">Cursor vs Claude Code：选哪个？</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 开发场景下，两款工具各有侧重，下表是实测对比：</span></p></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="22.0000%" width="22.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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="">Cursor</span></strong></p></div></div></td><td data-colwidth="33.0000%" width="33.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Claude Code</span></strong></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="22.0000%" width="22.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: left;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">支持 grep + 代码段语义相似度检索</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;text-align: center;"><span leaf="">速度快，理解能力全面</span></p></div></div></td><td data-colwidth="33.0000%" width="33.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: left;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">仅支持 grep</span></p><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">准确度严重依赖模型能力</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="22.0000%" width="22.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: left;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">极速</span></p><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">平均 1–3 分钟</span></p></div></div></td><td data-colwidth="33.0000%" width="33.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: left;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">中速</span></p><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">平均 3–30 分钟</span></p><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5 分钟以上是常态</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="22.0000%" width="22.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="33.0000%" width="33.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="22.0000%" width="22.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="33.0000%" width="33.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">@文件路径</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">无法引用代码段</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="22.0000%" width="22.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><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="">多 Agent</span></p></div></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">默认开启（多 Tab 并行）</span></p></div></td><td data-colwidth="33.0000%" width="33.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">需要手动注册子 Agent</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="22.0000%" width="22.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="33.0000%" width="33.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">容易浪费大量 Token</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="22.0000%" width="22.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="text-align: left;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">仅能查看当前项目会话记录</span></p><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">存在会话丢失</span></p></div></td><td data-colwidth="33.0000%" width="33.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="22.0000%" width="22.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="text-align: left;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">快速迭代首选</span></p><p style="text-align: center;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">推荐 Composer2 模式</span></p></div></td><td data-colwidth="33.0000%" width="33.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">依赖卓越的基础模型</span></p></div></td></tr></tbody></table></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="">全栈工作区搭建&amp;SDD初始化--内部全栈研发插件</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6620370370370371" 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="100060836" src="https://wechat2rss.xlab.app/img-proxy/?k=35189fb1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsiciaL8Cvm5BMC6DeIUOVwA2qZ20XePnia094e4dicVOicT2ZDoLibneEFj0vd3VggKvgFUblhmc3Q6qxf1K5NicTdbv5gpOJibbsyQro%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(231, 231, 231);box-sizing: border-box;"><span leaf="">.claude</span></span><span leaf=""> 和 </span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">.cursor</span></span><span leaf=""> 中已对 SDD 能力进行初始化。</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;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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="2.1134751773049647" data-s="300,640" data-type="png" data-w="282" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060833" src="https://wechat2rss.xlab.app/img-proxy/?k=e3f61584&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsxkbcRpG0fDRZpGkbhhpJOl6WK3gia4jP5A2lvqFNSO85WGFWsibbfN3IL9icpcxa5BVTcdyVpZxm6kRu4qyjRZKoXkGdIFLpkyk%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="2.1114982578397212" data-s="300,640" data-type="png" data-w="287" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060835" src="https://wechat2rss.xlab.app/img-proxy/?k=4df452e1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHthdJ6xsICPJVQzZKmf2M9iaYJocqV4HicCpVvdPUphtVs6CopLQB7icd7BNsic56kibgutjWriaw6bY9iahQFRmXLhnzTuT1GepHT9Ik%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5728770595690748" data-s="300,640" data-type="png" data-w="789" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060832" src="https://wechat2rss.xlab.app/img-proxy/?k=9679a9be&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvTwFwL1NdD17FEetjnOVKhpG6OXCpibGI92kuHFxU3pvnqQTWq19t0AnZNufct4Y23WDoLFJK4CDt5UuicppEeRl8kT0JE7sohQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">SDD 驱动的全栈代码生成流程</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="">全栈 SDD 的特殊之处</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="">与纯前端/纯后端 SDD 不同，全栈 SDD 需要：</span><strong style="box-sizing: border-box;"><span leaf="">生成两份 SDD 文档</span></strong><span leaf="">（前端一份、后端一份）；</span><strong style="box-sizing: border-box;"><span leaf="">接口契约对齐</span></strong><span leaf="">，前端 SDD 中的接口调用与后端 SDD 中的接口定义必须严格对应；</span><strong style="box-sizing: border-box;"><span leaf="">字段映射一致</span></strong><span leaf="">，前端 VO 中的字段名与后端返回的 JSON 字段名一一对应。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.32452830188679244" data-s="300,640" data-type="png" data-w="530" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060834" src="https://wechat2rss.xlab.app/img-proxy/?k=36c3a7fa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtpqWafNclB3r6oibCEZRAx6CvuKWicuLl4UOx3KmKZIRHa4SjbfRzGRENlQtJ7PbNlDZAGk7T120Al5MVIQV0f0xkoHTuguiaxVg%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="">以下是经过实践验证的全栈 SDD 生成提示词模板：</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="bash"><code><span leaf="">这是一个前后端全栈开发工作区，需要你设计技术接口方案，同时开发前后端项目；</span></code><br/><code><span leaf="">首先你需要 <span class="code-snippet__built_in">cd</span> 到对应前后端应用目录中，创建 sdd 文件；</span></code><br/><code><span leaf="">所以你需要生成两份 sdd 文档，之后我会启动两个 agent 分别实现；</span></code><br/><code><span leaf="">在生成之前，如果你需要确认某些细节，你应当先确认后生成 sdd 文档。</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">前端应用：service-frontend</span></code><br/><code><span leaf="">/sdd-propose  feature/your-feature-name</span></code><br/><code><span leaf="">前端修改入口参考：@FeatureTable/index.tsx:53-58 @columns/index.tsx</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">后端应用：service-backend</span></code><br/><code><span leaf="">/sdd-propose  feature/your-feature-name</span></code><br/><code><span leaf="">后端修改入口参考接口：/api/v1/feature/list</span></code><br/><code><span leaf=""><br/></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;"><strong style="box-sizing: border-box;"><span leaf="">关键要素解读：</span></strong></p></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="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="35.0000%" width="35.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="65.0000%" width="65.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="35.0000%" width="35.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;text-align: center;"><span leaf="">&#34;cd 到对应目录&#34;</span></p></div></div></td><td data-colwidth="65.0000%" width="65.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">让 AI 在正确的项目目录下创建 SDD 文件，避免混放</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="35.0000%" width="35.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">&#34;生成两份 SDD 文档&#34;</span></p></div></div></td><td data-colwidth="65.0000%" width="65.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">明确前后端各一份，防止 AI 写成一份</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="35.0000%" width="35.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">&#34;之后启动两个 agent 分别实现&#34;</span></span></p></div></td><td data-colwidth="65.0000%" width="65.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">暗示后续多 Agent 并行开发，让 AI 提前做好接口对齐</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="35.0000%" width="35.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">&#34;先确认后生成&#34;</span></p></div></td><td data-colwidth="65.0000%" width="65.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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 遇到不确定的地方先问你，避免生成错误的 SDD</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="35.0000%" width="35.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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;text-align: center;"><span leaf="">&#34;@文件路径&#34;</span></p></div></td><td data-colwidth="65.0000%" width="65.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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;text-align: center;"><span leaf="">利用 Cursor 的 @ 引用，让 AI 读取参考文件</span></p></div></td></tr></tbody></table></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: 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><div style="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="">主要是新增一个后台管理页面的 tab，涉及到搜索、展示、配置新增、删除等；利用内部 SDD 文档工具（如下图）从 PRD 描述和文档图片中提炼出需求点。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.41754051477597715" 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="100060837" src="https://wechat2rss.xlab.app/img-proxy/?k=9ab5303a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsp1ST00icCXQ7U7SxsJXLXAhHM45MpvDD4j7vb7hs77hEYYe6ibG8m9J7tuCyOghHuYqRVChepkPib8wFr2cY0EetWkEgWTFydt8%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="">内部 SDD 文档工具</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="">左侧导航新增&#34;结束语&#34; Tab。 右侧新增结束语列表页。</span></strong><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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5398148148148149" 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="100060841" src="https://wechat2rss.xlab.app/img-proxy/?k=562493dd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHt3oiaq7Ne76EXCvgCVib59rtgBfTewo09gOhdCEkeD7ASUWD6R8h7WawVBlKOp6kAlkDsecrzPHhKuZmJfiafKnjh1ocgz5cQ2e4%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-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.5453703703703704" 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="100060838" src="https://wechat2rss.xlab.app/img-proxy/?k=6ffdd3e9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHttiblQDvrTicZxibibBSos1ibib2UWQ6ZKYPIEZ4huT9FiaSWa2zfm9TL7GcKmEveQanyjQdZicSKfv62qOC32dVicfBib6xO4D8CxP07p4%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="">点击&#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="">后端功能点（含接口清单）</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="">后端功能由 AI 根据前端需求描述自主设计数据表和接口。以下是 AI 在生成 SDD 前需要明确的关键设计问题（这些问题应在提示词中列出，让 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="">列表接口（支持分页，回显数据直接嵌入列表响应，无需单独回显接口）、新增接口、编辑接口（复用新增逻辑，根据 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="">结束语话术内容（数组类型）、结束语描述（文本）、优先级 / 序号（小整型）、更新人（字符串）、更新时间（时间戳）。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">需要 AI 在 SDD 中明确回答的设计问题：</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="">优先级自增逻辑：优先级应基于当前数据条数自增，无需前端传递，由后端自动处理。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">排序如何高效更新：批量排序时如何设计接口，避免 N 次单条更新？</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">嵌套对象如何建表：参考已有的&#34;场景欢迎语&#34;接口，入参中存在嵌套子对象（如下方参考结构）。此类子对象应拆分到多张表，还是序列化为 JSON 字段存单张表？</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">isNextDay</span></span><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="">列表回显设计：列表接口需要返回完整的回显数据（供编辑弹窗回填），无需单独提供详情接口。</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="">这份清单做了两件重要的事：</span><strong style="box-sizing: border-box;"><span leaf="">前端侧</span></strong><span leaf="">给 AI 完整的 UI 细节，让 AI 知道组件状态、字段约束、交互逻辑，避免它做&#34;最简实现&#34;。</span><strong style="box-sizing: border-box;"><span leaf="">后端侧</span></strong><span leaf="">把模糊的设计问题提前暴露，让 AI 在写 SDD 之前先回答这些问题——这正是 Harness 思维的体现：让 AI 参照已有实现（如&#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="">SDD 文档产出</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="">一次完整的全栈 SDD 生成，会产出以下文档：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">前端 SDD：</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 style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">proposal.md</span></span><span leaf=""> — 需求提案，描述前端要做什么。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">spec.md</span></span><span leaf=""> — 技术规格，组件设计、接口调用、状态管理。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">tasks.md</span></span><span leaf=""> — 任务拆分，每个 task 对应一个可执行的代码变更。</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="">后端 SDD：</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 style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">proposal.md</span></span><span leaf=""> — 需求提案，描述后端要做什么。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">spec.md</span></span><span leaf=""> — 技术规格，接口设计、数据库设计、分层架构。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">design.md</span></span><span leaf=""> — 详细设计，类图、字段映射、SQL。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">tasks.md</span></span><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="">SDD 指令使用说明</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;"><strong style="box-sizing: border-box;"><span leaf="">入门引导：</span></strong></p><ol style="list-style-type: decimal;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 style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-onboard</span></span><span leaf="">（首次，不熟悉才走，引导完整步骤）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-continue-change</span></span><span leaf="">（提示你下一步要干嘛）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-ff-change</span></span><span leaf="">（快进）。</span></p></li></ol></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="">场景 A：初次开发</span></strong></p><ol style="list-style-type: decimal;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 style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-explore</span></span><span leaf="">（调研，脑暴）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-propose &#34;...&#34;</span></span><span leaf="">（生成设计）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-apply-change</span></span><span leaf="">（写代码）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-verify-change</span></span><span leaf="">（自测，校验代码与 SDD 文档是否对应）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-archive-change</span></span><span leaf="">（收尾，归档）。</span></p></li></ol><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">场景 B：二次开发，修改迭代已有功能</span></strong></p><ol style="list-style-type: decimal;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 style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-explore</span></span><span leaf="">（定位旧代码/旧 spec）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-propose &#34;</span></span><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">修改...&#34;</span></span><span leaf="">（生成变更 Spec）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-apply-change</span></span><span leaf="">（应用修改）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-verify-change</span></span><span leaf="">（验证回归）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-archive-change</span></span><span leaf="">（归档）。</span></p></li></ol><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">场景 C：二次修改，需求变更</span></strong></p><ol style="list-style-type: decimal;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 style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-explore</span></span><span leaf="">（调研，脑暴）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-propose &#34;...&#34;</span></span><span leaf="">（生成设计）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-apply-change</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><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-explore</span></span><span leaf=""> 修改提案；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-explore &#34;需求变更：xxx&#34;</span></span><span leaf="">（二次脑暴）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-propose &#34;根据探索结果修改提案&#34;</span></span><span leaf="">；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-apply-change</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><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-verify-change</span></span><span leaf="">（验证是否有未完成任务）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-archive-change</span></span><span leaf="">（归档）。</span></p></li></ol><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">场景 D：季度大清理</span></strong></p><ol style="list-style-type: decimal;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 style="background-color: rgb(231, 231, 231);box-sizing: border-box;"><span leaf="">openspec-bulk-archive-change --before 2023-12-31</span></span><span leaf="">（批量归档）。</span></p></li></ol></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.2208029197080292" data-s="300,640" data-type="png" data-w="548" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060840" src="https://wechat2rss.xlab.app/img-proxy/?k=3b05a8ed&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvmNEJq6VZfQA6vNCHT6j4Or5SX9tft8Cbw1Veo9HkSIF2pTs0vzia3sibqXFuBk3qqouHGezvj9SXv1xZrGJ4Rxbl01P1W2pibN4%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 textstyle="" style="font-weight: bold;">想（openspec-propose）、做（openspec-apply-change）、收（openspec-archive-change）</span>即可。</span></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="">多 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-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="">SDD 文档生成完毕后，前后端的代码生成工作是相互独立的——前端根据前端 SDD 生成组件和页面，后端根据后端 SDD 生成 Controller/Service/Repository。这天然适合并行执行。</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="">Cursor 中的多 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="">Cursor 支持多个 AI 编程模式并行工作，这是其核心优势之一。</span><strong style="box-sizing: border-box;"><span leaf="">全栈开发场景下</span></strong><strong style="box-sizing: border-box;"><span leaf="">Tab 1 </span></strong><span leaf="">负责前端代码生成，</span><strong style="box-sizing: border-box;"><span leaf="">Tab 2</span></strong><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="">Claude Code 中的 Subagent 能力</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="">Claude Code 内置了 Subagent（子代理）机制，适合命令行场景下的多任务并行。</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="">Subagent 模式</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="">Claude Code 提供了两种多 Agent 协作模式。（下个迭代再实践一下 Team 模式和普通 Subagent 的差别）</span></p></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="15.0000%" width="15.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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="">Subagent</span></strong></p></div></div></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Team 模式</span></strong></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="15.0000%" width="15.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">只向主 Agent 汇报</span></p></div></div></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="box-sizing: border-box;"><span leaf="">队友之间可以直接沟通</span></span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="15.0000%" width="15.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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="">主 Agent 管理一切</span></span></p></div></div></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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="">共享任务列表，自我协调</span></span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="15.0000%" width="15.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="15.0000%" width="15.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">主 Agent 只看到最终结果</span></p></div></td><td data-colwidth="45.0000%" width="45.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">主 Agent 和队友可随时交换信息</span></p></div></td></tr></tbody></table></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="">Subagent 配置与使用</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="">Subagent 的核心配置项：</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="json"><code><span leaf=""><span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;description&#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__attr">&#34;tools&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__punctuation">[</span><span class="code-snippet__string">&#34;Read&#34;</span><span class="code-snippet__punctuation">,</span> <span class="code-snippet__string">&#34;Edit&#34;</span><span class="code-snippet__punctuation">,</span> <span class="code-snippet__string">&#34;Write&#34;</span><span class="code-snippet__punctuation">,</span> <span class="code-snippet__string">&#34;Bash&#34;</span><span class="code-snippet__punctuation">,</span> <span class="code-snippet__string">&#34;Grep&#34;</span><span class="code-snippet__punctuation">],</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;permissionMode&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;bypass&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;model&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;sonnet&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;skills&#34;</span><span class="code-snippet__punctuation">:</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/></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></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="powershell"><code><span leaf="">主 Agent（你在对话的 Claude Code）</span></code><br/><code><span leaf="">  ├── Subagent <span class="code-snippet__number">1</span>：读取前端 SDD，生成前端代码</span></code><br/><code><span leaf="">  │     ├── model: sonnet</span></code><br/><code><span leaf="">  │     ├── tools: Read, Edit, <span class="code-snippet__built_in">Write</span>, Bash</span></code><br/><code><span leaf="">  │     └── 任务：按照 tasks.md 生成前端组件</span></code><br/><code><span leaf="">  │</span></code><br/><code><span leaf="">  ├── Subagent <span class="code-snippet__number">2</span>：读取后端 SDD，生成后端代码</span></code><br/><code><span leaf="">  │     ├── model: sonnet</span></code><br/><code><span leaf="">  │     ├── tools: Read, Edit, <span class="code-snippet__built_in">Write</span>, Bash</span></code><br/><code><span leaf="">  │     └── 任务：按照 tasks.md 生成后端接口</span></code><br/><code><span leaf="">  │</span></code><br/><code><span leaf="">  └── Subagent <span class="code-snippet__number">3</span>：（可选）生成接口 Mock 数据</span></code><br/><code><span leaf="">        ├── model: haiku</span></code><br/><code><span leaf="">        └── 任务：根据后端 SDD spec.md 生成 Mock</span></code><br/></pre></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="">多 Agent 实践建议</span></strong></p></div></div></div></div></div></div></div></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="70.0000%" width="70.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="box-sizing: border-box;"><span leaf="">SDD 先行</span></span></p></div></div></td><td data-colwidth="70.0000%" width="70.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">确保 SDD 文档已经对齐接口契约后，再启动并行生成。</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一个 Agent 一个职责</span></p></div></div></td><td data-colwidth="70.0000%" width="70.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="70.0000%" width="70.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">前端 Agent 依赖的接口定义 = 后端 Agent 实现的接口定义。</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="70.0000%" width="70.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">阶段一：前端先用 Mock 验证通过后；阶段二：可直接用t1前端页面联调后端接口最后：仔细全面回归。</span></p></div></td></tr></tbody></table></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="">前后端联调：Mock 数据与分阶段验证</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><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="">阶段 <span class="code-snippet__number">1</span>：前端 Mock 验证</span></code><br/><code><span leaf="">  前端代码 + Mock 数据 → 本地跑通页面交互，验证 UI 逻辑</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">阶段 <span class="code-snippet__number">2</span>：后端独立验证</span></code><br/><code><span leaf="">  后端代码 → mvn clean <span class="code-snippet__built_in">compile</span> → 构建通过 → 部署到测试环境</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">阶段 <span class="code-snippet__number">3</span>：前后端联调</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></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="">Mock 数据编写要点</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="">Mock 数据质量直接决定前端自测的有效性，有三个关键要求：字段名和字段类型必须与后端 SDD 中定义的完全一致；参考已有接口的真实返回数据作为模板，而不是随意构造；覆盖边界场景（空列表、单条数据、多条数据、各字段极值如空字符串、超长字符串、null 值等）。</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="">后端代码不需要在本地完整启动整个 Java 服务，只需编译通过即可验证大部分代码问题。</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="apache"><code><span leaf=""><span class="code-snippet__comment"># 切换到 Java 8 环境（根据项目实际 JDK 版本调整）</span></span></code><br/><code><span leaf=""><span class="code-snippet__attribute">sdk</span> use java <span class="code-snippet__number">8</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__attribute">cd</span> service-backend</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__attribute">mvn</span> clean compile</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></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="">后端代码提交并部署到测试环境；前端本地开发服务通过代理配置，将 API 请求指向测试后端地址；前端请求携带功能路由标识，确保请求路由到对应的测试环境（而不是其他人的环境）；逐接口验证，重点关注字段映射、状态处理、错误场景。</span></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="">警惕 SDD 陷阱：测试如何介入全栈研发</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="">SDD 不等于需求文档</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 全栈开发中最容易被忽视的问题。SDD 描述的是</span><strong style="box-sizing: border-box;"><span leaf="">&#34;技术上怎么实现&#34;</span></strong><span leaf="">，而不是</span><strong style="box-sizing: border-box;"><span leaf="">&#34;业务上所有的行为&#34;</span></strong><span leaf="">。AI 在模仿参考代码生成新代码时，会自动复刻很多</span><strong style="box-sizing: border-box;"><span leaf="">隐性功能</span></strong><span leaf="">——这些功能在参考代码中存在，AI 认为是&#34;理所当然&#34;的，所以没有写进 SDD 文档，但实际上已经悄悄实现了。</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="">示例 1：变量/表单清除（前端）</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="javascript"><code><span leaf=""><span class="code-snippet__comment">// AI 模仿欢迎语弹窗生成结束语弹窗时，自动复刻了&#34;关闭弹窗时清空表单&#34;的逻辑</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">const</span> <span class="code-snippet__title">handleClose</span> = () =&gt; {</span></code><br/><code><span leaf="">  form.<span class="code-snippet__title">resetFields</span>();   <span class="code-snippet__comment">// ← 隐性功能：关闭时清空表单字段</span></span></code><br/><code><span leaf="">  <span class="code-snippet__title">setContentList</span>([]);   <span class="code-snippet__comment">// ← 隐性功能：清空内容列表状态</span></span></code><br/><code><span leaf="">  <span class="code-snippet__title">setVisible</span>(<span class="code-snippet__literal">false</span>);</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;"><strong style="box-sizing: border-box;"><span leaf="">示例 2：数据格式转换（后端）</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="javascript"><code><span leaf=""><span class="code-snippet__comment">// AI 模仿已有接口，自动添加了业务逻辑判断</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> (extendInfo.<span class="code-snippet__title">getIsPermanent</span>()) {</span></code><br/><code><span leaf="">    extendInfo.<span class="code-snippet__title">setEffectiveDate</span>(<span class="code-snippet__literal">null</span>);   <span class="code-snippet__comment">// ← 隐性：永久有效时自动清除开始日期</span></span></code><br/><code><span leaf="">    extendInfo.<span class="code-snippet__title">setExpirationDate</span>(<span class="code-snippet__literal">null</span>);  <span class="code-snippet__comment">// ← 隐性：永久有效时自动清除结束日期</span></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;"><strong style="box-sizing: border-box;"><span leaf="">示例 3：默认值补齐（后端）</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="javascript"><code><span leaf=""><span class="code-snippet__comment">// AI 自动实现了&#34;优先级自增&#34;逻辑，SDD 文档中未提及</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">if</span> (<span class="code-snippet__title">Objects</span>.<span class="code-snippet__title">isNull</span>(req.<span class="code-snippet__title">getSequence</span>())) {</span></code><br/><code><span leaf="">    req.<span class="code-snippet__title">setSequence</span>(<span class="code-snippet__title">getMaxSequence</span>() + <span class="code-snippet__number">1</span>);  <span class="code-snippet__comment">// ← 隐性：新增时优先级自动递增</span></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></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="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="70.0000%" width="70.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">SDD Review 阶段</span></p></div></div></td><td data-colwidth="70.0000%" width="70.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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="">代码 Review 阶段</span></span></p></div></div></td><td data-colwidth="70.0000%" width="70.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">重点：对照 SDD 文档和实际代码的差异，主动寻找隐性功能。</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="70.0000%" width="70.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">不要只测 SDD 中描述的 happy path，要覆盖边界场景和隐性行为。</span></p></div></td></tr></tbody></table></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="">给测试同学的实操建议：把 SDD 文档当作起点，而不是终点。重点 Review AI 生成的代码，问自己一个问题：&#34;参考功能有哪些隐性行为？这些行为在新功能中是否合适？&#34;</span></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="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;Harness + SDD + 多 Agent&#34;全栈开发方法论，在实际项目中验证的效益如下：</span><strong style="box-sizing: border-box;"><span leaf="">采纳率提升</span></strong><span leaf="">，相比传统前后端分离开发，工作区模式可以很好地把项目需求上下文放到一起，更便于 AI 理解需求，设计编码；尤其通过Cursor的索引能力，进一步提高采纳率以及功能实现的完整性。</span><strong style="box-sizing: border-box;"><span leaf="">耗时降低</span></strong><span leaf="">，SDD 模式下，AI 分析需求后产生两套 SDD 文档，使得前后端开发完全可以并行；以本需求为例，原本前后端2+4人日需求，在这种模式下，算上环境准备、踩坑时间、联调自测时间，压缩至3人日，提效50%+。</span><strong style="box-sizing: border-box;"><span leaf="">调试环节不依赖阻塞</span></strong><span leaf="">，前端功能在全栈开发的视野下，已知数据结构可mock数据自测；后端功能通过远程调试的方式，支持本地打点调试；最终一并上测试环境验证，能够明确知道问题来自于前端还是后端；</span><strong style="box-sizing: border-box;"><span leaf="">AI 全栈学习成本骤降</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="">本文介绍的全栈 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;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="1080" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060839" src="https://wechat2rss.xlab.app/img-proxy/?k=74d1402c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvaiahksE0JicdgadRCrB2aOIL0xqea2Nuh4iaRu4w0adJdXILxfpeTtiaAv8tNwOZW08Un5UJB0A3JgVp5hKRMeRxDVCxCdNy6CnE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></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-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 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=2247544412&amp;idx=1&amp;sn=86d3afe68029fc53c2c03fd4cbe83b8d&amp;scene=21#wechat_redirect" textvalue="通用 AI Agent 驱动网关路由安全审计实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">通用 AI 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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544174&amp;idx=1&amp;sn=b87982ec3a52d256511e71ac0691c490&amp;scene=21#wechat_redirect" textvalue="AI驱动：从运营行为到自动化用例的智能化实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544067&amp;idx=1&amp;sn=6dfd6e3f1948f4a36d30abf1e79ef6ef&amp;scene=21#wechat_redirect" textvalue="生成式召回在得物的落地技术分享与思考" data-itemshowtype="0" linktype="text" data-linktype="2">生成式召回在得物的落地技术分享与思考</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=2247544056&amp;idx=1&amp;sn=18bd6749a8e9b8ff2dde91b066a2526a&amp;scene=21#wechat_redirect" textvalue="立正请站好：一个组件复用 Skill 的工程化实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">立正请站好：一个组件复用 Skill 的工程化实践｜得物技术</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=2247544050&amp;idx=1&amp;sn=ff7efc6c5e38359470b157514a275f89&amp;scene=21#wechat_redirect" textvalue="财务数仓 Claude AI Coding 应用实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">财务数仓 Claude AI Coding 应用实战｜得物技术</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="100060842" src="https://wechat2rss.xlab.app/img-proxy/?k=07806c3e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHus0QnbW1RRhFOVU2ekT7On4oe8mZyUbTkIc1c5J54xMLTPj4y3kp8hNqrDdCxVNcMkyicmurV8r5ubqHF9e6mOSwQQL5LEiaRjQ%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=12db6c1c&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544494%26idx%3D1%26sn%3Da0df4bcc0f9762cfe06b81041f147126">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 06 May 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>通用 AI Agent 驱动网关路由安全审计实践｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544412&amp;idx=1&amp;sn=86d3afe68029fc53c2c03fd4cbe83b8d</link>
      <description>本项目构建网关路由 AI 安全审计系统，采用&#34;通用 Agent + 业务 Skill&#34;分层设计，支持增量日检与存量月检。通过 AI 批量筛查 + 人工深度验证的人机协同模式，落地 Open 网关越权漏洞检测，为大规模 API 安全审计提供可复用的智能化解决方案。</description>
      <content:encoded><![CDATA[<p>原创 <span>炁源</span> <span>2026-04-29 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=110d8493&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHveHp6mkcIF1jRibPYL5ib2bKCKL2QydA8ntnGGPSibkicLSho263jeCusY4poiaibmsktQ63B1DHicialbE0XD0LU3XAqz4c5lyvUITAI%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>本项目构建网关路由 AI 安全审计系统，采用"通用 Agent + 业务 Skill"分层设计，支持增量日检与存量月检。通过 AI 批量筛查 + 人工深度验证的人机协同模式，落地 Open 网关越权漏洞检测，为大规模 API 安全审计提供可复用的智能化解决方案。</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="">    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.架构设计原则：通用 Agent + 业务 Skill 分离</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.Skill 层核心组成</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.MCP 工具集设计</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="">四、技术优化：Token 成本降低 95%+</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="">七、误报分析与改进方向</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="">九、附录</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="">本项目构建了一个网关路由 AI 安全审计系统，采用&#34;通用 Agent + 业务 Skill&#34;分层设计，增量日检/存量月检。落地 Open 网关路由越权漏洞检测流程，通过 AI 批量筛查 + 人工深度验证的人机协同模式，为大规模 API 安全审计提供了可复用的智能化解决方案。充分发挥通用 Agent 能力，业务逻辑在 Skill 中快速迭代。</span></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;"><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: 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="">随着平台 API 规模持续扩张，安全审计面临新的规模化挑战：</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.18796296296296297" 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="100060725" src="https://wechat2rss.xlab.app/img-proxy/?k=21b622e2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsQHasE1kRm91jTN8pFQhl84HB6gSlS9Y4JpAsff5T3ZZmV9jY2kJH9sqDYj8Axm37nR963glDGaLMATKyq7icgIpJGM8NK7mHs%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></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="">覆盖面不足：抽样审计约覆盖 ~20%。</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="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="">当前，以大型语言模型为基座的 AI Agent 在代码语义理解、逻辑推理与自动化执行等维度的能力已超预期成熟，工程落地准确率与稳定性得到大规模验证。这一技术跃迁使全量自动化安全审计从概念验证走向可靠实践。传统人工抽样模式在数万条 API、数百个微服务的规模下已难以为继，而基于 AI Agent 的方案可实现 100% 路由覆盖与分钟级检测响应。本文将围绕这一契机，阐述如何构建贯穿全链路调用链的智能审计体系，解决覆盖面、时效性与规则一致性三大核心挑战。</span></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="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="">架构说明：常规代码负责任务调度与结果存储，所有 AI 分析工作由超级 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7564814814814815" 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="100060729" src="https://wechat2rss.xlab.app/img-proxy/?k=3e8d5430&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsCYibicJk2rpZ03NQicT1VRsjNmVxoM31k7icn953mKCcnG8AmT8l695tAhPM5LA2Z8nON5qJPeBxFEaNDoRfQguicSJ5QFhe63yXc%2F640%3Fwx_fmt%3Djpeg%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-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.5564814814814815" 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="100060728" src="https://wechat2rss.xlab.app/img-proxy/?k=24aabe4a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtMcswiasuVAHrKz3iaymNdb7dGbaTm1CfouX0EGkGW3KC8pibW9fvThs4uD0hB7ic9IN3J6EdXfZiaibnG4Z99m5G7kOumUsDVCFnac%2F640%3Fwx_fmt%3Djpeg%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: 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.18796296296296297" 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="100060727" src="https://wechat2rss.xlab.app/img-proxy/?k=6a5e143b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvNq4cNAPZTHmbZicvowEVEzT7vDPcIW0RW71Dl3js1jrpicJ5V5icialia8VFW2dicicWsNuNicqzWOu0MPElVFLCQqsjt8wic4n9F8jDU%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 + 业务 Skill 分离</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.20185185185185187" 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="100060726" src="https://wechat2rss.xlab.app/img-proxy/?k=56ede7c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuyodGukvQ6SFlHuwGp9gUbyRN9HUM8cpvkTt3gqibIoYD3YuqWtgJ37187Eficv0hNhlLp22gzjFXPmJ0rnFPYou3l6gp8HqGB4%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><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通用 Agent 能力最大化：充分利用 Claude Code/OpenCode 的代码理解、推理分析、上下文管理、会话恢复等标准能力，不重复造轮子。业务逻辑快速迭代：检测规则、分析流程、报告格式等业务逻辑全部沉淀在 Skill 中，可随时调整优化。任务可追溯可复现：通过 --resume 恢复会话现场，任何分析过程都可回溯、可验证。</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="">Skill层核心组成</span></strong></p></div></div></div></div></div></div></div></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="bash"><code><span leaf="">gateway-route-vuln-analyzer/</span></code><br/><code><span leaf="">├── SKILL.md                        <span class="code-snippet__comment"># 核心：漏洞分析主流程</span></span></code><br/><code><span leaf="">│   ├── 检测决策树（Step 1-4）</span></code><br/><code><span leaf="">│   ├── 危害评估规则</span></code><br/><code><span leaf="">│   └── 报告输出模板</span></code><br/><code><span leaf="">├── references/</span></code><br/><code><span leaf="">│   ├── unauthorized_patterns.md    <span class="code-snippet__comment"># 越权漏洞模式库</span></span></code><br/><code><span leaf="">│   ├── logic_flaws.md              <span class="code-snippet__comment"># 逻辑漏洞检测指南</span></span></code><br/><code><span leaf="">│   ├── data_classification.md      <span class="code-snippet__comment"># 数据敏感性分级</span></span></code><br/><code><span leaf="">│   └── report_template.md          <span class="code-snippet__comment"># 标准化报告模板</span></span></code><br/><code><span leaf="">└── scripts/</span></code><br/><code><span leaf="">    └── mcpcli-gateway              <span class="code-snippet__comment"># CLI入口（Token优化）</span></span></code><br/></pre></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="">MCP 工具集设计</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.36018518518518516" 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="100060732" src="https://wechat2rss.xlab.app/img-proxy/?k=ff723031&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtmXoMLHOhn0OV4XhcElGqLVkwhXdsQibwm2TJqJ3icHhH9ibnU3a1MjNGQ4diar1ziafG69ibQFftzzQe5FI4buNIV5Hd65uB888z10%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><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-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-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.20185185185185187" 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="100060733" src="https://wechat2rss.xlab.app/img-proxy/?k=558d59e9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtPja9n0xLw858E7E8tyZg002G9XiaPAduLgaAuoHhjnBPm3taMsic6z273riangDYtbMCtYZtGqhGXP6Iu7SBnsHo7CmhRmO1Ibw%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><strong style="box-sizing: border-box;"><span leaf="">路由配置检查：</span></strong><span leaf="">检查 auth_config.public 和 required_scopes，配置无异常则跳过后续审计；</span><strong style="box-sizing: border-box;"><span leaf="">登录态识别：</span></strong><span leaf="">遍历调用链查找认证节点，标准认证路由直接信任，跳过代码审计；</span><strong style="box-sizing: border-box;"><span leaf="">代码审计</span></strong><strong style="box-sizing: border-box;"><span leaf="">（三维检测）：</span></strong><span leaf="">检查权限注解（@PreAuthorize）、用户 ID 来源（登录态 vs 请求参数）、所有权校验（DB 过滤 vs 代码显式校验）；</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="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="">依据《数据安全法》确立的数据分类分级保护制度及《网络安全法》关于网络运营者数据安全管理义务的相关要求，通过 AI 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.3037037037037037" 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="100060734" src="https://wechat2rss.xlab.app/img-proxy/?k=234f52fa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHu2FWlic3hNibOPuXFDeWw3shFCJGTvqibIe2PVZxrTpkAgbYWufApzbgNsqGWRMYKWiaDh2VAnLtWkO3LUjbAyusPnV6reCwRSHx8%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-top: 10px;margin-bottom: 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.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="100060731" src="https://wechat2rss.xlab.app/img-proxy/?k=9d35a1b3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHskSmFibdtJ98siciaGgiaGP3c1zqozCTBtLRFibl7iaYibu59oJVbPZPA4I1U6icClv0NrtD2zjXVNfoLCib3sChWlTY0O8nw2ic9Da3JmU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">技术优化：Token 成本降低 95%+</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="">通过对多个会话日志的深入分析，识别出 Token 消耗的关键问题：</span></p></div><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: 100%;height: auto;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="100060730" src="https://wechat2rss.xlab.app/img-proxy/?k=91bf2307&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuMKKfu4ZaCT0GqsRAz14RZ3nTGevuIYVdlgDg3yiawb684h1fKVYdAONDmtJcpyoCMCqo64DrnP8AlkRKf8vE9BSr4d0UJpx58%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="">Token 消耗热点：</span></p></div><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: 100%;height: auto;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="100060738" src="https://wechat2rss.xlab.app/img-proxy/?k=e8bbc8b6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs0er9ygMefksJuAWANUJZN9rvU3xHySkGI6JaIorTGeu1XypNAZcQYgf6ticYicSCDnPul3PLu9MLbKicdhib3ia8t69yqKGGgdGXM%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: 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="">MCP → CLI 转换（mcp2cli）：核心优化</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;"><em style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">原理：</span></span></em></strong><span leaf="">将 MCP 工具暴露为 CLI 命令，避免每次会话加载 MCP 上下文。</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="nginx"><code><span leaf=""><span class="code-snippet__comment"># 优化前：MCP调用（需加载完整MCP上下文）</span></span></code><br/><code><span leaf=""><span class="code-snippet__attribute">Claude</span> → MCP Server → 工具执行</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 优化后：CLI调用（直接执行，无额外上下文）</span></span></code><br/><code><span leaf="">Claude → Bash → mcp2cli → 工具执行</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=""><span textstyle="" style="font-weight: normal;">效果：</span></span></strong><span leaf="">节省 61% Token 消耗。</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;"><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;">无参数调用返回完整文件（最大 1.47MB ≈ 500K tokens）。</span></span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">解决方案：</span></span></strong><span leaf="">为 gitlab_file 添加精准参数，实现按需提取。</span></p></div><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: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3055555555555556" 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="100060736" src="https://wechat2rss.xlab.app/img-proxy/?k=9c4981c7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHv6jDYRjlutIwXLAKPfvD5qplbhyDqMKeQdNWPBUzGlicFvRFRguYxLtTDWqp96e01JlhTTmg2QDonc5AiciaK9Q3jibN0icToiajBMQ%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 textstyle="" style="font-weight: normal;">效果：</span></span></strong><span leaf="">v2 vs v1 再节省 88%。</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="">Early-Exit模式</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 textstyle="" style="font-weight: normal;">原理：</span></span></strong><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="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.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="100060735" src="https://wechat2rss.xlab.app/img-proxy/?k=8af2f6db&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvFpdiaReJRGtaZAPLucrVpqP3oIYSdZmJwWaXpXRVIhwMz8EU7fISp2NB5BIcRbFsYvDLtSYCf5j9SicEK5akoCOGHCZVcEvKgQ%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 textstyle="" style="font-weight: normal;">效果：</span></span></strong><span leaf="">标准认证场景节省 50-70%。</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友好返回格式 YAML</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 textstyle="" style="font-weight: normal;">原理：</span></span></strong><span leaf="">YAML 天然比 JSON 的 Token 量更少，对 AI 阅读更友好，降低模型解析成本。</span></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;"><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="">在路由安全审计场景下，模型选型需围绕准确率（Precision）与召回率（Recall）两大核心指标建立决策矩阵：</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.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="100060737" src="https://wechat2rss.xlab.app/img-proxy/?k=88b9bbee&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHubJclEWjdvXs2GIbSH0NicjiaPQWcicvTZIpVNcDSMvmuhFG6MsWyHdMgmgicMQEuTmibRcu5NcvxwrWmExnH69ibFZLQuUHM4ickYQM%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="">最终选型：满足 P0/P1/P2 三重约束的最优模型。选型理由：在召回率 100% 的候选模型中，qwen3.5-plus 以更低的单位成本实现可接受的准确率，是批量场景下的最优解。</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="">测试集局限性：上述结论基于独立手工标注测试集（100 + 样本），与生产告警数据相互隔离，仅可作为基线参考依据。模型迭代风险：大模型迭代更新速度极快，市场中或存在性能更优、成本更低的全新模型，暂未纳入本次评测范围。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI不是替代人工，而是放大安全工程师的能力：AI处理重复性筛查，人工聚焦深度分析和复杂判断。</span></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;"><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="">针对 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="">严格区分越权读取与越权操作两类风险行为，引入利益流向分析维度，规避一刀切式风险评级，评估更贴合业务实际风险。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">Token 成本系统化优化：</span></strong><span leaf="">通过 MCP→CLI 格式转换 + 代码精准按需提取 + Early-Exit 提前终止 三层优化方案，整体实现 Token 成本降幅 95%+。</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="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="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-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.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="100060739" src="https://wechat2rss.xlab.app/img-proxy/?k=5155ffd3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvvuUCRJ8sfbvwsobiaPbaJ3Py60Ln9KXhHKUDouPLBUycPpnmicBsSNqPlsjV4DqsGF6icUrpFJfytINte17CHeAUB1ByD9z3TOc%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: 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="">强化信任边界追踪（解决 35% 误报）</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 textstyle="" style="font-weight: normal;">问题：</span></span></strong><span leaf="">AI 发现中间层没校验就停止，直接认为存在漏洞，未追踪到最终数据操作层。</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">方案：</span></span></strong><span leaf="">在 Skill 中增加指导规则。</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=""><code><span leaf="">发现校验就停止，发现缺失就继续</span></code><br/><code><span leaf="">必须追踪到信任边界，中间层不能下结论</span></code><br/></pre></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="">上下游参数一致性校验（解决 25% 误报）</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 textstyle="" style="font-weight: normal;">问题：</span></span></strong><span leaf="">下游方法参数有越权可能，但上游调用时未传入资源ID。</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">方案：</span></span></strong><span leaf="">分析Controller层Request对象，确认是否包含资源ID字段。如果上游Request中无资源ID字段，判定为&#34;仅操作当前用户数据&#34;<span textstyle="" style="font-weight: normal;">。</span></span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">实施：</span></span></strong><span leaf="">在Skill中增加规则：&#34;优先检查Controller层入参，无资源ID则跳过越权分析&#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="">Dubbo 配置信息补充（解决 10% 误报）</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 textstyle="" style="font-weight: normal;">问题：</span></span></strong><span leaf="">内部网关转 Dubbo 传参信息 AI 无法获取，导致认证判断错误。</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">方案：</span></span></strong><span leaf="">引入 Open 网关 Dubbo 配置信息（通过内部管理平台获取），新增 MCP 工具 get_dubbo_config，获取路由的 Dubbo 调用配置。</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">实施</span>：</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="bash"><code><span leaf=""><span class="code-snippet__comment"># 新增工具</span></span></code><br/><code><span leaf=""><span class="code-snippet__string">&#34;get_dubbo_config&#34;</span>: {</span></code><br/><code><span leaf="">    <span class="code-snippet__string">&#34;description&#34;</span>: <span class="code-snippet__string">&#34;获取路由的Dubbo调用配置和参数映射&#34;</span>,</span></code><br/><code><span leaf="">    <span class="code-snippet__string">&#34;inputSchema&#34;</span>: {<span class="code-snippet__string">&#34;route_path&#34;</span>: <span class="code-snippet__string">&#34;string&#34;</span>, <span class="code-snippet__string">&#34;service_name&#34;</span>: <span class="code-snippet__string">&#34;string&#34;</span>}</span></code><br/><code><span leaf="">}</span></code><br/></pre></p><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><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: 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="">代码内的响应体价值预判优化（解决 10% 误报）</span></strong></p></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 textstyle="" style="font-weight: normal;">问题：</span></span></strong><span leaf="">AI 将无敏感信息的读操作误判为越权。</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">方案：</span></span></strong><span leaf="">细化响应体敏感性判断规则。</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 []"><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=""> 纯状态码返回（code/msg/status）</span></code><br/><code><span leaf=""> 通用配置信息（活动名称、时间、状态）</span></code><br/><code><span leaf=""> 流程节点信息（taskId、nodeName）</span></code><br/></pre></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="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: 100%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.1981481" 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="100060763" src="https://wechat2rss.xlab.app/img-proxy/?k=5106dbeb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuAfnYJsJIQic8EJcR7MPQPdJtpn44oxjTibupMOjhvgib3smAOtlhOPqLD5Zfb64Lu4tNXwiaK4tNOR4OfElERPKU7ZOyIBELOo28%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><span leaf=""><span textstyle="" style="font-weight: bold;">八</span></span></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);font-family: PingFangSC-light;font-size: 17px;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></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 驱动审计是一个面向 API 安全场景的智能化交付范式，将规模化安全审计升级为 AI 自动化检测 + 精细化危害评估 + 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><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 在代码审计场景的有效性。单条成本 ¥0.23，某大型业务集群全量扫描一轮不到 1 万元，成本完全可控。人机协同模式有效：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="">MCP→CLI 转换、精准代码提取、Early-Exit 优化，可复用于其他 AI 安全审计场景。</span></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="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 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 []"><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=""><br/></span></code><br/><code><span leaf="">#<span class="code-snippet__comment">## 1. 路由信息</span></span></code><br/><code><span leaf=""> 路由ID: [必填：从 analyze_route 返回的 route_id]</span></code><br/><code><span leaf=""> 路径: [必填：分析的路由路径]</span></code><br/><code><span leaf=""> 目标服务: [必填：目标服务名称]</span></code><br/><code><span leaf=""> 描述: [必填：路由描述，如无则填&#34;无&#34;]</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></code><br/><code><span leaf=""> 业务场景: [必填：业务场景描述]</span></code><br/><code><span leaf=""> 调用方: [必填：H5前端/APP客户端/小程序/其他服务]</span></code><br/><code><span leaf=""> 数据敏感性评估:</span></code><br/><code><span leaf="">  - 涉及数据类型: [必填：PII/金融数据/订单信息/配置信息等]</span></code><br/><code><span leaf="">  - 敏感等级: [必填：critical/high/medium/low]</span></code><br/><code><span leaf="">  - 影响用户范围: [必填：全平台用户/特定用户群/内部用户等]</span></code><br/><code></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></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">示例格式：</span></code><br/><code><span leaf="">[网关入口] (总耗时)</span></code><br/><code><span leaf="">  └─ [认证服务]: [认证接口] (耗时) [认证节点]</span></code><br/><code><span leaf="">  └─ [业务服务A]: [业务接口] (耗时) [漏洞点]</span></code><br/><code><span leaf="">     └─ [业务服务B]: [数据库查询] (耗时)</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">关键中间件操作（只写与漏洞分析直接相关的部分）:</span></code><br/><code><span leaf=""> SQL: [可选：列出执行的 SQL 操作类型，如 SELECT/INSERT/UPDATE/DELETE]</span></code><br/><code><span leaf=""> Redis: [可选：如有 Redis 操作则填写]</span></code><br/><code><span leaf=""> MQ: [可选：如有 MQ 操作则填写]</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">#<span class="code-snippet__comment">## 4. 漏洞详情</span></span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">⚠️ 说明：</span></code><br/><code><span leaf="">- 如果发现漏洞，必须填写此章节</span></code><br/><code><span leaf="">- 如果未发现漏洞，填写&#34;未发现漏洞&#34;并跳过后续小节</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">#<span class="code-snippet__comment">### 漏洞 1: [必填：漏洞标题]</span></span></code><br/><code><span leaf="">- 严重等级: [必填：critical/high/medium/low]</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/><code><span leaf="">  - 仓库链接: [必填：GitLab 代码链接]</span></code><br/><code><span leaf="">  - Trace ID: [必填：对应的 trace_id]</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/><code><span leaf="">  1. [必填：直接危害]</span></code><br/><code><span leaf="">  2. [必填：间接危害]</span></code><br/><code><span leaf="">  3. 潜在连锁攻击: [必填：可能的连锁攻击场景]</span></code><br/><code><span leaf="">  4. 合规风险: [必填：法律合规风险]</span></code><br/><code><span leaf=""> 修复建议:</span></code><br/><code><span leaf="">  1. [必填：具体修复方案]</span></code><br/><code><span leaf="">  2. [必填：具体修复方案]</span></code><br/><code><span leaf="">  3. [可选：额外加固建议]</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">#<span class="code-snippet__comment">## 5. 分析置信度</span></span></code><br/><code><span leaf="">- 置信度: [必填：高/中/低]</span></code><br/><code><span leaf="">- 依据: [必填：说明置信度的判断依据]</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">#<span class="code-snippet__comment">## 6. 局限性</span></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=""><br/></span></code><br/><code><span leaf="">#<span class="code-snippet__comment">## 7. 二方包依赖</span></span></code><br/><code><span leaf="">- 涉及的二方包: [必填：group_id:artifact_id:version - 用途说明，如无则填&#34;无&#34;]</span></code><br/><code><span leaf="">- 源码获取: [必填：已获取/未获取/不需要]</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">#<span class="code-snippet__comment">## 8. 涉及的微服务</span></span></code><br/><code><span leaf="">⚠️ 重要：必须包含 commit_id 和 project_path</span></code><br/><code><span leaf=""><br/></span></code><br/><code><span leaf="">- [service_name1] (commit: [commit_id], project: [project_path])</span></code><br/><code><span leaf="">- [service_name2] (commit: [commit_id], project: [project_path])</span></code><br/></pre></p></div></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=2247544174&amp;idx=1&amp;sn=b87982ec3a52d256511e71ac0691c490&amp;scene=21#wechat_redirect" textvalue="AI驱动：从运营行为到自动化用例的智能化实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI驱动：从运营行为到自动化用例的智能化实践｜得物技术</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=2247544067&amp;idx=1&amp;sn=6dfd6e3f1948f4a36d30abf1e79ef6ef&amp;scene=21#wechat_redirect" textvalue="生成式召回在得物的落地技术分享与思考" data-itemshowtype="0" linktype="text" data-linktype="2">生成式召回在得物的落地技术分享与思考</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=2247544056&amp;idx=1&amp;sn=18bd6749a8e9b8ff2dde91b066a2526a&amp;scene=21#wechat_redirect" textvalue="立正请站好：一个组件复用 Skill 的工程化实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">立正请站好：一个组件复用 Skill 的工程化实践｜得物技术</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=2247544050&amp;idx=1&amp;sn=ff7efc6c5e38359470b157514a275f89&amp;scene=21#wechat_redirect" textvalue="财务数仓 Claude AI Coding 应用实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">财务数仓 Claude AI Coding 应用实战｜得物技术</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=2247544017&amp;idx=1&amp;sn=eaceee1d1f4f672b2dd630a1b235eda3&amp;scene=21#wechat_redirect" textvalue="日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术</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="100060741" src="https://wechat2rss.xlab.app/img-proxy/?k=6a22ad03&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHt9LPLaWW1MNDX2O68u5aKxN4iaFsbUyr75zr8Sff5HQhzEy2SxZxA1zn60mUvNIUuhpnibVVib77OWvTEMib6tXPXrVezDXXLT6Ag%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=03d1858f&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544412%26idx%3D1%26sn%3D86d3afe68029fc53c2c03fd4cbe83b8d">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 29 Apr 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>AI驱动：从运营行为到自动化用例的智能化实践｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544174&amp;idx=1&amp;sn=b87982ec3a52d256511e71ac0691c490</link>
      <description>致力于构建一套自动化 + 智能化的 E2E 测试方案，该方案旨在支撑快速迭代开发模式，有效应对用例覆盖与重构验证等场景，从而在现有资源条件下，持续为业务快速迭代和技术架构升级提供可靠的质量保障。</description>
      <content:encoded><![CDATA[<p>原创 <span>卓翎</span> <span>2026-04-22 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=72a63c11&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsXLeKS1PmBdiaqTrOJFH4q0xhwz7syTibh6ByhlgCxs0u1Dmc7mj641XiaToRxZ4uPrIMTibxeP25GCqshOs7zMwn1hdWV7fXUQgc%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>致力于构建一套自动化 + 智能化的 E2E 测试方案，该方案旨在支撑快速迭代开发模式，有效应对用例覆盖与重构验证等场景，从而在现有资源条件下，持续为业务快速迭代和技术架构升级提供可靠的质量保障。</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.传统 E2E（DOM）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.AI E2E</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="">四、AI 工具选型</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.阶段三：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="">六、技术亮点</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.基于真实环境中的运营行为生成测试用例</span><span leaf=""><br/></span><span leaf="">    2.基于 Midscene + Qwen2.5-VL-72B 执行用例</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.AI 驱动的精准 UI 交互测试</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: 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;"><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="">随着交易业务的快速增长，对质量保障工作提出了更高标准与全新要求。为提升研发体验和架构升级，大量后台页面经历从 Vue -&gt; React -&gt; 全栈的迁移过程。业务演进过程中，后台能力持续迭代与优化；团队在交付新能力的同时，同步保障存量链路的稳定与可预期行为。为进一步完善测试用例覆盖范围，高效支撑回归测试与重构验证工作，需通过技术手段升级质量保障模式，为业务与架构迭代提供更充分的质量支撑。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">E2E 测试：</span></strong><span leaf="">即端到端测试，是一种从用户视角出发，模拟真实操作验证应用完整业务流程的自动化测试方法。</span><strong style="box-sizing: border-box;"><span leaf="">自动化生成用例：</span></strong><span leaf="">用线上内部运营操作日志自动生成 E2E 测试用例，快速覆盖核心流程，解决用例缺失问题。</span><strong style="box-sizing: border-box;"><span leaf="">智能元素定位：</span></strong><span leaf="">自动识别重构等场景 UI 变化并调整定位策略，实现维护流程的自动化。</span><strong style="box-sizing: border-box;"><span leaf="">平台化管理：</span></strong><span leaf="">通过数据看板管理用例和执行结果，让 E2E 测试可追踪、可优化，提升测试效率。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于以上分析，我们致力于构建一套自动化 + 智能化的 E2E 测试方案，该方案旨在支撑快速迭代开发模式，有效应对用例覆盖与重构验证等场景，从而在现有资源条件下，持续为业务快速迭代和技术架构升级提供可靠的质量保障。</span></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-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="">提供基于线上真实运营行为的自动化 E2E 测试能力，能够实际发现页面线上/重构等场景的体验问题。在页面重构等迭代任务中，通过优化回归测试流程与资源分配，有效进一步提升测试支持效率。测试的页面代码覆盖率≥X%；无代码覆盖率场景步骤执行成功率≥X%。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">页面代码覆盖率：页面用例在测试过程中 运行的代码行数 / 该页面关联的所有代码行数 * 100%。步骤执行成功率：页面用例在测试过程中 执行成功的步骤数 / 用例总步骤数 * 100%。</span></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="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="">传统 E2E（DOM）</span></strong></p></div></div></div></div></div></div></div></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="10.0000%" width="10.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(235, 239, 239);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;box-sizing: border-box;"><p style="line-height: 0;color:rgba(0,0,0,0);width:0;"><svg viewBox="0 0 1 1" style="vertical-align:top;"><text x="-10" y="-10"><tspan leaf="">_</tspan></text></svg></p></div></div></td><td data-colwidth="15.0000%" width="15.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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 style="box-sizing: border-box;"><span leaf="">名词解释</span></span></strong></p></div></div></td><td data-colwidth="75.0000%" width="75.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="10.0000%" width="10.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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="">传统 E2E</span></strong></p></div></div></td><td data-colwidth="15.0000%" width="15.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;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="">基于 DOM 的测试方案，主要通过操作和验证浏览器中的页面元素，来模拟用户行为的测试方案。</span></p></div></div></td><td data-colwidth="75.0000%" width="75.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: left;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">定位方式：</span><strong style="box-sizing: border-box;"><span leaf="">依赖 XPath/CSS 选择器<span textstyle="" style="font-weight: normal;">。</span></span></strong></p><p style="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><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">维护成本：</span><strong style="box-sizing: border-box;"><span leaf="">高</span></strong><span leaf="">（DOM 变化需手动更新用例）。</span></p></div></div></td></tr></tbody></table></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 E2E</span></strong></p></div></div></div></div></div></div></div></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="10.0000%" width="10.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;box-sizing: border-box;"><p style="line-height: 0;color:rgba(0,0,0,0);width:0;"><svg viewBox="0 0 1 1" style="vertical-align:top;"><text x="-10" y="-10"><tspan leaf="">_</tspan></text></svg></p></div></div></td><td data-colwidth="15.0000%" width="15.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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 style="box-sizing: border-box;"><span leaf="">名词解释</span></span></strong></p></div></div></td><td data-colwidth="75.0000%" width="75.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="10.0000%" width="10.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI E2E</span></strong></p></div></div></td><td data-colwidth="15.0000%" width="15.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;box-sizing: border-box;"><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="">指利用人工智能技术，增强传统 E2E 测试的智能化、自适应性和效率的测试方案。</span></span></p></div></div></td><td data-colwidth="75.0000%" width="75.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: left;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="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><p style="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><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">维护成本：</span><strong style="box-sizing: border-box;"><span leaf="">低</span></strong><span leaf="">（AI 自动适应 UI 变化）。</span></p></div></div></td></tr></tbody></table></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="">传统 E2E 优势：</span></strong><span leaf="">贴近真实用户操作：实际触发页面渲染和事件。跨页面流程验证：适合测试多步骤业务场景（如登录→下单）。</span><strong style="box-sizing: border-box;"><span leaf="">传统 E2E 劣势：</span></strong><span leaf="">脆弱性：DOM 结构变化易导致用例失败（需频繁维护定位表达式）。执行速度慢：依赖浏览器渲染和网络请求。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">AI E2E 优势：</span></strong><span leaf="">降低维护成本：减少因 UI 微调导致的用例失败。</span><span style="box-sizing: border-box;"><span leaf="">提升覆盖率：AI 可探索非预期路径（如异常输入）。</span><strong style="box-sizing: border-box;"><span leaf="">AI E2E 劣势：</span></strong><span leaf="">黑盒性：AI 决策过程不透明，调试困难。</span><span style="box-sizing: border-box;"><span leaf="">高成本：需积累足够数据优化模型，复杂视觉处理需要更高性能。</span></span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于上述对比分析，我们选用 AI 驱动的 E2E 测试方案，能够在支持重构场景的同时，显著提升用例生成的自动化水平，从而形成高效可持续的自动化测试解决方案。</span></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="">AI 工具选型</span></strong></p></div></div></div></div></div></div></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;box-sizing: border-box;"><p style="line-height: 0;color:rgba(0,0,0,0);width:0;"><svg viewBox="0 0 1 1" style="vertical-align:top;"><text x="-10" y="-10"><tspan leaf="">_</tspan></text></svg></p></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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="">Midscene</span></strong></p></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="text-align: left;padding: 0px 5px;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 style="box-sizing: border-box;"><span leaf="">原生 JavaScript + WebExtensions API；</span></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="box-sizing: border-box;"><span leaf="">开源 AI 驱动 UI 自动化工具；</span></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="box-sizing: border-box;"><span leaf="">支持 Playwright、Puppeteer 定制行为逻辑；</span></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="box-sizing: border-box;"><span leaf="">支持 Dom 分析和视觉分析，如 Qwen-vl、Chain-vl。</span></span></p></li></ul></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">browser-use</span></strong></p></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="padding: 0px 5px;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="">Python + 大语言模型（LLM）+ 浏览器驱动；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于 Playwright；</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="">同时支持 DOM 分析和视觉分析。</span></p></li></ul></p></div></td></tr></tbody></table></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="">Midscene优点：</span></strong><span leaf="">基于 JS 技术栈，前端友好，开发成本较低；支持 Playwright、Puppeteer 定制行为逻辑；公开渠道反馈与迭代节奏相对清晰；支持 DOM 与视觉多模态分析。如上优点对工程化落地更友好。</span><strong style="box-sizing: border-box;"><span leaf="">Midscene缺点：</span></strong><span leaf="">调用视觉/大模型时存在 Token 消耗与成本。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">browser-use优点：</span></strong><span leaf="">支持 Playwright 定制行为逻辑；支持 DOM 与视觉分析，能力面较全。</span><strong style="box-sizing: border-box;"><span leaf="">browser-use缺点：</span></strong><span leaf="">同样存在 Token 消耗与成本；基于 Python 技术栈，有开发语言熟悉成本。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">综合评估后采用 Midscene，主要考量：</span><strong style="box-sizing: border-box;"><span leaf="">与现有技术栈匹配：</span></strong><span leaf="">以 JavaScript 为主，便于与前端工程、现有工具链协同，降低接入与维护成本。</span><strong style="box-sizing: border-box;"><span leaf="">能力与扩展方式符合需求：</span></strong><span leaf="">支持 DOM 与视觉等多路径信息输入，并可在需要时用 Puppeteer / Playwright 补充确定性、可编排的自动化逻辑，覆盖模型不稳定或不适用的环节。</span><strong style="box-sizing: border-box;"><span leaf="">工程化与定制空间：</span></strong><span leaf="">定制与扩展路径清晰，便于按业务拆解控制流、做兜底与回归，贴合当前团队的交付方式。</span></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-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-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.2731481481481481" 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="100060520" src="https://wechat2rss.xlab.app/img-proxy/?k=e7df0aab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsTF5WDbur1sbsfklWuKLBfCbnJgFdch3xKRhgZL2fnic1mkXHcicRXgEdribt9Keiae0jqTJ2fEzNFPwibVAgVxM4YtOlgHzBBWJ90%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="">Midscene 测试过程详情：</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.2" 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="100060522" src="https://wechat2rss.xlab.app/img-proxy/?k=5932635d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv5Nh6CZSoic7vxltECaibbHNzgDL17iaqwGia5SYm71YdS18ErwuibrX8ltnxLGSjSiarau1XlEe8wpZEO7X0YiaN0yNXLfdtg8VbV4w%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-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.6240740740740741" 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="100060521" src="https://wechat2rss.xlab.app/img-proxy/?k=90679332&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvM2fiaZ2CPTvqbke1fqb2UYRJx0RS9GicbUswj2mUn2QGOenaRycwN9UBnUy7Yg0oQUbDsYxISdbh30CeOic6MGlEc7nKicYicz4X0%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="">这是整个流程的源头与起点，目标是实现测试用例的“自动化生产”。</span></p></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><span leaf="">核心输入</span></span></strong></p></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="text-align: justify;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">来自应用性能监控系统的会话级记录，反映内部运营在真实环境中的访问路径与关键交互脉络，是沉淀回归场景与边界用例的重要来源。</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td rowspan="4" data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;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 style="box-sizing: border-box;"><span leaf="">数据接入</span></span></strong><span style="box-sizing: border-box;"><span leaf="">：系统接收一个包含运营会话的链接。通过接口从监控系统拉取该会话的详细行为日志数据。</span></span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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="">引擎解析原始日志，过滤无效操作（如快速连续点击、心跳事件），识别出有业务意义的原子操作序列。例如，将一次 “订单创建” 流程解析为：“访问某列表页”→“点击‘新建’按钮”→“在表单 A 输入‘X’”→“在表单 B 选择‘Y’”→“点击‘提交’按钮”。</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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="">将解析后的行为序列，转换为 Midscene 可识别的结构化测试脚本。每个步骤包含：操作类型（</span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">click</span></span><span leaf="">、</span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">input</span></span><span leaf="">、</span><span style="background-color: rgb(235, 239, 239);box-sizing: border-box;"><span leaf="">select</span></span><span leaf=""> 等）、元素描述（如 “提交按钮”、“商品名称输入框”）、操作值，以及可选的上下文断言。</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">为生成的脚本分配唯一用例ID，并与源页面、业务域、来源会话等信息一同存入用例数据库，状态标记为“已生成”。</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;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></td></tr></tbody></table></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></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td rowspan="2" data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="text-align: justify;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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><div style="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></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">事件驱动：与 CI/CD 流水线集成，在代码合并至特定分支，或生产环境发布后自动触发相关页面的用例集。</span></p></li></ul></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;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="box-sizing: border-box;"><span leaf="">触发后，系统将对应用例的状态更新为 “待执行”，并将其 push 到任务执行队列中。采用队列机制实现了任务的异步化与削峰填谷，支持高并发执行调度。</span></span></p></div></div></td></tr></tbody></table></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 在浏览器中 “复现” 运营操作。</span></p></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td rowspan="2" data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="text-align: justify;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">常驻的后台执行服务监听任务队列，获取到一个待执行用例。</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;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="">服务启动一个无头浏览器实例，并注入 Midscene 智能驱动及 Qwen-VL 视觉模型。同时，代码覆盖率插桩工具被加载，用于后续数据采集。</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td rowspan="5" data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><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;"><strong style="box-sizing: border-box;"><span leaf="">智能回放</span></strong></p></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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="">Midscene 控制浏览器导航至目标页面，并将当前屏幕截图与 DOM 状态发送给 Qwen-VL 模型进行分析。</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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="">AI 模型结合“当前屏幕画面”和“步骤指令”（如“点击登录按钮”），理解运营意图，在屏幕上定位目标元素，并执行对应的原子操作（点击、输入、滚动等）。这个过程模拟了人类“看到-理解-操作”的决策链。</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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="">内置智能等待、多轮定位、异常场景判断（如弹窗、网络错误）等策略。例如，若首次未找到元素，AI 会尝试滚动页面后重新查找，或在合理时间内等待元素出现。</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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></td></tr><tr style="box-sizing: border-box;"><td rowspan="3" data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><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;"><strong style="box-sizing: border-box;"><span leaf="">结果收集</span></strong></p></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></p></div></td></tr></tbody></table></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></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td rowspan="2" data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(255, 255, 255);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="text-align: justify;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">页面维度看板：</span></strong><span leaf="">展示所有被测试页面的核心指标聚合视图，包括 PV/UV、用例数、历史成功率趋势、代码覆盖率等，用于快速识别 “高风险页面”（UV 高但成功率低）和 “覆盖薄弱页面”（UV 高但覆盖率低），指导测试资源倾斜。</span></p></div></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="padding: 0px 5px;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></td></tr><tr style="box-sizing: border-box;"><td rowspan="2" data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><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;"><strong style="box-sizing: border-box;"><span leaf="">深度复盘</span></strong></p></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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="">点击任一用例，可展开查看其完整的步骤回放。任何失败的步骤都会高亮显示，并附有错误堆栈、AI 操作时的屏幕截图，以及该步骤覆盖的代码块。这使 “黑盒” 失败变得 “白盒化”，极大简化了调试和问题定位过程。</span></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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></td></tr><tr style="box-sizing: border-box;"><td rowspan="2" data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><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;"><strong style="box-sizing: border-box;"><span leaf="">资产优化</span></strong></p></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr></tbody></table></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;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: 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="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ul style="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></ul></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="padding: 0px 5px;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="">降低维护成本：减少因 UI 微调导致的用例失败。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">提升覆盖率：AI 可探索非预期路径（如异常输入）。</span></p></li></ul></p></div></td></tr></tbody></table></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="">基于 Midscene + Qwen2.5-VL-72B 执行用例</span></strong></p></div></div></div></div></div></div></div></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ul style="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></ul></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="padding: 0px 5px;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><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></div></td></tr></tbody></table></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 驱动的精准 UI 交互测试</span></strong></p></div></div></div></div></div></div></div></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="padding: 0px 5px;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><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">专注解决 “点击 / 输入 / 选择” 等 UI 交互问题。</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></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="padding: 0px 5px;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><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></div></td></tr></tbody></table></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="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></div></div></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="padding: 0px 5px;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><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">动态合并覆盖率数据，形成页面指标。</span></p></li></ul></p></div></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="20.0000%" width="20.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;background-color: rgb(247, 247, 247);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-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></td><td data-colwidth="80.0000%" width="80.0000%" style="border-width: 1px;border-color: rgb(218, 218, 218);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><p style="padding: 0px 5px;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><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">识别无效用例（可执行但覆盖代码占比低）。</span></p></li></ul></p></div></td></tr></tbody></table></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-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="">我们在页面上实现了以下可运营能力，将 E2E 测试从黑盒脚本转变为可管理、可追踪、可复盘的平台系统。</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;"><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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5107376283846872" data-s="300,640" data-type="png" data-w="1071" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060518" src="https://wechat2rss.xlab.app/img-proxy/?k=30035186&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvnof3CKFq9STia02pKLm5TlWkHB9n3LMSTJcMv8dwzWCvY51YtSsPFfRSQZDpRXiau7rdGks5RBmYMMAjicFgU0Ac9Hm75kUibwp4%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="">展示内容：按业务域 / 系统 / 负责人筛选、页面级 PV/UV、用例数量、步骤执行成功率、代码覆盖率等指标。系统能力：页面维度汇总视图，将访问热度（PV/UV）与自动化质量指标（成功率 / 覆盖率）结合，指导用例优先级（高 PV 页面优先铺用例、优先治理）。</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="">用例列表（抽屉）：</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5666666666666667" data-s="300,640" data-type="png" data-w="1050" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060519" src="https://wechat2rss.xlab.app/img-proxy/?k=15d5e93e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv1VwjqEMrDxKTedxWaZ52Mr7ia5Z33R8mIuNiaOTbFgqEURxsy9gGRoanUMsSIt8T1Wm7E4IydibkjUZOk5KW2Oh7tYeLo8zzwEI%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="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-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.33563672260612043" data-s="300,640" data-type="png" data-w="1013" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060524" src="https://wechat2rss.xlab.app/img-proxy/?k=392ca036&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuQgpDELnL5VYbIIibFd4CEelFKz8BKpQkS0g2n5qkCkYzzgT1CicIJmL9UEBklIDgQSHITElzEaVAH4uAvU9AD3liaCscgkaLRbU%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="">展示内容：按步骤展示 CLICK 结果、详细错误堆栈/描述、页面截图缩略图、单步覆盖率、页面地址与 监控系统链接。系统能力：将每一步的线上行为与 E2E 执行对照落库，让失败从黑盒变为可复盘的证据链。</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="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.6890184645286687" data-s="300,640" data-type="png" data-w="1029" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060525" src="https://wechat2rss.xlab.app/img-proxy/?k=6410c14e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuNJVtxUspSQ8c8hg1CqIicwN0onJGkfNvibbgdb3tDB7lef4iciaFuic0fPicpv9Aicp93pcmPhhn2JdibibQOJfljzs8rEdibNPPS6gBH8%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="">展示内容：点击序号、点击描述（如点击某某预览弹窗/眼睛按钮）、点击行为数量等。系统能力：系统会为 Click Scope 生成更可读的描述，便于非开发同学理解与复盘，也是后续策略库/稳定性治理的输入。</span></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;"><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;"><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="">面对交易业务快速增长、技术栈频繁迁移、测试资源紧张的多重挑战，我们成功实现了基于真实运营行为的 AI 驱动E2E 测试方案。通过 Midscene 的视觉 AI 能力结合 Puppeteer 的精准控制，实现了用例自动化生成、智能交互执行和质量数据闭环。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">之后我们将持续优化 AI 模型的准确率和稳定性，逐步实现从「用例执行」到「质量预测」的升级。同时推动平台向标准化、智能化方向发展，让质量保障真正成为业务创新的加速器而非瓶颈。</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=2247544067&amp;idx=1&amp;sn=6dfd6e3f1948f4a36d30abf1e79ef6ef&amp;scene=21#wechat_redirect" textvalue="生成式召回在得物的落地技术分享与思考" data-itemshowtype="0" linktype="text" data-linktype="2">生成式召回在得物的落地技术分享与思考</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=2247544056&amp;idx=1&amp;sn=18bd6749a8e9b8ff2dde91b066a2526a&amp;scene=21#wechat_redirect" textvalue="立正请站好：一个组件复用 Skill 的工程化实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">立正请站好：一个组件复用 Skill 的工程化实践｜得物技术</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=2247544050&amp;idx=1&amp;sn=ff7efc6c5e38359470b157514a275f89&amp;scene=21#wechat_redirect" textvalue="财务数仓 Claude AI Coding 应用实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">财务数仓 Claude AI Coding 应用实战｜得物技术</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=2247544017&amp;idx=1&amp;sn=eaceee1d1f4f672b2dd630a1b235eda3&amp;scene=21#wechat_redirect" textvalue="日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术</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=2247544006&amp;idx=1&amp;sn=77bc608620d81c44a996464dae407857&amp;scene=21#wechat_redirect" textvalue="Redis 自动化运维最佳实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Redis 自动化运维最佳实践｜得物技术</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="100060523" src="https://wechat2rss.xlab.app/img-proxy/?k=ea9d2268&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtPbS69rpdWXuian4egg2hcx3VBOHTCMtUnxxlzERqzDyrg3ZRP2n7fj3ib3XgzlSpk4nic1rQBnBDG3GaLiceAic0eZ0uZLrZGGkFY%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=59d8a196&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544174%26idx%3D1%26sn%3Db87982ec3a52d256511e71ac0691c490">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 22 Apr 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>生成式召回在得物的落地技术分享与思考</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544067&amp;idx=1&amp;sn=6dfd6e3f1948f4a36d30abf1e79ef6ef</link>
      <description>得物探索生成式召回，基于Transformer预测用户下一点击，解决信息茧房问题。通过联合训练实现&#34;生成预测+引导召回&#34;，AB测试显示消费深度与兴趣广度双提升，验证了工业场景可行性。</description>
      <content:encoded><![CDATA[<p>原创 <span>流煜曦</span> <span>2026-04-15 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=b09a86cd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHshynzvibFibk7es95ialrHaoze05OgvEibibzjDljcfrsLpp1KibMPNuBiaHx45PhpocQGOjJb6rZllRKgSHjBrNRsy9IHBtzzMQFSnc%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>得物探索生成式召回，基于Transformer预测用户下一点击，解决信息茧房问题。通过联合训练实现"生成预测+引导召回"，AB测试显示消费深度与兴趣广度双提升，验证了工业场景可行性。</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="">    1.Generative Model设计细节</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.Rerank Model设计细节</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="">    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.与LLM结合的可能性</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.多模态与跨域生成</span></p></div></div></div></div></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;"><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="">推荐系统在提升用户体验的同时，也面临着信息茧房、兴趣收敛和内容同质化的挑战。随着用户与系统交互的深入，&#34;推荐→用户反馈→再推荐&#34;的闭环会逐渐强化用户的少数主兴趣，导致推荐结果趋同，降低用户的新鲜感与满意度。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">生成式AI技术的快速发展为推荐系统带来了新的机遇。与传统的判别式匹配范式不同，生成式召回通过预测用户下一个可能点击的内容，实现从&#34;匹配已知&#34;到&#34;预测潜在&#34;的范式转变。在得物社区这一潮流生活方式平台上，用户对内容多样性和新颖性的需求尤为突出，这为生成式召回的探索提供了天然的场景。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于此背景，得物启动了生成式召回方向的一期探索，旨在为下一代智能推荐系统的构建积累经验，探索推荐系统的 scaling-law 规律。</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: 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="">传统判别式ANN召回的局限性</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="">难以有效捕捉用户行为序列中的长期兴趣、短期偏好及其动态演变过程。</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="">各兴趣点通常独立建模，缺乏对用户多兴趣间协同关系的端到端建模能力。</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="">生成式召回的核心优势</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="">Next-Token Prediction 范式：</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="">基于 Transformer 架构，自然捕捉用户行为序列中的时序依赖关系。</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="">具有 scaling-law 规律：</span></strong><span leaf="">随着样本与模型规模的提升，能大幅提高模型的表达能力，提高线上的推荐效果。</span></p></li></ul></p><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;"><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="">得物生成式召回系统采用 Generative Model 与 Rerank Model 联合训练的端到端设计，实现了生成与排序的协同优化。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2712962962962963" 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="100060410" src="https://wechat2rss.xlab.app/img-proxy/?k=6f9e2a98&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsFmIrjO4SAIVY5xvbicsVYuRkCPtua2HHwaMyKLDnKex9iaicOXvb2au6k8NyCBRkfiaeekqKxd5nbCxC8RA66thAib8ibd3UuGhBaE%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="">Generative Model设计细节</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.49907407407407406" 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="100060413" src="https://wechat2rss.xlab.app/img-proxy/?k=e6329fd8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvyKEw8icrnMYbZb3vMg5I8FX8XEgbmU5TCNbCxSHbrTaakfcVkkxLMllGO2Mb5mrZYJQfjmf6mGUMvy328sYYvshSfUAKeIKwY%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="">生成式模型基于 Transformer 架构实现 Next-Token 生成任务，主要特征包括：</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="">使用用户图文和视频的有效点击序列，以及对应的一 / 二 / 三级类目序列，截断最近 100 个行为；</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="">首位 User Token 生成策略：</span></strong><span leaf="">联合训练辅助双塔模型产出首位 user_token，通过梯度隔离机制，确保生成任务与双塔任务的独立优化；</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="">采用当前 DeepRec 框架可承受的最大参数规模，配置为 n_layers=3，n_heads=4，dim=64，并加入 position embedding，增强时序建模能力。</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="">Rerank Model设计细节</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4324074074074074" 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="100060412" src="https://wechat2rss.xlab.app/img-proxy/?k=991ffe55&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsWF1gvLBgLZLY0NuR8xggF9aoFsEmPsnxic3AKXIVPGaibrJo2gNa8atdfVcjc32qN5SZ40Y3TKq6N5lKiaHxvWG0XeRan8Wt80w%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><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="">通过召回目标同时训练 rerank 模型的 item 塔与 user 塔，与 Generative Model 共享底层特征表示；</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="">推理过程：从一级类目生成到精准召回</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;的四步流程，兼顾了生成式模型的预测能力与向量检索的效率。</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="">推理过程首先通过生成式模块的 Decoder 生成 Top-K 一级类目。经过离线 recall@100 参数搜索对比，确定 K=4 为最优配置，在召回效果与计算成本间取得平衡。生成的一级类目作为后续步骤的 “硬条件” 向量，为多兴趣建模提供结构化引导。</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="">基于生成的 K 个一级类目，通过条件双塔的 user_tower 分别得到图文和视频的 K 个用户兴趣向量。这一设计实现了兴趣解耦，每个兴趣向量专注于特定类目下的用户偏好，避免了传统单向量表示中的兴趣混淆问题。</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="">ANN召回与Rerank排序</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="">各兴趣向量分别进行 ANN 向量检索，从候选池中召回相关 item。召回结果再由 Rerank 模型进行精细化打分排序，最终通过蛇形 Merge 策略将多个兴趣通道的结果融合，作为最终召回列表输出。</span></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-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="">为验证生成式召回的实际效果，我们在得物社区进行了严格的AB测试。结果也带来了社区线上指标的显著提升。验证了生成式算法的在得物落地的可行性，并预示着更大的探索潜力。</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;"><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: 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="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;background-color: rgb(218, 218, 218);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="font-family: PingFangSC-light;box-sizing: border-box;"><span leaf="">指标名称</span></span></p></div></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;background-color: rgb(218, 218, 218);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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="">相对提升(%)</span></span></p></div></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;background-color: rgb(218, 218, 218);box-sizing: border-box;padding: 0px;"><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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">人均推荐有效VV</span></p></div></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">+0.41%</span></p></div></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">社区DAU均时长(秒)</span></p></div></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">+0.37%</span></p></div></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">+0.45%</span></p></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">推荐曝光UV人均内容VV</span></p></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">+0.39%</span></p></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr></tbody></table></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></div><div style="min-height: 40px;margin: 10px 0%;box-sizing: border-box;"><p style="width: 100%;margin: 0px auto -10px;box-sizing: border-box;"><table style="border-collapse: collapse;box-sizing: border-box;margin-bottom: 10px;"><tbody><tr style="box-sizing: border-box;"><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;background-color: rgb(218, 218, 218);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">多样性指标</span></p></div></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;background-color: rgb(218, 218, 218);box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;background-color: rgb(218, 218, 218);box-sizing: border-box;padding: 0px;"><p style="text-align: center;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="">显著性</span></span></p></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">+0.18%</span></p></div></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;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></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><div style="margin: 5px 0%;box-sizing: border-box;"><div style="text-align: center;padding: 0px 5px;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">+0.23%</span></p></div></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr><tr style="box-sizing: border-box;"><td data-colwidth="40.0000%" width="40.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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="">+0.19%</span></p></div></td><td data-colwidth="30.0000%" width="30.0000%" style="border-width: 1px;border-color: rgb(62, 62, 62);border-style: solid;box-sizing: border-box;padding: 0px;"><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></td></tr></tbody></table></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-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="">从 DeepRec 迁移至 DeepSea-Torch 框架，支持更大参数量与稀疏特征；</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="">探索 One-Rec 框架落地，统一生成式与判别式召回范式；</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="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;"><b style="box-sizing: border-box;"><span leaf="">总结与展望</span></b></p></div></div></div></div></div></div></div></div><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">得物生成式召回一期实践表明，通过 “生成预测 + 引导召回” 的技术路径，可以在可控成本下，同时实现用户消费深度与兴趣广度的双重提升，为下一代智能推荐系统的构建提供了重要参考。本次实践成功验证了生成式召回在工业级推荐场景的可行性与有效性。通过 Generative Model 与 Rerank Model 的联合训练架构，实现了从判别式匹配到生成式预测的成功范式迁移。技术方案在保持推荐相关性的同时，显著提升了兴趣探索能力，为打破信息茧房提供了新的技术路径。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当前方案以一级类目作为生成目标，这是考虑到类目体系的稳定性和可解释性。下一步将基于社区样本训练 Item Embedding，并将 Item Token 离散化与用户 Next-Token 生成任务联合训练。这一演进将实现从粗粒度到细粒度的兴趣预测，提升召回的精准度。</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-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="">从当前的 100 行为扩展到更长序列，更好建模用户长期兴趣；</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="">与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 知识增强结合。LLM 的世界知识可以帮助识别用户潜在但未明确表达的兴趣，而生成式模型则负责将这些兴趣转化为可执行的召回策略，形成知识增强的生成式召回新范式。</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="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=2247544056&amp;idx=1&amp;sn=18bd6749a8e9b8ff2dde91b066a2526a&amp;scene=21#wechat_redirect" textvalue="立正请站好：一个组件复用 Skill 的工程化实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">立正请站好：一个组件复用 Skill 的工程化实践｜得物技术</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=2247544050&amp;idx=1&amp;sn=ff7efc6c5e38359470b157514a275f89&amp;scene=21#wechat_redirect" textvalue="财务数仓 Claude AI Coding 应用实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">财务数仓 Claude AI Coding 应用实战｜得物技术</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=2247544017&amp;idx=1&amp;sn=eaceee1d1f4f672b2dd630a1b235eda3&amp;scene=21#wechat_redirect" textvalue="日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术</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=2247544006&amp;idx=1&amp;sn=77bc608620d81c44a996464dae407857&amp;scene=21#wechat_redirect" textvalue="Redis 自动化运维最佳实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Redis 自动化运维最佳实践｜得物技术</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=2247543910&amp;idx=1&amp;sn=a17a16f6fe78ff1a0940387ecf5137c8&amp;scene=21#wechat_redirect" textvalue="Claude在得物App数仓的深度集成与效能演进" data-itemshowtype="0" linktype="text" data-linktype="2">Claude在得物App数仓的深度集成与效能演进</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="100060414" src="https://wechat2rss.xlab.app/img-proxy/?k=99b1d589&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuCnsQicxCABdmXoqbRKGbLJicyAJIaJMRFJqichg9SWwS66ibIvzgzQhwAYNVZNceoAC28A392KWcPpxSZT4TZ37icg6VSicFIvibWPk%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=0ef894e5&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544067%26idx%3D1%26sn%3D6dfd6e3f1948f4a36d30abf1e79ef6ef">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 15 Apr 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>立正请站好：一个组件复用 Skill 的工程化实践｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544056&amp;idx=1&amp;sn=18bd6749a8e9b8ff2dde91b066a2526a</link>
      <description>开发组件复用Skill，解决AI&#34;不会主动用&#34;的难题。通过AGENTS.md+Hook+Skill三层结构，让AI在写代码前先查可复用组件，而不是直接新建。核心是把&#34;复用优先&#34;流程化，让AI成为遵守规范的工程协作者，而非代码补全器。</description>
      <content:encoded><![CDATA[<p>原创 <span>魏无涯</span> <span>2026-04-13 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c9212ba3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtke3oibYneyhRjLycDPm0iccSKW561ZrWwRXLqdDbMb8vJicqc1C7sk8Xch4vkwkqCLxtmuUHrXf2QybD5FBKB3gBHGm0aoeBPSM%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>开发组件复用Skill，解决AI"不会主动用"的难题。通过AGENTS.md+Hook+Skill三层结构，让AI在写代码前先查可复用组件，而不是直接新建。核心是把"复用优先"流程化，让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="">一、背景：为什么要做这个 Skill</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="">三、核心设计思路：AGENTS.md + Hook + Skill（三层结构）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.AGENTS.md：放基础上下文（常驻）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.Hook：做路由增强（提高触发概率）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.Skill：提供流程和工具（真正执行）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">四、这套 Skill 在源码里是怎么落地的（我的实现）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.先把&#34;入口&#34;收敛成一个：find-component.js</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.不是&#34;全仓库乱搜&#34;，而是&#34;当前应用 + 根级共享&#34;优先</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.匹配不是纯关键字：我做了&#34;多因素加权&#34;</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.把&#34;索引构建&#34;做成可复用流水线，而不是一次性脚本</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.让 Skill 不只是&#34;搜索器&#34;，还是&#34;反馈回路&#34;</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、这次实现里，总结出&#34;让 AI 流程化&#34;的 3 条原则</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.原则 1：把基础上下文放进 AGENTS.md（或用 Hook 注入）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.原则 2：Skill 需要直接提供工具函数给 AI 调</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.原则 3：显式告诉 AI 调哪些函数，并把分散逻辑聚合到一个入口</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="">八、结语：让 AI 少一点&#34;即兴发挥&#34;，多一点&#34;工程纪律&#34;</span></p></div></div></div></div></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;"><b style="box-sizing: border-box;"><span leaf="">背景：为什么要做这个 Skill</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="">做这个 Skill 的初衷很直接，也很现实：功能开发时容易&#34;顺手新建一个&#34;，而不是先复用已有组件，造成组件库越来越臃肿。这件事对团队的伤害其实是复利型的：</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="">UI/交互一致性越来越差；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI 生成代码时也更容易继续复制混乱。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">所以做这个 Skill 的目标不是&#34;帮 AI 搜索一下&#34;，而是：把&#34;复用优先&#34;的思考过程流程化，让 AI 在写代码前先走一遍&#34;查索引 → 判断是否复用 → 命不中再新建&#34;的路径。</span></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-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;做个组件搜索工具给 AI 用就好了&#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="">AI 会不会主动用；</span></strong></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></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></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></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这和 Vercel 在他们的 agent 评测里观察到的现象很像：skills 本身不是没用，而是 agent 往往不会稳定触发；而把基础知识放进 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">AGENTS.md</span></span><span leaf=""> 这种&#34;被动上下文&#34;后，稳定性反而更高。Vercel 的实验里，默认 skill 触发并没有提升通过率，加入显式指令后才明显改善，而 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">AGENTS.md</span></span><span leaf=""> 文档索引方案表现更稳定。这给了我一个很关键的设计方向：先解决 AI 的&#34;决策点&#34;问题，再解决 AI 的&#34;能力&#34;问题。</span></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="">核心设计思路：AGENTS.md + Hook + Skill（三层结构）</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;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="">AGENTS.md：放基础上下文（常驻）</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;的规则、组件索引入口、扫描后需要做的事情，放进 AGENTS.md（或同类常驻上下文机制）里。目的不是塞满文档，而是让 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;"><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="">扫描后还有描述补全流程需要继续执行。</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="">AI 根本不知道你有这套机制</span></strong><span leaf="">。不写进去，AI 主动使用 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="">Hook：做路由增强（提高触发概率）</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="">如果运行环境支持 hooks（例如 Claude Code 的 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">UserPromptSubmit</span></span><span leaf=""> 支持在用户 prompt 处理前注入额外上下文），就可以做一层&#34;意图路由增强&#34;：在用户提到&#34;组件复用 / 是否有现成组件 / 封装组件 / 查组件&#34;等语义时，给 AI 注入提示，让它优先走组件复用流程。Claude 的文档明确写了 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">UserPromptSubmit</span></span><span leaf=""> 会在处理前触发，并且可通过 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">additionalContext</span></span><span leaf=""> 注入上下文。这层解决的是：</span><strong style="box-sizing: border-box;"><span leaf="">AI 知道有 skill，但不一定想起来用</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="">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="">Skill 不是只写说明文档，而是要提供：</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="">失败时的兜底逻辑。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">OpenAI 的 Codex Skills 文档里提到 </span><span style="background-color: rgb(255, 255, 255);box-sizing: border-box;"><span leaf="">skills</span></span><span leaf=""> 是&#34;渐进披露&#34;机制：运行时先看到 skill 的元信息（尤其是 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">description</span></span><span leaf="">），只有决定使用时才加载完整 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">SKILL.md</span></span><span leaf="">；而且隐式触发高度依赖 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">description</span></span><span leaf="">。这也是为什么 skill 的触发边界和描述要写得非常清楚。这层解决的是：</span><strong style="box-sizing: border-box;"><span leaf="">AI 想用了，但执行过程不稳定</span></strong><span leaf="">。</span></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;"><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="">这套 Skill 在源码里是怎么落地的（我的实现）</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="">下面是我这次组件复用 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="">先把&#34;入口&#34;收敛成一个：find-component.js</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">SKILL.md</span></span><span leaf=""> 里明确规定：</span><strong style="box-sizing: border-box;"><span leaf="">Agent 必须调用统一入口</span></strong><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">find-component.js</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="">避免 AI 在多个脚本之间犹豫（</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">scan-components</span></span><span leaf="">、</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">match-component</span></span><span leaf="">、</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">resolve-scope</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="">避免 AI 漏掉前置步骤（比如索引不存在时先扫描）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">避免 AI 调用路径不一致导致结果不稳定。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">统一入口做了几件事（都在 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">find-component.js</span></span><span leaf=""> 里）：接收查询词（</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">query</span></span><span leaf="">）、仓库根路径（</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">repoRoot</span></span><span leaf="">）、当前聚焦路径（</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">startDir</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(218, 218, 218);box-sizing: border-box;"><span leaf="">components.csv</span></span><span leaf=""> 缺失，</span><strong style="box-sizing: border-box;"><span leaf="">内部自动触发</span></strong><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">run-scan.js</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">resolve-scope</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">match-component</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="">按固定 JSON 协议返回结果（成功/失败/无匹配/是否触发扫描等）。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这一步本质上是把分散逻辑聚合成&#34;一个业务动作&#34;：&#34;查一下有没有可复用组件&#34;，而不是&#34;先算 scope，再查 CSV，再排序，再补扫，再记 usage&#34;。这对 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="">不是&#34;全仓库乱搜&#34;，而是&#34;当前应用 + 根级共享&#34;优先</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="">在 monorepo 场景里，组件复用很容易踩两个坑：</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="">只搜当前 app，漏掉根级共享组件；</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">resolve-scope.js</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(218, 218, 218);box-sizing: border-box;"><span leaf="">pnpm-workspace.yaml</span></span><span leaf=""> 解析 workspace 包；</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(218, 218, 218);box-sizing: border-box;"><span leaf="">currentAppRoot</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">root_scope_patterns</span></span><span leaf="">（例如 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">apps/_share/</span></span><span leaf="">、</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">packages/</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><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="">如果没有聚焦子项目（比如 startDir 就是 repo root），则切换为全量 scope。这个设计很像人类工程师的查找策略：先看&#34;我这个业务应用里有没有&#34;，再看&#34;全局共享有没有&#34;，而不是直接在整个 monorepo 海里捞针。</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="">匹配不是纯关键字：我做了&#34;多因素加权&#34;</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">match-component.js + fuzzy-match.js</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;"><strong style="box-sizing: border-box;"><span leaf="">名称精确/包含匹配；</span></strong></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></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="">Token 重叠；</span></strong></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(218, 218, 218);box-sizing: border-box;"><span leaf="">dlp</span></span><span leaf=""> 匹配 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">DateLinkPicker</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="">当前应用加权</span></strong><span leaf="">（当前 app 的组件优先）；</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="">（README 推断质量高于纯 inferred）；</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">NO_MATCH_SCORE_THRESHOLD</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></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="">还是低分则按&#34;无匹配&#34;返回，不把噪音结果塞给 AI。</span></p></li></ul><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;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="">把&#34;索引构建&#34;做成可复用流水线，而不是一次性脚本</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="">很多类似方案停在“扫一遍生成 CSV”，然后就过时了。我这次把扫描做成了 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">run-scan.js -&gt; index-manager -&gt; enrich</span></span><span leaf=""> 的流水线，核心考虑是</span><strong style="box-sizing: border-box;"><span leaf="">持续维护</span></strong><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="">run-scan.js 负责编排流程</span></strong></p></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-2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">resolve-scope</span></span><span leaf="">；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">updateIndex</span></span><span leaf="">；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">自动触发 autoEnrich</span></span><span leaf="">（可配置）。</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="">index-manager.js 负责索引更新策略</span></strong></p></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-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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">source_hash</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">last-scan-changed-ids.json</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(218, 218, 218);box-sizing: border-box;"><span leaf="">exists=0</span></span><span leaf="">（在查找阶段也会回写）。</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="">扫描后进入 Agent 富化（enrich）流程</span></strong></p></div></div></div></div><div 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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">agent-enrich-prompts.json</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">summary</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="">按 id 回到 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">components.csv</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="">读取源码/README；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">生成 summary + keywords；</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(218, 218, 218);box-sizing: border-box;"><span leaf="">update-component-summary.js</span></span><span leaf=""> 写回。</span></p></li></ul><p style="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;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">agent_mode_no_fallback = true</span></span><span leaf="">。</span></p></li></ul><p style="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="">。这其实就是&#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="">让 Skill 不只是&#34;搜索器&#34;，还是&#34;反馈回路&#34;</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">usage-tracker</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></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">哪些组件在某个 app 里更常出现；</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="">这是一种很轻量但非常实用的反馈机制——不需要搞复杂训练，也能提升 AI 下一次推荐质量。</span></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;"><b style="box-sizing: border-box;"><span leaf="">这次实现里，总结出&#34;让 AI 流程化&#34;的 3 条原则</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="">这也是我最想分享的部分：</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="">原则 1：把基础上下文放进 AGENTS.md（或用 Hook 注入）</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 主动使用 skill 的概率很低。原因不是 AI 笨，而是 agent 的执行是有&#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="">它要先意识到有 skill；</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">AGENTS.md</span></span><span leaf=""> 或通过 hook 提前注入，本质上是在减少决策点。Vercel 的评测结果说明了这种&#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="">原则 2：Skill 需要直接提供工具函数给 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="">只写一堆说明文档不够。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;"><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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">find-component.js</span></span><span leaf=""> 做成统一入口，并定义了固定 JSON 输出（</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">ok / matches / noMatch / scanTriggered / hint / error</span></span><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="">原则 3：显式告诉 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="">这是最容易被忽略、也是最影响稳定性的一点。如果给 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;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">resolve-scope.js</span></span><span leaf="">；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">match-component.js</span></span><span leaf="">；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">run-scan.js</span></span><span leaf="">；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">scan-components.js</span></span><span leaf="">；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">index-manager.js</span></span><span leaf="">。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">它理论上能拼起来，但实践里很容易漏步骤、顺序错、参数错。所以我在 Skill 里显式规定：</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(218, 218, 218);box-sizing: border-box;"><span leaf="">find-component.js</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">run-scan.js</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">update-component-summary.js</span></span><span leaf="">。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">把复杂系统收敛成几个明确入口，AI 才容易稳定执行。</span></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;"><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="">我原来以为&#34;写 skill&#34;是在给 AI 增加能力。现在更像是在做：给 AI 增加&#34;默认工作方式&#34;。换句话说，skill 不只是能力包（capability bundle），也是流程控制器（workflow controller）。</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 style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">AGENTS.md</span></span><span leaf=""> 负责&#34;告诉 AI 世界观&#34;；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Hook 负责&#34;提醒 AI 现在该用哪套流程&#34;；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Skill 负责&#34;把动作做完，并且做得稳定&#34;；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">日志/CSV/usage 负责&#34;让系统可观测、可迭代&#34;。</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;"><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="">代码规范治理。</span></p></li></ul></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><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;"><span leaf="">AI 开发前先查可复用组件，而不是直接新建；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">monorepo 下按&#34;当前应用 + 共享组件&#34;范围检索；</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="">匹配质量有加权与反馈回路；</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><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;"><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;"><b style="box-sizing: border-box;"><span leaf="">结语：让 AI 少一点&#34;即兴发挥&#34;，多一点&#34;工程纪律&#34;</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="">这次组件复用 Skill 的开发过程，对我最大的启发不是&#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-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基础上下文（AGENTS.md / hooks）；</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="">AI 就不会只是&#34;一个会说话的代码补全器&#34;，而会更像一个遵守团队规范的工程协作者。而这，才是我做这个 Skill 真正想要的结果。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">引用文档： <a href="https://vercel.com/blog/agents-md-outperforms-skills-in-our-agent-evals" target="_blank">https://vercel.com/blog/agents-md-outperforms-skills-in-our-agent-evals</a></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=2247544050&amp;idx=1&amp;sn=ff7efc6c5e38359470b157514a275f89&amp;scene=21#wechat_redirect" textvalue="财务数仓 Claude AI Coding 应用实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">财务数仓 Claude AI Coding 应用实战｜得物技术</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=2247544017&amp;idx=1&amp;sn=eaceee1d1f4f672b2dd630a1b235eda3&amp;scene=21#wechat_redirect" textvalue="日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术</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=2247544006&amp;idx=1&amp;sn=77bc608620d81c44a996464dae407857&amp;scene=21#wechat_redirect" textvalue="Redis 自动化运维最佳实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Redis 自动化运维最佳实践｜得物技术</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=2247543910&amp;idx=1&amp;sn=a17a16f6fe78ff1a0940387ecf5137c8&amp;scene=21#wechat_redirect" textvalue="Claude在得物App数仓的深度集成与效能演进" data-itemshowtype="0" linktype="text" data-linktype="2">Claude在得物App数仓的深度集成与效能演进</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=2247543887&amp;idx=1&amp;sn=4b040af63cd6575b636c2378f6d1d511&amp;scene=21#wechat_redirect" textvalue="Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术</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="100060403" src="https://wechat2rss.xlab.app/img-proxy/?k=b63146ad&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuIz02IYe61qseIBIz8yS5iciaDtD3MKPFzUQTcygahskicZ9EwKuIOrr7WXjG6cDr1SVawXHzpw2e15o537hfCMW5QYHJU4kFEZo%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=c9f1987b&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544056%26idx%3D1%26sn%3D18bd6749a8e9b8ff2dde91b066a2526a">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 13 Apr 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>财务数仓 Claude AI Coding 应用实战｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544050&amp;idx=1&amp;sn=ff7efc6c5e38359470b157514a275f89</link>
      <description>电商财务数仓复杂度高、质量容错率极低，人工易出现理解偏差与规范执行不足等问题。依托大模型核心能力，落地 AI 建模、SQL 开发、数据测试等全链路场景，以规范驱动迭代实现高效人机协作，大幅提升研发效率与数据质量，未来将向团队规模化推广应用。</description>
      <content:encoded><![CDATA[<p>原创 <span>丹克</span> <span>2026-04-08 18:32</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=50a7f01a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtUIM44dLJ0y2LIxE6Aia2Q1F85yOGqmkiciaSSX7x4MnJX6CUGIyPZVEGYBwibP5OQzmhvZQUFgfLaibg1EpFZ8bC6iaTXxiaj8QAQWY%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>电商财务数仓复杂度高、质量容错率极低，人工易出现理解偏差与规范执行不足等问题。依托大模型核心能力，落地 AI 建模、SQL 开发、数据测试等全链路场景，以规范驱动迭代实现高效人机协作，大幅提升研发效率与数据质量，未来将向团队规模化推广应用。</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？</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.AI 大模型能带来什么改变</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.人机协作模式：数仓研发的「L3 时刻」</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.AI 对于数仓全链路研发的提效作用</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.AI OneData 标准化建模（财务核算数据项目）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.AI SQL Coding 实践（财务 UE 表迭代案例）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.AI 数据测试（财务 UE 表邮费迭代案例）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.AI 需求文档转换（财务 UE 表邮费复杂逻辑解读）</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: 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="">引言：财务数仓为什么需要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-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="">在电商数仓体系中，财务域是复杂度最高、容错率最低的领域。不仅因为财务对于数据准确性的要求高，也因为财务是横向域，与几乎所有的域都有数据交叉，因此对业务 Sense 的要求很高。财务数仓工程师本质上在做三件事：</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 textstyle="" style="font-weight: bold;">业务翻译：</span>将交易、支付、资金、促销补贴、成本等数十个业务系统的数据，翻译成通用的财务语言；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">资产架构：</span>从 ODS 到 DWD、DWS、ADS 层层构建，确保财务 UE、财务管报等公司核心指标算得准、算得快；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">质量兜底：</span>GMV 口径是否统一，退款是否扣减，分摊是否跨周期对齐，任何一个字段的偏差都可能导致错误的经营决策。</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;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-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.26481481481481484" 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="100060387" src="https://wechat2rss.xlab.app/img-proxy/?k=5a1314f4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvxpyWPpmpUObJ3d3PWvD69EmEOjlGicg2uB3n2rENIZibqbuhmjHknOicm9HcmOlsfbIqQ9MmplZxicflhUvXjJgAZDSxYR56jn0c%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;的问题，带来隐患。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4935185185185185" 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="100060388" src="https://wechat2rss.xlab.app/img-proxy/?k=8f6a9c53&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv173gqaibicK3y38dn8x1em3QQS1xhy5DatHK70CibgoBgYTl5BvOmaD1Q4VScBleHFqQUOKMFuSPdLBCMSzrxricWqhtfqOXxHWI%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="">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="">为了有效解决&#34;人&#34;的问题，比如催得太急、看不过来、没看仔细、理解错误等问题，我们引入 AI 来做改变。核心思路是：大模型的介入不是替代数仓开发工程师，而是在「需求理解 → 代码编写 → 质量测试 → 文档沉淀」每个环节注入强推理能力。利用 AI 来代替人做大量的重复性工作，同时减少低级错误概率。</span></p><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-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">超大上下文打破知识孤岛：</span>200k+ token 的上下文窗口，可以将表结构定义、词根字典、指标计算逻辑一次性注入模型的 “工作记忆”，实现基于全域元数据的推演，让大模型具有记忆；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">业务语义的自动抽象与对齐：</span>大模型能理解 “日活”“留存率”“归因窗口” 等业务术语，并映射为具体 SQL 实现，减少因需求理解偏差导致的返工；Claude 在编码领域显著优于其他模型，是因为它能 “懂” 业务逻辑，而不是简单的机械执行；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">突破人类极限的规范执行力：</span>人工在紧迫工期下规范遵守率通常明显下降，而大模型注入规范后，可稳定维持在高位。只要指令给得明确，大模型 “几乎” 不会出错。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">参考：亚马逊 AWS 对于构建一个强大、具备自我纠错能力且能查询多种数据源的 Text-to-SQL 解决方案架构图。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.762962962962963" 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="100060391" src="https://wechat2rss.xlab.app/img-proxy/?k=26febf33&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHulJlKKVQWQ0lZC2WpgPfKV16AsTvGPjU3CjXAMrJibOcPTXXo4G9TBsjgRH7EllqdiagIVYApSy9zNavjB6HOhKVv7uNffHoTDA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><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="">基于上述观点，在财务领域，大模型可以在哪些具体的环节落地呢？以下是根据笔者近期实践经验，列出的可落地场景及提效预期。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.27685185185185185" 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="100060389" src="https://wechat2rss.xlab.app/img-proxy/?k=0c9f50da&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuxeUQy3vZTxiaAasB7e5dfNecesM1Y4WZVgyLouJibMW8LZuX8GypgUQYuZ6Wiawmvjq5hoGSqrW4XVBkJoBYMsdttiaJe81qQ0PI%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="">人机协作模式：数仓研发的「L3 时刻」</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="">如果借用自动驾驶的分级标准，当前数仓大模型应用正处于从 L2（辅助驾驶）向 L3（有条件自动驾驶）过渡的阶段，即在明确的 Prompt 约束与规范文档支撑下，AI 能接管绝大部分标准化的执行动作。</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-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.27685185185185185" 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="100060390" src="https://wechat2rss.xlab.app/img-proxy/?k=607c7ead&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvwDD9ibnapwsA9SzlXibls3H7MxByOFflOwosv2US96RCPzDErUViaARrAcVWmFMFdMCLVPZx5b3w3dSEMxxSAh3GnCCfGblz2Sc%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 一旦&#34;学会&#34;了团队规范，输出的规范遵守度可稳定维持在较高水平。反过来，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="">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="">学习 Andrej Karpathy 关于 ChatGPT 分享的内容时，最大的感受是：AI 最强的能力，是 &#34;泛化&#34;。 因此，如果我们可以把数仓研发的链路拆分清楚，那么 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5898148148148148" 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="100060392" src="https://wechat2rss.xlab.app/img-proxy/?k=4c801847&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtOaIib0IrdrqFVMkmM0EXSgqvDBH9DwtEh2UFNArVh7O1zzrb0xZj48rtXiaEL7eXIgEI4ZDbOCTouYXHCZ3TmjEFLOxSCS6Bkg%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></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="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 OneData 标准化建模（财务核算数据项目）</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="">背景：财务核算 OneData 为什么难搞？</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-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.24074074074074073" 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="100060394" src="https://wechat2rss.xlab.app/img-proxy/?k=daa577b9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvYT78RGPRqsicxsmcBGO9ZKQn6mm3D6Fe87fDfib8wf5iam85Srr30JOTEcylFF89NufYB4wgfq4Dtiaibslc0hjSyTh1e1mB1Vp8w%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="">同时，财务域的核心特征是来源多（全公司系统）、指标多（单表字段数众多），但以可累加指标为主。财务严格意义上没有原子指标，全是基于业务指标加工出来的派生指标，且一个财务指标往往有多种口径：业务口径、资金口径、财管报口径。并且，项目涉及多个子域（核算域、技术成本域、促销补贴域、商业化域、分析域），覆盖从「计费 → 核算 → 结算 → 财务分析」的端到端业务过程体系。如果要彻底理解核算 OneData 的构建，不仅要懂数仓，还要懂财务，还要熟悉公司财务系统，这个要求非常难做到！</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></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">口径溯源极其复杂：</span>大量逻辑在工程侧实现，绝大多数表缺失业务文档、技术文档、口径文档，口径逻辑需要基于代码猜测，存在错误可能性，溯源工作量巨大。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">规范执行不一致：</span>财务域涉及表命名规范（DIM/DWD/DWS/ADM 各有格式要求）、时间周期规范（1d/7d/30d/wtd/mtd/ytd 等多种）、生命周期规范、刷新周期规范、标准字段英文命名原则（<span textstyle="" style="background-color: rgb(214, 214, 214);">{主体}{业务场景}{币种标识}{度量类型}{时间单位}</span>）。规范越细，人工遵守率越低。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">跨域依赖复杂：</span>财务是横向域，与各业务域交叉。核算域依赖大量上游表，技术成本域需要从云服务、算法、产研人力、标注人力等多个来源接入数据。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">文档输出繁琐：</span>每个 ADM 表都必须包含 OnePage 文档（OneData 方案最重要内容），加上口径文档、模型使用说明、下游 mapping 文档，文档间大量重复但需各写一遍。</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;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="">建模方法论：规范即 Prompt × 迭代收敛法 × 海量文件阅读</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 textstyle="" style="font-weight: bold;">第一个方法论：规范沉淀是前提</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI 的输出质量完全取决于输入的规范文档质量。财务核算项目中，我们沉淀了完整的规范体系作为 Prompt 的核心输入，包括：</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf=""><span textstyle="" style="background-color: rgb(214, 214, 214);">{主体 /fin}{业务场景 / 费用类型}{币种标识}{度量类型}{时间单位}</span></span></span><span style="background-color: rgb(218, 218, 218);letter-spacing: 0.034em;"><span leaf=""><span textstyle="" style="background-color: rgb(255, 255, 255);">；</span></span></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="">数据质量监控规范：完整性、准确性、一致性、合规性、业务规则等多个大类。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">第二个方法论：迭代是常态</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">不要期望 AI 一次给出完美结果。验证的关键是选择复杂字段进行抽查 —— 在财务场景中，重点验证涉及条件取值的字段（如分摊逻辑、冲销逻辑、多口径指标），对照 SQL 代码验证溯源路径。每次迭代的产物不只是修正后的输出，更重要的是规范文档的完善。因此，针对每次迭代的结果，快速识别要改动的点并修改，这一点就很重要。也就是说，AI 可以显著提升我们的迭代速度！</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">第三个方法论：海量文件阅读</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">因为超大的 Context，所以不仅可以把历史上已有的文档一次性灌入进去，也可以把原有设计链路的表和代码交给大模型理解，省去大量阅读和理解的时间。同时，能够帮我们精准地画出业务架构图，辅助数仓工程师理解业务、构建模型。例如财务数仓架构图，很多子模块的逻辑，都是大模型读取代码后输出思路，再由数仓团队整理形成的。</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="">Prompt 和效果</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;"><span leaf=""><span textstyle="" style="font-weight: bold;">Prompt 示例：</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="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;" data-pm-slice="3 5 [&#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;}]"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">请读取以下规范文档：</span></p><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">数仓规范资产细则（含词根字典、命名规范）；</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">离线数仓开发规范白皮书；</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">团队 Cursor Rules；</span></p></li></ul><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">分析目标表（输入对应的表名）的建表语句，按照数仓建模规范（ODS → DWD/DIM → DWS → ADM）的方式，输出重构后的建模建议。</span></p></div></div><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">第一次生成的效果展示了初步建模建议，在经过不断的调优和知识输入后，最终版本要丰富很多，形成了完整的财务核算数据 OneData 方案。</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;"><span leaf="">经过一段时间的实施，第一版核算数据结构已经落地，效果如下：</span></p><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">效率提升显著：</span><span textstyle="" style="font-weight: normal;">百张表的口径溯源、文档输出等标准化工作大幅压缩；</span></span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">规范遵守率大幅提升：</span><span textstyle="" style="font-weight: normal;">表命名、字段命名、时间周期等规范严格执行，遵守率较人工有明显改善；</span></span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">可复用性强：</span><span textstyle="" style="font-weight: normal;">规范文档、工具脚本、Prompt 模板、工作流程 SOP 均可跨子域复用（已在核算域、技术成本域验证）；</span></span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">数据质量监控体系：</span>基于口径逻辑自动推荐 DQC 规则（完整性、准确性、一致性、合规性、业务规则等多大类）。</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 SQL Coding 实践（财务 UE 表迭代案例）</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-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="">以财务 UE 表某次迭代为代表的案例，主要成果有：</span></p><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">代码结构优化，可读性大幅提升：</span></span><span style="letter-spacing: 0.034em;background-color: transparent;"><span leaf="">指标分段清晰、逻辑分层明确，维护成本明显降低；</span></span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">代码开发速度提升：</span></span><span style="letter-spacing: 0.034em;background-color: transparent;"><span leaf="">在规范与口径已对齐的前提下，从需求到可上线代码耗时缩短；</span></span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">性能优化：</span></span><span style="letter-spacing: 0.034em;background-color: transparent;"><span leaf="">整体基线提前完成，为下游留出更多缓冲时间。</span></span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">那么，我们是如何实现这种成果的？主要靠两点，一是 PRD 快速阅读与理解，二是代码开发效率提升。</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="">如何理解 SQL Coding 核心能力</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 textstyle="" style="font-weight: bold;">PRD 阅读与理解方面，AI 能够帮我们实现：</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">快速将 PRD 中的目标、指标、维度、过滤条件提炼为结构化要点；对「大促期间」、「小仓卖家」、「冲销」等未精确定义的表述，自动生成待确认问题清单；输出「指标口径」「统计周期」「主键与粒度」等需确认条目。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">代码开发效率提升方面，AI 能够帮我们实现：</span></span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于词根、分层、命名规范与建表模板，生成符合数仓规范的 DDL 与 SELECT 语句；多维度聚合、归因逻辑、窗口函数、多层嵌套等复杂逻辑，由模型生成初版 SQL，人工校验微调；对存量长 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;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="">财务 UE 表迭代需求使用 AI 开发后，具体效果如下：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">指标结构分段、编码规范性、注释清晰度：</span></span></p><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">新表：按数仓分层与命名规范生成 DDL 与 SQL，指标按业务域/统计口径分段组织，注释完整（字段含义、口径说明、KEY 标记等），既符合规范又便于阅读。</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">旧表改造：在保留业务逻辑正确性的前提下，对历史「屎山」代码进行结构化改写——统一别名、补全注释、拆分过长子查询、显式写出分区过滤等，使后续维护与排查成本明显下降。</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">代码展示对比：改动前 vs 改动后，可从「可读性、规范遵守度、注释覆盖」等维度做对比分析。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">代码撰写速度大幅度提升：</span></span></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;"><span leaf="">AI Coding 的主要步骤：Step 1：整理需求 → 技术文档 将 BI 需求文档中的字段信息整理进技术文档，明确字段范围。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Step 2：大模型分析字段来源 提示大模型读取 DWD 源码，分析哪些字段已存在、哪些需要新增关联。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Step 3：大模型编写 ETL 代码 由大模型自动在 DWD → DWS → ADM 三层添加字段代码，输出改动代码集合。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Step 4：命名规范校准 引入指标字典和 Cursor Rules，让大模型按规范重命名字段（去掉不规范后缀）。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Step 5：测试 SQL 生成与跑数验证 大模型生成自测 SQL，逐步验证各层数据一致性，不通过时追问原因并溯源。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">性能优化及自动调参：</span></span></p><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">自动识别性能瓶颈：结合执行计划、大表扫描、数据倾斜等常见问题，由模型分析 SQL 与表结构，指出潜在慢点。</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">优化建议生成：在分区裁剪、谓词下推、JOIN 顺序、中间结果物化等方面给出具体改写建议。</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">参数调优方案：针对 Spark/ODPS 等引擎的资源配置、并行度、倾斜处理参数，给出可落地的调优建议，供运维或开发同学选用。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">基线优化提升案例：</span></span></p><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">原链路：多张表串行/并行产出，整体耗时较长。</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">新链路：经模型辅助做表合并与逻辑下沉，收敛至更少的表，整体耗时明显缩短。</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><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 数据测试（财务 UE 表邮费迭代案例）</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-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 textstyle="" style="font-weight: bold;">测试复杂度高，影响面广：</span></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 textstyle="" style="font-weight: bold;">业务逻辑复杂，公式验证困难：</span></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 textstyle="" style="font-weight: bold;">测试用例设计困难：</span></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;"><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="">边界场景的验证；</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 textstyle="" style="font-weight: bold;">业务语言到数据语言的转化困难：</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">业务人员描述的需求往往是自然语言，而数据测试需要将其转化为精确的数据验证逻辑。例如：&#34;退小仓场景下，卖家邮费出资放在第一笔收入冲销，挂在最后一单&#34;；&#34;邮费返利抵减技术服务费&#34;；&#34;跨周期分摊，商业化订单时间与交易订单时间不匹配&#34;。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5458984375" data-s="300,640" data-type="png" data-w="1024" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060395" src="https://wechat2rss.xlab.app/img-proxy/?k=6df55e97&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuDxrMWY3vklvvFgcgWapmhyskfyNvVrrQUDic4jNxy0lP0bevO8rKsgArbpGEPS87UKT6Nw6qicJDta5TFUwibvQyc7W5AiatwRzU%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="">AI 在数据测试中的应用实践</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="">那么，我们如何通过 AI，来解决这些复杂问题呢？以某次财务 UE 表邮费迭代项目为例，我们深度应用 AI 进行数据测试，取得了显著效果。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">项目背景：</span></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;"><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="">逻辑变更：邮费返利抵减逻辑调整、冲销逻辑优化等。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">AI 应用场景：</span></p><ol style="list-style-type: decimal;" class="list-paddingleft-1"><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">测试用例自动生成：向 AI 提出测试要求后，AI 能够自动生成完整的测试 SQL 和说明文档，包括：</span></p></li></ol><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">正向-冲销=冲销之后的验证逻辑；</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">子项相加等于汇总项的验证逻辑；</span></p></li><li><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">业务规则转化的验证逻辑；</span></p></li><li><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="">2. 规则理解层面的测试补充：AI 能够从规则理解层面补充测试案例，如抽样验证、精度验证等，减少因理解不一致带来的质量问题。特别是在复杂的跨周期分摊场景中，AI 能够识别出人工容易忽略的测试点。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3. 复杂逻辑的逐步分析：针对复杂的业务逻辑，AI 能够逐步分析不符合预期的环节，帮助找到潜在的代码 Bug。例如在邮费冲销逻辑中，AI 能够分析退小仓场景下的多种分支情况，识别出逻辑漏洞。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4. 上下游影响分析：AI 能够分析一个字段的改动对上下游的影响，帮助识别需要同步验证的相关字段，避免遗漏。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">5. 公式验证与精度问题诊断：AI 能够自动生成公式验证 SQL，并识别精度问题。在测试过程中，AI 能够区分真正的逻辑错误和可接受的精度误差，避免误报。</span></p></div><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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5458984375" data-s="300,640" data-type="png" data-w="1024" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060396" src="https://wechat2rss.xlab.app/img-proxy/?k=468d8c10&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuibkMqkV1IIl8vMWZCV2ncfc8UnMUibyDMFbRcaCggdgU6XXZh3hVQNf2MYT6BxDeywcV5m9aibCI2SveM53jwpusoPsxdbiapcFA%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-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;"><span leaf=""><span textstyle="" style="font-weight: bold;">开发效率提升：</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">测试 SQL 生成效率明显提升：从提出测试要求到生成完整测试 SQL，时间大幅缩短；测试用例覆盖度提升：AI 能够识别出人工容易忽略的测试点，测试覆盖更全面。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">交付质量提升：</span></span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一次交付通过率显著提升：从规则理解层面补充测试案例，减少理解不一致带来的质量问题；针对复杂逻辑逐步分析，找到潜在代码 Bug；自动生成全面的测试用例，减少测试盲区。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">问题发现能力提升：</span></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></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 需求文档转换（财务 UE 表邮费复杂逻辑解读）</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-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 和与业务产品反复核对口径，大约占数仓总体工作时间的较大比例。BI 需求文档往往复杂难懂，第一眼看过去看不懂。</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="">实践案例：邮费 UE 迭代技术文档</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="">以邮费 UE 迭代需求为例，BI 需求文档涉及大量字段口径调整、新增字段、废弃字段、冲销逻辑重写等复杂内容。例如通过飞书 MCP 让 Cursor 直接读取 BI 需求文档，大模型自动总结出两张表（DWS 层和 ADS 层）各自需要改什么。大模型输出的结论结构清晰，按表分类列出：</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="">新增字段清单（应收拆分、冲销相关、实收拆分、成本、UE 等）；</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="">两表关系与实现顺序（先改 DWS 再改 ADS）。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Prompt 实例：读取「邮费逻辑梳理」文档内容，分析其文字描述与财务 UE 表的代码，分析要改动的点，帮我生成对应改动代码和改动原因注释。</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="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="">经过这个过程快速 get 到 PRD 缺失的内容、快速对齐，总体沟通时间有效缩减。虽然在总时间占比上看似不高，但节省的是工程师最头疼的碎片化沟通时间。</span></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="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-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.18055555555555555" 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="100060393" src="https://wechat2rss.xlab.app/img-proxy/?k=1effc010&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvEwTVvHchnmXpbSvKANpx8W6Dia546Bxnnacaia5TJvSuppUInkpyO05qfo91zabtF166MJDpQVJUdYhyqacCiaNoqVr2ia7bVgr4%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="">当前市场上，部分头部大厂由于自身产品策略的原因，限制了内部使用最新的大模型和 IDE 工具，导致一线使用大模型的效率受到制约。而我们则能够更灵活地选择最适合的工具组合，在使用技巧和经验积累上具备优势。例如，我们有如下两个方面的优势：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">能力层面：</span></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="">业务抽象能力：快速理解 PRD 中的目标、指标与口径，识别模糊点；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">实际落地案例丰富：财务 UE 表迭代等项目已有可量化结果。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: bold;">组织与场景层面：</span></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="">离线任务可重跑、可回溯，模型产出便于充分校验后再上线。</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="">使用大模型的能力不仅仅局限在财务、局限在个人，也要向整个团队推广，包括：优先选择 1-2 个痛点明确、规范相对清晰的场景做试点；将有效的 Prompt 设计、上下文组织方式、测试用例模板等经验在团队内分享，形成可复用知识库；从「人做」为主转向「人定规则与口径、模型执行环节」的协作模式，让大模型成为数仓同学的日常助手。未来已来。</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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544017&amp;idx=1&amp;sn=eaceee1d1f4f672b2dd630a1b235eda3&amp;scene=21#wechat_redirect" textvalue="日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术</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=2247544006&amp;idx=1&amp;sn=77bc608620d81c44a996464dae407857&amp;scene=21#wechat_redirect" textvalue="Redis 自动化运维最佳实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Redis 自动化运维最佳实践｜得物技术</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=2247543910&amp;idx=1&amp;sn=a17a16f6fe78ff1a0940387ecf5137c8&amp;scene=21#wechat_redirect" textvalue="Claude在得物App数仓的深度集成与效能演进" data-itemshowtype="0" linktype="text" data-linktype="2">Claude在得物App数仓的深度集成与效能演进</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=2247543887&amp;idx=1&amp;sn=4b040af63cd6575b636c2378f6d1d511&amp;scene=21#wechat_redirect" textvalue="Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术</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=2247543834&amp;idx=1&amp;sn=1f5dab2bdd20e7fd77e9fe1102986d1c&amp;scene=21#wechat_redirect" textvalue="大禹平台：流批一体离线Dump平台的设计与应用｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">大禹平台：流批一体离线Dump平台的设计与应用｜得物技术</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="100060398" src="https://wechat2rss.xlab.app/img-proxy/?k=007450a1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHslloydtuOZicMSicjSPBRatfn8VcVYV4Jb0dBUKCFiavkxkAsKZk3rWzRFr82Ja4NCPqsEECpp9HGv8MUlk1dPUKIryS0J5QMib4U%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://wechat2rss.xlab.app/link-proxy/?k=1b11de2d&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544050%26idx%3D1%26sn%3Dff7efc6c5e38359470b157514a275f89">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 08 Apr 2026 18:32:00 +0800</pubDate>
    </item>
    <item>
      <title>日志诊断 Skill：用 AI + MCP 一键解决BUG｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544017&amp;idx=1&amp;sn=eaceee1d1f4f672b2dd630a1b235eda3</link>
      <description>本文分享后端排障高效方案，结合MCP协议与AI技术，实现日志查询、代码联动全流程自动化，规避重复劳动，提升排障效率，为后端运维提供可复用的实操经验与技术参考。</description>
      <content:encoded><![CDATA[<p>原创 <span>阿程</span> <span>2026-04-01 18:31</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=86995953&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsibqfkIuNoJnDGKoj5ju9GKxsORbgJZrgXibKrfPz2HDrnuB6RNGTbCiaZu9EtZ8cclNyeX29auc4Pg8cebibexpEMXJAZ0uEmw6E%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>本文分享后端排障高效方案，结合MCP协议与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="">二、日志平台 MCP 是什么</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.MCP 原理</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.MCP 环境对照</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.核心 MCP 工具</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="">三、/log-diagnosis Skill 是什么</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.Skill 工作原理</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="">    4.queryString 语法规则</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.安装日志平台 MCP</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.安装 /log-diagnosis Skill</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.配置 .diagnosis/config.json</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="">六、实战案例：一个隐蔽的 SQL BUG</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.AI 还原完整调用链路</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.AI 提取组装后的查询 DTO</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.AI 从日志中提取实际执行的 SQL 发现根因</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    6.AI 定位代码，给出修复方案</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    7.效率对比</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: 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-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="">做后端开发，调 BUG 有一个让人头疼的固定流程：打开日志平台，输入 traceId 或关键词，搜日志；从几十上百条日志里，找到关键的那几条；把日志里的类名、方法名复制出来，去 IDE 里找对应代码；结合代码逻辑，判断哪里出了问题；如果一次找不准，回去再搜日志，再翻代码……</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这个过程相对固定，但非常耗时间。每次 BUG 定位，光在日志平台和 IDE 之间来回切换，就能消耗掉大半的时间。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">最开始在去年 Q3 想到这个问题的时候，脑子里浮现的第一个方案是：用 Cursor + MCP，把日志平台接进来，再挂一个代码知识库，让 AI 帮我查日志。但这个方案有缺陷 —— 日志查询是「动态的」，它依赖环境、应用、时间范围，没办法静态预置。此外，这样处理没有办法做到比较丝滑地读代码、改代码。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">后来开始用 Claude Code，接触到了 Skill 的概念：可以在项目里定义一套自定义命令，描述 AI 应该怎么执行这个命令的每个步骤，于是整个思路变得清晰了。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">日志平台有 MCP，Claude Code 有 Skill，两者结合，就能让 AI 自动完成「查日志 → 找关键信息 → 扫描代码 → 定位问题」这整个闭环。然后在 PM 的帮助下，才有了 /log-diagnosis 这个 Skill。</span></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;"><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="">日志平台 MCP 是什么</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="">MCP 原理</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="">日志平台推出了基于 MCP（Model Context Protocol）协议的日志查询服务，让 Claude 可以直接调用日志平台的能力，无需人工在日志平台上手动查询。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">MCP 本质上是一种标准化的「工具调用协议」，Claude Code 通过 SSE（Server-Sent Events）长连接与 MCP Server 通信，实时获取日志数据。</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="">MCP 环境对照</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5592592592592592" 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="100060361" src="https://wechat2rss.xlab.app/img-proxy/?k=7c5a2d49&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvfs1NoLP0Vf1UJlpZ5RtiboIsKvC1rMuunIicfPqlNs5e9LI2SgvXjGdmgic7jagXWUady7aTJUa2BkrV7db7ia4ibNCTAzvALOT68%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="">核心 MCP 工具</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4962962962962963" 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="100060362" src="https://wechat2rss.xlab.app/img-proxy/?k=d4642835&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsN7QJ8Jnl5sj5AAhiaP5MLecBx4iaC0Ga8xKOIgFW5LBCCibs7MsqeAFInNWOW7KeQdprxkP5Anz201zTMqH0sTs5diccQsAmzxes%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><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="">secretKey（日志平台后管申请）</span></code><br/><code><span leaf="">    ↓ acquireTokenTool</span></code><br/><code><span leaf="">accessToken（1小时有效，最多同时存在5个）</span></code><br/><code><span leaf="">    ↓ 携带 accessToken</span></code><br/><code><span leaf="">logsQuery / logSqlQuery / countLogTool ...</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;"><span leaf="">secretKey 申请地址：进入日志管理后台 → 日志权限 → 我的应用 → 生成密钥。</span></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="">/log-diagnosis Skill 是什么</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="">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 style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">log-diagnosis</span></span><span leaf=""> 是一个运行在 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">Claude Code</span></span><span leaf=""> 里的自定义诊断命令。Claude Code 支持通过 .claude/skills/ 目录定义自定义技能（Skill），以 Markdown 文件描述行为规范，Claude 在收到对应命令时会自动加载并执行。你只需要把 traceId 或告警信息告诉它，剩下的全部交给 AI。完整执行链路如下：</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="bash"><code><span leaf="">用户输入 /log-diagnosis {环境} {代码分支} {诉求}</span></code><br/><code><span leaf="">    ↓</span></code><br/><code><span leaf="">Claude 加载 .claude/skills/log-diagnosis/SKILL.md</span></code><br/><code><span leaf="">    ↓</span></code><br/><code><span leaf="">读取 .diagnosis/config.json 获取当前环境配置</span></code><br/><code><span leaf="">    ↓</span></code><br/><code><span leaf="">检查 accessToken 是否过期，过期则自动刷新</span></code><br/><code><span leaf="">    ↓</span></code><br/><code><span leaf="">从 traceId 计算日志时间范围（取第9-16位16进制时间戳）</span></code><br/><code><span leaf="">    ↓</span></code><br/><code><span leaf="">调用日志平台 MCP 分页拉取全量日志（最多20页，不遗漏）</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/><code><span leaf="">生成诊断报告（飞书文档 or 本地 Markdown）</span></code><br/><code><span leaf="">    ↓</span></code><br/><code><span leaf="">恢复原始代码分支</span></code><br/></pre></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="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.23148148148148148" 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="100060359" src="https://wechat2rss.xlab.app/img-proxy/?k=57173f16&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvZ0VswL99SOAXx7up6Lia4L27azHicTVPZxZ8nuWLDLEVibXEGD0Hn1dOglHDAJfRk9frOKIrQjwOXParx2zvapsUibuO5PAJdG2Y%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><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-1"><li style="box-sizing:border-box;font-weight:normal;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">Token 自动管理：</span></span></strong><span leaf=""><span textstyle="" style="font-weight: normal;">accessToken 过期自动刷新，无需手动维护；</span></span></p></li><li style="box-sizing:border-box;font-weight:normal;"><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;">自动分页拉完所有日志，禁止只查第一页就下结论（最多 20 页）；</span></span></p></li><li style="box-sizing:border-box;font-weight:normal;"><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></span></p></li><li style="box-sizing:border-box;font-weight:normal;"><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></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="">queryString 语法规则</span></strong></p></div></div></div></div></div></div></div></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="makefile"><code><span leaf=""><span class="code-snippet__comment"># 格式</span></span></code><br/><code><span leaf="">{field} {操作符} <span class="code-snippet__string">&#34;{值}&#34;</span> {连接符} {field} {操作符} <span class="code-snippet__string">&#34;{值}&#34;</span></span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 操作符</span></span></code><br/><code><span leaf="">=  : 精确匹配</span></code><br/><code><span leaf="">≈  : 模糊匹配（like）</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 连接符</span></span></code><br/><code><span leaf="">AND / OR / NOT</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 示例</span></span></code><br/><code><span leaf="">trace_id = <span class="code-snippet__string">&#34;a1b2c3d4e5f6789012345678abcdef01&#34;</span></span></code><br/><code><span leaf="">trace_id = <span class="code-snippet__string">&#34;xxx&#34;</span> AND log_level = <span class="code-snippet__string">&#34;ERROR&#34;</span></span></code><br/><code><span leaf="">endpoint ≈ <span class="code-snippet__string">&#34;/api/your-endpoint&#34;</span> AND log_level = <span class="code-snippet__string">&#34;ERROR&#34;</span></span></code><br/><code><span leaf="">message ≈ <span class="code-snippet__string">&#34;timeout&#34;</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;"><span leaf="">注意：时间范围只通过 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">start/end</span></span><span leaf=""> 参数控制，不要写在 queryString 中。</span></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="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="">安装日志平台 MCP</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="">Claude Code</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="">在 Claude Code 命令行中执行，按需安装对应环境：</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="perl"><code><span leaf=""><span class="code-snippet__comment"># 测试环境</span></span></code><br/><code><span leaf="">claude mcp add --transport sse dw-<span class="code-snippet__keyword">log</span>-mcp-t1 https:<span class="code-snippet__regexp">//</span>{your-t1-aigw-domain}/api/<span class="code-snippet__number">v1</span>/mcp/<span class="code-snippet__keyword">log</span>-mcp/sse</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 预发环境</span></span></code><br/><code><span leaf="">claude mcp add --transport sse dw-<span class="code-snippet__keyword">log</span>-mcp-pre https:<span class="code-snippet__regexp">//</span>{your-pre-aigw-domain}/api/<span class="code-snippet__number">v1</span>/mcp/<span class="code-snippet__keyword">log</span>-mcp/sse</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 生产环境</span></span></code><br/><code><span leaf="">claude mcp add --transport sse dw-<span class="code-snippet__keyword">log</span>-mcp-prd https:<span class="code-snippet__regexp">//</span>{your-prd-aigw-domain}/api/<span class="code-snippet__number">v1</span>/mcp/<span class="code-snippet__keyword">log</span>-mcp/sse</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="">安装后重启 Claude Code，执行 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">/mcp</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="">Cursor</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1. 打开 Cursor Setting；</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2. 点击 <span textstyle="" style="background-color: rgb(214, 214, 214);">Tools &amp; MCP</span>，添加 MCP Server；</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">3. 添加 URL，MCP Server 名称任意。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">建议按需安装 MCP Server，避免额外消耗 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="json"><code><span leaf=""><span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;mcpServers&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">    <span class="code-snippet__attr">&#34;dw-log-mcp-t1&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;url&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;<a href="https://{your-t1-aigw-domain}/api/v1/mcp/log-mcp/sse" target="_blank">https://{your-t1-aigw-domain}/api/v1/mcp/log-mcp/sse</a>&#34;</span></span></code><br/><code><span leaf="">    <span class="code-snippet__punctuation">},</span></span></code><br/><code><span leaf="">    <span class="code-snippet__attr">&#34;dw-log-mcp-pre&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;url&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;<a href="https://{your-pre-aigw-domain}/api/v1/mcp/log-mcp/sse" target="_blank">https://{your-pre-aigw-domain}/api/v1/mcp/log-mcp/sse</a>&#34;</span></span></code><br/><code><span leaf="">    <span class="code-snippet__punctuation">},</span></span></code><br/><code><span leaf="">    <span class="code-snippet__attr">&#34;dw-log-mcp-prd&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;url&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;<a href="https://{your-prd-aigw-domain}/api/v1/mcp/log-mcp/sse" target="_blank">https://{your-prd-aigw-domain}/api/v1/mcp/log-mcp/sse</a>&#34;</span></span></code><br/><code><span leaf="">    <span class="code-snippet__punctuation">},</span></span></code><br/><code><span leaf="">    <span class="code-snippet__attr">&#34;dw-log-mcp-oversea-prd&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;url&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;<a href="https://{your-oversea-aigw-domain}/api/v1/mcp/log-mcp/sse" target="_blank">https://{your-oversea-aigw-domain}/api/v1/mcp/log-mcp/sse</a>&#34;</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/><code><span leaf=""><span class="code-snippet__punctuation">}</span></span></code><br/></pre></p><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">4. 返回设置，就可以看到已经连接上。</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="">安装 /log-diagnosis 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="">将 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">log-diagnosis</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="">Claude Code</span></strong></p></div></div></div></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="perl"><code><span leaf="">your-project/</span></code><br/><code><span leaf="">└── .claude/</span></code><br/><code><span leaf="">    └── skills/</span></code><br/><code><span leaf="">        └── <span class="code-snippet__keyword">log</span>-diagnosis/</span></code><br/><code><span leaf="">            ├── SKILL.md        <span class="code-snippet__comment"># 技能行为规范（核心）</span></span></code><br/><code><span leaf="">            ├── README.md       <span class="code-snippet__comment"># 使用说明</span></span></code><br/><code><span leaf="">            └── reference.md   <span class="code-snippet__comment"># 附录：时间脚本、queryString 示例等</span></span></code><br/></pre></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="">Cursor</span></strong></p></div></div></div></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="perl"><code><span leaf="">your-project/</span></code><br/><code><span leaf="">└── .cursor/</span></code><br/><code><span leaf="">    └── skills/</span></code><br/><code><span leaf="">        └── <span class="code-snippet__keyword">log</span>-diagnosis/</span></code><br/><code><span leaf="">            ├── SKILL.md        <span class="code-snippet__comment"># 技能行为规范（核心）</span></span></code><br/><code><span leaf="">            ├── README.md       <span class="code-snippet__comment"># 使用说明</span></span></code><br/><code><span leaf="">            └── reference.md   <span class="code-snippet__comment"># 附录：时间脚本、queryString 示例等</span></span></code><br/></pre></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="">配置 .diagnosis/config.json</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><strong style="box-sizing: border-box;"><span leaf="">（直接调用 /log-diagnosis，Skill 会一步步指示你给出 secret key）</span></strong><span leaf="">，也可手动在项目根目录创建 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">.diagnosis/config.json</span></span><span leaf="">：</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="perl"><code><span leaf="">your-project/</span></code><br/><code><span leaf="">└── .cursor/</span></code><br/><code><span leaf="">    └── skills/</span></code><br/><code><span leaf="">        └── <span class="code-snippet__keyword">log</span>-diagnosis/</span></code><br/><code><span leaf="">            ├── SKILL.md        <span class="code-snippet__comment"># 技能行为规范（核心）</span></span></code><br/><code><span leaf="">            ├── README.md       <span class="code-snippet__comment"># 使用说明</span></span></code><br/><code><span leaf="">            └── reference.md   <span class="code-snippet__comment"># 附录：时间脚本、queryString 示例等</span></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;"><span leaf="">字段说明：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">secretKey</span></span><span leaf="">：</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 style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">accessToken</span></span><span leaf="">：首次使用时由 AI 自动调用 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">acquireTokenTool</span></span><span leaf=""> 获取，过期自动刷新；</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">accessTokenExpireAt</span></span><span leaf="">：从 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">acquireTokenTool</span></span><span leaf=""> 返回值自动填充；</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">fields</span></span><span leaf="">：调用 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">logFields</span></span><span leaf=""> 工具自动获取。</span></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="">命令格式：</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="bash"><code><span leaf="">/log-diagnosis {环境} {代码分支（可选）} {诉求描述}</span></code></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></p></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 style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="background-color: rgb(214, 214, 214);">{环境}</span>：T1 / PRE / PRD（按实际环境标识填写）；</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="background-color: rgb(214, 214, 214);">{代码分支}</span>：可选，留空则使用当前分支；</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><span textstyle="" style="background-color: rgb(214, 214, 214);">{诉求描述}</span>：包含 traceId 或告警信息的问题描述，用自然语言书写即可。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">示例：</span></p></div></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="bash"><code><span leaf=""><span class="code-snippet__comment"># 用 traceId 定位接口异常</span></span></code><br/><code><span leaf="">/log-diagnosis T1 feature/your-branch trace_id: <span class="code-snippet__string">&#34;your-trace&#34;</span> 为什么最终没有返回数据</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 用告警信息分析错误原因</span></span></code><br/><code><span leaf="">/log-diagnosis PRD master 告警详情：【接口：YourService/yourMethod】【业务码：10002000】【业务码消息：系统异常，请稍后重试】帮我分析问题可能性</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="">一行命令，AI 全程接管，几分钟内给出根因分析。</span></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="">实战案例：一个隐蔽的 SQL BUG</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="">某搜索接口在测试环境反馈没有返回数据。拿到 traceId，直接执行：</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="bash"><code><span leaf="">/log-diagnosis T1 feature/your-branch trace_id: <span class="code-snippet__string">&#34;your-trace&#34;</span> 为什么最终没有返回数据</span></code></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="">← 就这一句话，接下来全部交给 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="">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="">Skill 触发后，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;"><span leaf="">从 traceId 推算出日志时间范围（</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">2026-02-27</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="">检查 accessToken 已过期，自动刷新；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">调用日志平台 MCP，分 2 页拉取完整日志，共 73 条。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">请求入参（从日志自动提取）：</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="json"><code><span leaf=""><span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;assembleByOrg&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__literal"><span class="code-snippet__keyword">true</span></span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;channelType&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;MANUAL&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;orderNo&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;your-order-no&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;status&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__number">1</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;ticketNo&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;your-ticket-no&#34;</span></span></code><br/><code><span leaf=""><span class="code-snippet__punctuation">}</span></span></code><br/></pre></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="">AI 还原完整调用链路</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8351851851851851" 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="100060363" src="https://wechat2rss.xlab.app/img-proxy/?k=20c106d1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtDgs4plHpIer8n3KGC3g5uuTmL69dRr4J8lXvST1jg0MqeibicMFHmT4TiaxJib6zicX8fJ8RIMhHoHC0KG0unib5XH7mmZyEDAicWYE%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 自动识别出关键节点：</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">resultList is empty</span></span><span leaf="">，SQL 查询返回了空结果。问题在 DB 层，而不在业务逻辑层。</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 提取组装后的查询 DTO</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">toSearchDTO</span></span><span leaf=""> 组装结果：</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="json"><code><span leaf=""><span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;channelType&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;MANUAL&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;customerTag&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__number">1</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;deliveryMode&#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__attr">&#34;orderStatus&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;8010&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;orderType&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__string">&#34;0&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;productCategoryIds&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__punctuation">[</span><span class="code-snippet__number">29</span><span class="code-snippet__punctuation">],</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;status&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__number">1</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;ticketSource&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__number">67</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;ticketTypeId&#34;</span><span class="code-snippet__punctuation">:</span> <span class="code-snippet__number">5802</span></span></code><br/><code><span leaf=""><span class="code-snippet__punctuation">}</span></span></code><br/></pre></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="">AI 从日志中提取实际执行的 SQL 发现根因</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="">ORM 框架在日志中打印了实际执行的 SQL，AI 直接读取并分析：</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="sql"><code><span leaf=""><span class="code-snippet__keyword">SELECT</span> a.id, a.pid, a.name, a.mode, a.status, a.org_id, a.org_ids,</span></code><br/><code><span leaf="">       a.ticket_group_id, a.tenant_id, a.is_del, a.channel_types</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">FROM</span> your_type_table a</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">LEFT</span> <span class="code-snippet__keyword">JOIN</span> your_relation_table b</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">ON</span> b.tenant_id <span class="code-snippet__operator">=</span> <span class="code-snippet__number">1</span> <span class="code-snippet__keyword">AND</span> a.id <span class="code-snippet__operator">=</span> b.type_id <span class="code-snippet__keyword">AND</span> b.type <span class="code-snippet__operator">=</span> <span class="code-snippet__number">3</span> <span class="code-snippet__keyword">AND</span> b.is_del <span class="code-snippet__operator">=</span> <span class="code-snippet__number">0</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">WHERE</span> a.tenant_id <span class="code-snippet__operator">=</span> <span class="code-snippet__number">1</span> <span class="code-snippet__keyword">AND</span> a.mode <span class="code-snippet__operator">=</span> <span class="code-snippet__number">2</span> <span class="code-snippet__keyword">AND</span> a.is_del <span class="code-snippet__operator">=</span> <span class="code-snippet__number">0</span></span></code><br/><code><span leaf="">  <span class="code-snippet__keyword">AND</span> a.status <span class="code-snippet__operator">=</span> <span class="code-snippet__number">1</span></span></code><br/><code><span leaf="">  <span class="code-snippet__keyword">AND</span> (a.channel_types <span class="code-snippet__keyword">IS</span> <span class="code-snippet__keyword">NULL</span> <span class="code-snippet__keyword">OR</span> a.channel_types <span class="code-snippet__operator">=</span> <span class="code-snippet__string">&#39;&#39;</span> <span class="code-snippet__keyword">OR</span> FIND_IN_SET(<span class="code-snippet__string">&#39;MANUAL&#39;</span>, a.channel_types) <span class="code-snippet__operator">&gt;</span> <span class="code-snippet__number">0</span>)</span></code><br/><code><span leaf="">  <span class="code-snippet__keyword">AND</span> (b.root_id <span class="code-snippet__keyword">is</span> <span class="code-snippet__keyword">null</span> <span class="code-snippet__keyword">or</span> b.root_id <span class="code-snippet__keyword">in</span> (<span class="code-snippet__number">29</span>))</span></code><br/><code><span leaf="">  <span class="code-snippet__keyword">AND</span> (a.order_types <span class="code-snippet__keyword">IS</span> <span class="code-snippet__keyword">NULL</span> <span class="code-snippet__keyword">OR</span> a.order_types <span class="code-snippet__operator">=</span> <span class="code-snippet__string">&#39;&#39;</span> <span class="code-snippet__keyword">OR</span> FIND_IN_SET(<span class="code-snippet__string">&#39;0&#39;</span>, a.order_types) <span class="code-snippet__operator">&gt;</span> <span class="code-snippet__number">0</span>)</span></code><br/><code><span leaf="">  <span class="code-snippet__keyword">AND</span> (a.order_statuses <span class="code-snippet__keyword">IS</span> <span class="code-snippet__keyword">NULL</span> <span class="code-snippet__keyword">OR</span> a.order_statuses <span class="code-snippet__operator">=</span> <span class="code-snippet__string">&#39;&#39;</span> <span class="code-snippet__keyword">OR</span> FIND_IN_SET(<span class="code-snippet__string">&#39;8010&#39;</span>, a.order_statuses) <span class="code-snippet__operator">&gt;</span> <span class="code-snippet__number">0</span>)</span></code><br/><code><span leaf="">  <span class="code-snippet__keyword">AND</span> (a.delivery_modes <span class="code-snippet__keyword">IS</span> <span class="code-snippet__keyword">NULL</span> <span class="code-snippet__keyword">OR</span> a.delivery_modes <span class="code-snippet__operator">=</span> <span class="code-snippet__string">&#39;&#39;</span> <span class="code-snippet__keyword">OR</span> FIND_IN_SET(<span class="code-snippet__string">&#39;某配送方式&#39;</span>, a.delivery_modes) <span class="code-snippet__operator">&gt;</span> <span class="code-snippet__number">0</span>)</span></code><br/><code><span leaf="">  <span class="code-snippet__keyword">AND</span> (a.ticket_sources <span class="code-snippet__keyword">IS</span> <span class="code-snippet__keyword">NULL</span> <span class="code-snippet__keyword">OR</span> a.ticket_sources <span class="code-snippet__operator">=</span> <span class="code-snippet__string">&#39;&#39;</span> <span class="code-snippet__keyword">OR</span> FIND_IN_SET(<span class="code-snippet__number">67</span>, a.ticket_sources) <span class="code-snippet__operator">&gt;</span> <span class="code-snippet__number">0</span>)</span></code><br/><code><span leaf="">  <span class="code-snippet__keyword">AND</span> (a.customer_tag <span class="code-snippet__keyword">IS</span> <span class="code-snippet__keyword">NULL</span> <span class="code-snippet__keyword">OR</span> a.customer_tag <span class="code-snippet__operator">=</span> <span class="code-snippet__number">1</span>)   ← BUG 在此</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="">AI 发现：其他字段都处理了 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">IS NULL</span></span><span leaf=""> 和 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">= &#39;&#39;</span></span><span leaf="">（空字符串代表 “不限制”）两种情况，唯独 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">customer_tag</span></span><span leaf=""> 只判断了 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">IS NULL</span></span><span leaf="">，遗漏了空字符串 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">&#39;&#39;</span></span><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="">SQL 语义对比：</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="objectivec"><code><span leaf="">-- 其他字段（正确）：IS <span class="code-snippet__literal">NULL</span> 和 <span class="code-snippet__string">&#39;&#39;</span> 都处理了</span></code><br/><code><span leaf="">AND (a.order_types IS <span class="code-snippet__literal">NULL</span> OR a.order_types = <span class="code-snippet__string">&#39;&#39;</span> OR FIND_IN_SET(<span class="code-snippet__string">&#39;0&#39;</span>, a.order_types) &gt; <span class="code-snippet__number">0</span>)</span></code><br/><code><span leaf="">AND (a.delivery_modes IS <span class="code-snippet__literal">NULL</span> OR a.delivery_modes = <span class="code-snippet__string">&#39;&#39;</span> OR FIND_IN_SET(<span class="code-snippet__string">&#39;某配送方式&#39;</span>, a.delivery_modes) &gt; <span class="code-snippet__number">0</span>)</span></code><br/><code><span leaf="">AND (a.ticket_sources IS <span class="code-snippet__literal">NULL</span> OR a.ticket_sources = <span class="code-snippet__string">&#39;&#39;</span> OR FIND_IN_SET(<span class="code-snippet__number">67</span>, a.ticket_sources) &gt; <span class="code-snippet__number">0</span>)</span></code><br/><code><span leaf="">-- customer_tag（遗漏了 = <span class="code-snippet__string">&#39;&#39;</span> 的判断）← BUG</span></code><br/><code><span leaf="">AND (a.customer_tag IS <span class="code-snippet__literal">NULL</span> OR a.customer_tag = <span class="code-snippet__number">1</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;"><span leaf="">DB 中现有的数据，</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">customer_tag</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="">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="">AI 在代码中直接找到对应的 MyBatis Mapper XML：</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="xml"><code><span leaf=""><span class="code-snippet__comment">&lt;!-- 问题代码 --&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">if</span></span><span class="code-snippet__tag"><span class="code-snippet__attr">test</span></span><span class="code-snippet__tag">=</span><span class="code-snippet__tag"><span class="code-snippet__string">&#34;customerTag != null&#34;</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/><code><span leaf="">    and (a.customer_tag IS NULL OR a.customer_tag = #{customerTag})</span></code><br/><code><span leaf=""><span class="code-snippet__tag">&lt;/</span><span class="code-snippet__tag"><span class="code-snippet__name">if</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/><code><span leaf=""><span class="code-snippet__comment">&lt;!-- 修复后 --&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">if</span></span><span class="code-snippet__tag"><span class="code-snippet__attr">test</span></span><span class="code-snippet__tag">=</span><span class="code-snippet__tag"><span class="code-snippet__string">&#34;customerTag != null&#34;</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/><code><span leaf="">    and (a.customer_tag IS NULL OR a.customer_tag = &#39;&#39; OR a.customer_tag = #{customerTag})</span></code><br/><code><span leaf=""><span class="code-snippet__tag">&lt;/</span><span class="code-snippet__tag"><span class="code-snippet__name">if</span></span><span class="code-snippet__tag">&gt;</span></span></code><br/></pre></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="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.3861111111111111" 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="100060360" src="https://wechat2rss.xlab.app/img-proxy/?k=4f9a7490&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtgbUicAGuj2fE8ZlqHQIymWicPqesVLcJ4sJvBghaoLQ2j4vrUvic9AFa6IPk31UiaeG9LibDDMJSbkyt5YQHfJog8l8IHQCUmk0G4%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="">这个 BUG 的隐蔽性在于：SQL 语法正确，逻辑上也「看起来」没问题——只有对比了其他字段的写法，才能发现 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">customer_tag</span></span><span leaf=""> 独自遗漏了空字符串的处理。这类细节差异，人工排查很容易忽略，AI 反而很擅长。</span></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><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-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">有 traceId 时优先用 traceId 拉日志，可精准获取单次请求的完整链路，比关键词搜索精确得多；</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(218, 218, 218);box-sizing: border-box;"><span leaf="">toSearchDTO finished</span></span><span leaf=""> / </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">search begins</span></span><span leaf=""> / </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">resultList is empty</span></span><span leaf=""> / </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">search finished</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="">SQL 打印日志（ORM 框架输出）是黄金线索，直接反映最终执行的查询条件，AI 能从中发现肉眼难以察觉的差异；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">分页必须拉完：日志平台一次只返回部分数据，AI 会严格执行分页直到取完，确保不遗漏关键日志。</span></p></li></ul></p><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;"><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="">核心思路：用「协议 + 规范」让 AI 接管固定流程：</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这篇文章的本质，是一次对重复性工程劳动的自动化尝试。调 BUG 的过程——查日志、提取关键信息、找代码、分析原因——逻辑固定，步骤繁琐，但并不需要太多创造性思维。这类工作恰好是 AI 最擅长接管的。</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="">MCP：</span></strong><span leaf="">让 AI 能够调用外部系统（日志平台），突破了「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="">Skill：</span></strong><span leaf="">给 AI 一份行为规范，告诉它每一步该怎么做、先做什么后做什么、遇到什么情况怎么处理，把「一次性对话」变成「可复用的工程化能力」。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">两者缺一不可。只有 MCP，AI 能查日志但不知道怎么系统地分析；只有 Skill，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></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;"><span leaf="">识别「固定流程」是自动化的起点：</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">不是所有工作都适合 AI 接管，但凡是「步骤固定、信息来源明确、输出格式可预期」的工作，都值得尝试用 Skill + MCP 的方式来自动化。排查 BUG 是一个典型，类似的还有：代码审查、性能分析报告生成、告警巡检等。</span></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;"><span leaf="">Skill 的本质是「给 AI 写操作手册」：</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Skill 文件不是在「训练模型」，而是在给 AI 一份清晰的 SOP。写得越细、约束越明确（比如「禁止只查第一页就下结论」「必须分页拉完所有数据」），AI 的执行质量越稳定。这和写给人看的文档本质上是一回事。</span></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;"><span leaf="">AI 擅长发现「横向对比」类的 BUG：</span></p></li></ul><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="">最后说一句：AI 时代，工程师的核心竞争力不只是「能写代码」，更是「能把自己的经验和流程转化成可复用的 AI 能力」。<span textstyle="" style="background-color: rgb(214, 214, 214);">/log-diagnosis</span> 是一次小小的尝试，但背后的思路，值得在更多场景里延伸。</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=2247544006&amp;idx=1&amp;sn=77bc608620d81c44a996464dae407857&amp;scene=21#wechat_redirect" textvalue="Redis 自动化运维最佳实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Redis 自动化运维最佳实践｜得物技术</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=2247543910&amp;idx=1&amp;sn=a17a16f6fe78ff1a0940387ecf5137c8&amp;scene=21#wechat_redirect" textvalue="Claude在得物App数仓的深度集成与效能演进" data-itemshowtype="0" linktype="text" data-linktype="2">Claude在得物App数仓的深度集成与效能演进</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=2247543887&amp;idx=1&amp;sn=4b040af63cd6575b636c2378f6d1d511&amp;scene=21#wechat_redirect" textvalue="Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术</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=2247543834&amp;idx=1&amp;sn=1f5dab2bdd20e7fd77e9fe1102986d1c&amp;scene=21#wechat_redirect" textvalue="大禹平台：流批一体离线Dump平台的设计与应用｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">大禹平台：流批一体离线Dump平台的设计与应用｜得物技术</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=2247543805&amp;idx=1&amp;sn=bafc980cb5dd8750aefa75353bcd1eab&amp;scene=21#wechat_redirect" textvalue="基于 Cursor Agent 的流水线 AI CR 实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">基于 Cursor Agent 的流水线 AI CR 实践｜得物技术</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="100060364" src="https://wechat2rss.xlab.app/img-proxy/?k=180757e0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsnWzLYEmXXmQeZHUxrfHd0wWo3hgvwl7k1zzVZd52ww1DQTf99bUmKgAWozu8HYqgkliaSGsbib07Bo6oHfvbMHq8YShRGiaSKdk%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=ad69a1e8&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544017%26idx%3D1%26sn%3Deaceee1d1f4f672b2dd630a1b235eda3">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 01 Apr 2026 18:31:00 +0800</pubDate>
    </item>
    <item>
      <title>Redis 自动化运维最佳实践｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247544006&amp;idx=1&amp;sn=77bc608620d81c44a996464dae407857</link>
      <description>自建 Redis 平台自动化运维能力建设，覆盖资源调度、集群生命周期管理、工单自动化、智能告警与常态化巡检等全场景，实现运维规范化、标准化与无人化，大幅提升运维效率，保障 Redis 服务高稳定、高可靠运行。</description>
      <content:encoded><![CDATA[<p>原创 <span>陌叶</span> <span>2026-03-30 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=252f8c2d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsAAI3NSk0o3IuUbEhgRNDFWTeHdgLTkkSEHnEic5Xib3oFyqBUMy3ia5DcAat0OSxfywiaNp9jutu0nPzfUuC70P41Sicicw6mARibiaA%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>自建 Redis 平台自动化运维能力建设，覆盖资源调度、集群生命周期管理、工单自动化、智能告警与常态化巡检等全场景，实现运维规范化、标准化与无人化，大幅提升运维效率，保障 Redis 服务高稳定、高可靠运行。</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="">    1.Redis使用现状</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 data-pm-slice="0 0 []"><span leaf="">    1.资源池自动化均衡调度</span></p><p><span leaf="">    2.资源池分级维护和管理</span></p><p><span leaf="">    3.集群生命周期自动化管理</span></p><p><span leaf="">    4.工单自动化</span></p><p><span leaf="">    5.查询自动化</span></p><p><span leaf="">    6.告警自动化处理</span></p><p><span leaf="">    7.自动化巡检推送</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、总结</span></p></div></div></div></div></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="">随着业务规模与流量的持续高速增长，自建 Redis 集群面临着更高地性能与稳定性要求，对平台化、自动化运维能力也提出了新的挑战。为进一步提升资源利用效率、保障服务稳定运行，并更好地支撑业务快速发展，我们对 Redis 平台进行了自动化能力的建设与升级，通过系统化的平台能力优化，降低人工运维费力度，提升整体运维效率与服务质量。</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="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.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="100060306" src="https://wechat2rss.xlab.app/img-proxy/?k=84b98870&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvr95RXKxxYEqHPJcVic9UZjgzU4y1wlXGhdQD4qswMwbGyVutcf4iblHDic3Yu8mFyjsO1WXZtpU2GfUdR82iaWlbiaRkoBx8dLrko%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="">Redis 集群目前基于 ECS 进行部署，采用单机多实例、主从混合部署的架构模式，并将 Proxy 组件与数据节点混合部署，以提升 CPU 资源利用率与整体部署密度。当前集群已达到百 TB 级存储规模、数十万数据节点，支撑超大规模业务场景的稳定运行。</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></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="">自建 Redis 由 ConfigServer、Redis-Proxy、Redis-Server 等核心组件构成。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">自建 Redis 2.0（SDK标准版） 整体架构图如下所示：</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;width: 90%;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="100060304" src="https://wechat2rss.xlab.app/img-proxy/?k=38a43f93&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvIic1nWmficeFLrFK20KajaLfwgrWrE8pS302ZfnbD6ibSyxTjvT448NR8aZCs72nnkvdABv7Jib1qNNlsWH5eiaoxmtooQVXlcV10%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: 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="">ConfigServer</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="">ConfigServer 是自建 Redis 系统中关键组件之一，跨多可用区多节点部署，采用 raft 协议实现 ConfigServer 组件高可用；ConfigServer 主要负责两方面职责：</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="">负责 Proxy 添加与删除、group 创建与删除、Redis-server 实例添加与删除、Redis-server 实例手动主从切换、水平扩容与数据迁移等功能操作。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">负责 Redis-server 实例故障检测与自动故障转移（主节点故障后自动主从切换）。</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="">Redis-Proxy</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="">Redis-Proxy 组件是自建 Redis 系统中的代理服务，负责接受客户端连接，然后转发客户端命令到后端相应的 Redis-server 实例，使得后端 Redis-server 集群部署架构对业务透明，Proxy 支持 Redis RESP 协议，业务访问 Proxy 就像访问一个单点 Redis 服务一样，业务可以把一个自建 Redis 集群当作一个容量无限大的单点 Redis 实例即可。</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="">Redis-Server（Redis-Group）</span></strong></p></div></div></div></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><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: 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-server 组件为开源 Redis 版本基础上，增加槽 slot 同步迁移与异步迁移等相关功能；支持原生开源 Redis 的所有特性，比如支持 String、Hash、List、Set、ZSet 等常用数据结构，AOF 持久化、主从复制、Lua脚本等等。默认一主一从，可支持多从部署。</span></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="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.948559670781893" data-s="300,640" data-type="png" data-w="972" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060350" src="https://wechat2rss.xlab.app/img-proxy/?k=318d0153&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvWbq7vibj90XGzibkOElia6rofPkCWiaIhiaTPOV4H7cpw98ibKON9BFobe4ibYFHHqeOukUGb5xsN7Sf2PYcz0AwkaU5uC3AyTlJz4g%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 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="">当前 Redis 资源池支持按内存使用率自动化均衡调度、按内存分配率自动化均衡调度、按 CPU 使用率均衡调度、支持指定机器凌晨迁移调度（隐患机器提前维护、凌晨资源池迁移优化下线等）等功能，核心流程为合理选择迁移节点。现在每天定时生成迁移计划，迁移任务默认每天凌晨定时执行。</span></p></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.37777777777777777" 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="100060303" src="https://wechat2rss.xlab.app/img-proxy/?k=398eccc1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvM85mjicB6j3WBiczuTj0RyeT1YC9KlUIuibbJHiaQwsY15od51CUF9SiawibKeEhq1yWPEOfG2rOYAFvHLUneokaIFdqiaanyEkKJ0k%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="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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="">迁移 server 节点选择算法流程图</span></strong></p></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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.30185185185185187" 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="100060305" src="https://wechat2rss.xlab.app/img-proxy/?k=7c7334b1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuy7nfCxqII8nbbkDnFwQAoax2C0FQF5ObTUdKSX8jib1k3uyuoDRR8ndsliaLAgMtwfz1PVjm2T22ZCalGxuRaGia1dsuLDJZP5o%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="">Redis 潮汐调度算法示意</span></p></div><div style="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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="">选择 Server 节点原则</span></strong></p></div></div></div></div></div></div></div><p style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><ol style="list-style-type: decimal;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><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></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="">优先实例等级为非 P0 的实例。</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="">分配率和内存容量一样，优先节点规格中等规格（1-4G）实例，再选择 1G-5G 规格实例，最后选择其他规格的节点。</span></p></li><li style="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="">去掉同一个集群同一个分组的 master 节点，避免对同一 group 分组进行操作。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">对于需要维护和迁移优化的机器上的 proxy：</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">获取原来 proxy 版本，资源标签等信息，判断是否是特殊作用 proxy，部署新 proxy。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">调整旧 proxy：对于 sdk proxy 禁用 proxy，对于 slb 下 proxy，调整权重。</span></p></li></ol></p><div style="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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="">选择 server 迁移任务流程图</span></strong></p></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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.1355140186915889" data-s="300,640" data-type="png" data-w="856" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060310" src="https://wechat2rss.xlab.app/img-proxy/?k=202028c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv1UsK76w9TdFJ7SwgSzjtr1XYKm3JDZugvicuXNicHQHOTuaGHE3J7n2XPPQiat1CJdHaXXGGJZic1tib3HSRuxBib5ibWmJBicOpXQOo%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div 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;"><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="">同步数据完成后如果迁移节点是从则删除节点；</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="">如果迁移节点是主进行主从切换后检查新主从关系，检查 proxy 拓扑更新等，如果有异常则告警迁移。</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: 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="">迁移 proxy 节点选择算法流程图</span></strong></p></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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.13518518518518519" 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="100060308" src="https://wechat2rss.xlab.app/img-proxy/?k=94b7c3e6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtEEUG76ibAYl43OsomFHJx7yCz2utiaiamgMGLjavkExibzPvp3reSSPF3Vr8gqicqZQzAZlkoAP7a9YbCJyn92S3nKI5zFIPHT79g%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="">proxy 节点选择流程图</span></p></div><div style="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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="">选择 Proxy 节点原则</span></strong></p></div></div></div></div></div></div></div><p style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ol style="list-style-type: decimal;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="">优先机器 CPU 负载峰值高的机器上 Proxy 节点；均衡调度阈值支持可配置，后续均衡后继续调整。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">需要先采集到 proxy 24 小时 CPU 峰值，排序后优先迁移机器上 CPU 峰值最高的，直到机器 CPU 峰值降到均衡调度阈值。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">每台机器每天只迁移 1 个 proxy。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">判断 proxy CPU 峰值高的个数（如果只有一个就不处理，如果大于等于 3 个 proxy CPU 峰值高则处理一个（超过配置的均衡调度阈值算高 CPU 使用率））。</span></p></li></ol></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;"><span leaf=""><span textstyle="" style="font-weight: bold;">Proxy 迁移任务流程图:</span></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8484162895927602" data-s="300,640" data-type="png" data-w="884" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060312" src="https://wechat2rss.xlab.app/img-proxy/?k=70e9754f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuB81m68Ad9ribEUYiaqibRJy8uicSp70c6OIK3D1ps3ItqwoJ4qjVtJtiaKZo4QicAicheX6PBOksXU4MkC7DQ97OZ8c4Ys1iasJ2icEcc%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-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="">获取原来 proxy 版本，资源标签等信息，判断是否是特殊作用 proxy，部署新 proxy；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">新 proxy 绑定 LB；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">调整旧 proxy：对于 sdk proxy 禁用 proxy，对于 slb 下 proxy，调整权重。</span></p></li></ul></p><div style="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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><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="">提升资源池内存与 CPU 利用率，优化整体资源使用效率。</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><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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="">资源池分级维护和管理</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="">对 ECS 机器资源和 LB 资源进行打标，根据特殊业务需要做不同资源池的隔离调度。</span></p></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.265625" 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/mmbiz_jpg/FMFU1P6sHHsG7C00HVhNKnbxon0ZNibQvecS7svNWnuOe3yCHdibiat1w4nIKMZqq4LrvN4lBll3pQZaAnTZfgr2piaBJAZyQqogZTP3FlKGScU/0?wx_fmt=jpeg&amp;from=appmsg" data-cropselx2="520" data-cropsely2="138" data-imgfileid="100060345" src="https://wechat2rss.xlab.app/img-proxy/?k=0c7fdc51&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsG7C00HVhNKnbxon0ZNibQvecS7svNWnuOe3yCHdibiat1w4nIKMZqq4LrvN4lBll3pQZaAnTZfgr2piaBJAZyQqogZTP3FlKGScU%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="">可对资源进行多维度筛选：比如按资源标签、CPU、可用区、是否重保等维度筛选。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.1875" 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/FMFU1P6sHHs09vuzMCwiaFqQiaEX808cGlAMhECPoQnPyXxXpulN9yDCn19ickuzfnzCcVqh3sfIk9679RY3MAJ0vsT3p3E4HK6jE9UfGt70GY/0?wx_fmt=jpeg&amp;from=appmsg" data-cropselx2="520" data-cropsely2="98" data-imgfileid="100060346" src="https://wechat2rss.xlab.app/img-proxy/?k=11d75031&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHs09vuzMCwiaFqQiaEX808cGlAMhECPoQnPyXxXpulN9yDCn19ickuzfnzCcVqh3sfIk9679RY3MAJ0vsT3p3E4HK6jE9UfGt70GY%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="">可对机器上部署的节点信息进行迁移操作和查看机器详细监控等。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.23425925925925925" 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="100060315" src="https://wechat2rss.xlab.app/img-proxy/?k=8084c007&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsz5KRniczK2xMs9YgFz7BLgreoccLkmTC3Ylj6gPgQM3X0AGuf0Q8vSWD0DzXHV6YxnNRw25eYbWWvNPpBnxM2dJLENfcvjYHg%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="">物理资源隔离：自建 Redis 通过对 ECS 机器资源打标，实现重保集群隔离，支持集群物理隔离，减少集群相互影响，支持资源分级维护和灰度测试验证，减少大面积变更影响，使用相对保守的资源水位阈值来减少重保集群的运维频次和任务调度。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4898148148148148" 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="100060317" src="https://wechat2rss.xlab.app/img-proxy/?k=519a5ead&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuBIibjE4vr4OPSGpF6V2LRTy2BDP7gvF8sDZeW2gfX9a35c5sam1GcOUZyUxJ9Kwt10MRH7IgbbqHOVSzgUDUXMib0gnzOVxoeY%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="">Redis 资源池隔离方案示意</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-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.1046875" 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/FMFU1P6sHHuOxr13rJykjNA6vhQw4BDjsZZB6rcI5K5mabqRn0rzbZ2KsGianJmN7LMmXMxacW2oQVXtAqZLUr7xxuKr4kqOtamJwvrcam8Y/0?wx_fmt=jpeg&amp;from=appmsg" data-cropselx2="520" data-cropsely2="55" data-imgfileid="100060347" src="https://wechat2rss.xlab.app/img-proxy/?k=6dde9b4d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuOxr13rJykjNA6vhQw4BDjsZZB6rcI5K5mabqRn0rzbZ2KsGianJmN7LMmXMxacW2oQVXtAqZLUr7xxuKr4kqOtamJwvrcam8Y%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 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="">集群生命周期自动化管理</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-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="">当前 Redis 支持自动化集群部署，集群交付时间缩短至分钟级。</span></p></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.21481481481481482" 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="100060314" src="https://wechat2rss.xlab.app/img-proxy/?k=57f3144e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsTy5lbPh2jkdqfL09b9rsISj58jfrbUBnl5bkf3Nuqicic41hdDLeIT2tmpbYPtHufOzMJbQWvxQPa7hZiaL1J2O2AqcmlaBr0qU%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;box-sizing: border-box;"><div style="display: inline-block;width: 53%;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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9814814814814815" 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="100060316" src="https://wechat2rss.xlab.app/img-proxy/?k=f4584f66&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHssMyN0P3ckDuT1lic1GhPHibiawhgVRGqlO88cyfDKfFqgHxvY45RCjOXWXg4ibWpAQQYp43XpMMn7OKicKkGQicgwTde246gIhfWBA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;width: 47%;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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.1359223300970873" data-s="300,640" data-type="jpeg" data-w="927" style="vertical-align:middle;max-width:100%;width:242px;box-sizing:border-box;height:275px;" data-croporisrc="https://mmbiz.qpic.cn/sz_mmbiz_jpg/FMFU1P6sHHu3rvm6Q8x6ia2fYHkG7MeUbPO9RGdktraGpib3bDzibLIibr6G0Jvt6YGM753YBib7RkAIudVTMZkntzvK7eQmjZqf2Q4QBhVSKtSY/0?wx_fmt=jpeg&amp;from=appmsg" data-cropx2="927.016129032258" data-cropy2="1053.4274193548388" data-imgfileid="100060351" src="https://wechat2rss.xlab.app/img-proxy/?k=fd7a85fd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHs5qj4LcCH60lXibZfgdGB1pWeo7uG5RCKWb5Kfa3hVglb2ibIyvGfO7svyoiahiaEpicZERcqwxKmM97dkJVGv9KV7ahZYLODfWzvU%2F640%3Fwx_fmt%3Djpeg"/></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;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;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: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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></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="">当前 Redis 支持 server 垂直扩缩容，ecs-proxy、docker-proxy 扩容等工单自动化操作。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3675925925925926" 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="100060319" src="https://wechat2rss.xlab.app/img-proxy/?k=dd27ee82&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsiafUTamK69g5wS2cRZ1ic8g2ib1ydNic9RMIjpibQpzicwptRcLmBiaXLpLZc7KIDnckYXMEt4ibBibfic4EEia2KAeUkRUel55Sic4kpa8M%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-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="">集群 server 垂直扩缩容，ecs-proxy、docker-proxy 扩容等场景在业务提单时给出扩缩容方案和校验，实现工单自动化操作。</span></p></div><div style="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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></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="">当前 Redis 支持 server 自动扩容分片，以支持更高的请求和负载。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.13148148148148148" 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="100060318" src="https://wechat2rss.xlab.app/img-proxy/?k=5a78b63f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHvOjFTMnz7icU1ZWgSicQ52sw2bSsW6zqBpv1VibRztuMKqVJWOdPdzuiatjJGy8ATPaArBAr7JUA4jENB42xHSBnLsIPY97zQf778%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="">Server 水平扩缩容任务管理</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.29814814814814816" 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="100060321" src="https://wechat2rss.xlab.app/img-proxy/?k=c28ff3f3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuwdtLhZe3xf32dAVrmZRytRwk8CicdKM3yHn5kLBlR2nuoMjFr8mVSmiaufgwicHM9SYfPKIeErjo0EYRmBZ0TgTjPb2ueet5k1I%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="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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></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="">当前 Redis下线回收，支持立即销毁和重建恢复。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18055555555555555" 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="100060320" src="https://wechat2rss.xlab.app/img-proxy/?k=e5508ccc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHveqQhnkSgUx31UibasBibCqZqhR5ujwaWIImtC8icw5eHAAwLIAFyGGUxCpImju9hicS2q6gz1FKOyGyFNibQuaMoN8fzf2wjBtgIo%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><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-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">工单审批通过后立即下线接入层：检测 proxy（ecs-proxy 和 docker-proxy）连接和 qps 请求，都没有则调整权重，下线接入层（ecs-proxy 和 docker-proxy）。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">7 天内如有反馈问题，需要继续访问，则重建恢复集群正常访问。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">7 天后无反馈下线集群所有资源（包括数据层数据，这里下线后不再支持回收重建）。</span></p></li></ul></p><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.13333333333333333" 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="100060323" src="https://wechat2rss.xlab.app/img-proxy/?k=adc191d3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHsd6FvLq39AoomTTuxUoxlZTibZgzviaSe1ghdUib2JPDo0NKMvmUGUZOtAXCSE44W5AIMRk2KCcLgkBu91uls4V8HTticQIITy3icE%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="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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="">大 key 删除支持产品化可回滚</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="">支持自建 Redis 和云 Redis 多 db 大 key 删除可回滚。支持控制台大 key 删除任务管理（立即执行删除、定时删除、回滚等）。</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;width: 55%;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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.15648148148148147" 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="100060326" src="https://wechat2rss.xlab.app/img-proxy/?k=1212554f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHscAiaftyxMNRWI2EsYAicsPxDwy9jdvzvkQkXic7HCS7vaJZ9p9Y6NV8yAIYaGRWx9EKc4qu1rVhLxNkxE8nHicBHu17WlGdJbC1s%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;width: 45%;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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.18703703703703703" 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="100060324" src="https://wechat2rss.xlab.app/img-proxy/?k=a65f24f9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHvMIqINiaHDtmZX6uE8EY3u0lV4aP2zehTqNH7lF7dm9tsrvXKh5nG4eUUjLn0EuzcZllHvFPXAslsic3RynGSsIUXJ2pqaO2HZg%2F640%3Fwx_fmt%3Djpeg%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: 50%;align-self: flex-start;flex: 0 0 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: 50%;align-self: flex-start;flex: 0 0 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="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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></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-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><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.11388888888888889" 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="100060327" src="https://wechat2rss.xlab.app/img-proxy/?k=7e85985a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHt10RhiaXfJxUgCTf6ibOmNscv6SzhNbaZrvYnTVuNNSnjicGgZicxRZVvfClccJ2wutibqYPqtHxVbJ0n0QRvfZPUWdawWUUibMXCaM%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div><div style="font-size: 15px;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="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.13333333333333333" 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="100060325" src="https://wechat2rss.xlab.app/img-proxy/?k=a1eb62d9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHvzAz4ac3GejfYsgc4JhLiczhI7ShTZvfbic1TaRkg8L9q188IEvFWIibeia8m0yHiaBah9aSQ5wicHsuQzpAoWFez6JmHLfZIySjPDc%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="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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="">工单自动化</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3444444" 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="100060353" src="https://wechat2rss.xlab.app/img-proxy/?k=41c43b87&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsWiac3G7L9RcSFCkXCAlUXFq1WBPsUiazzJ2HDia4bxBJrZHEX1Gk8r41TupGRbjMRJybwG0THqSVscNqWW2via6rqHtr3TVqZYFw%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当前所有运维工单都已完成工单自动化，如 Biz 申请、创建实例、密码申请、权限申请、实例升降配、实例架构升级、Server 版本升级、Server 水平扩容、删除 key、下线实例等均完成工单自动化。业务提单审批通过后自动校验执行，执行完成后自动发送工单执行结果通知。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">总结：除了需求描述性（云 Redis 需求）的工单，其他均实现操作工单化标准化，工单自动化。</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;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="">集群控制台支持命令查询、Key 模糊查询、Key 随机采样等，查询结果也支持 json 格式化、复制等功能。</span></p></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2777777777777778" 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="100060328" src="https://wechat2rss.xlab.app/img-proxy/?k=5df8b9f3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHstF34EcyW6F5romdljdUSBDeiafk6Ljn7rhnpMJ2Fiamm7NjLtZ5njdRNY0iakrnueqEzz7jhujgEicVWdYZsWlJ3B2MsribJd7lLg%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="">支持查询历史缓存，查询耗时记录等。</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-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.5037037037037037" 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="100060356" src="https://wechat2rss.xlab.app/img-proxy/?k=f59c20c3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHt2cicrHLW9hLhZfRiaibzwbde1zpVgBFO3CoDUr1iconI9y0IiaNTg4CHsBCTWFvxhQPrPPaT3wXEzecskLAjAhEYe7FvekYcoXKEI%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="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-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.49074074074074076" 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="100060357" src="https://wechat2rss.xlab.app/img-proxy/?k=2b20f776&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsVOotST4YaL3Do31NEskyZzmUfSHyibdqGNDru1jG1jzHR6zBYX2uCkg5qdOGffVuXpsG4FBibE4PpLZ8awDBqqGnjpPicxnm9CE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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-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><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">将告警信息按集群所属发送到对应的业务域：同一集群可能存在多个业务方使用，根据业务域纬度增加业务域大群告警通知，提高告警业务感知能力。</span></p></li></ul></p></div></div><div style="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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="">Server 分片内存容量告警自动扩容</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="">自建 Redis 支持业务配置自动扩容，当集群容量超过预警水位线 80% 时，可自动进行垂直扩容，不需要人工介入运维，对业务无感，自动扩容在夜间无人值守的场景下，大大降低了集群容量激增带来的风险。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.21388888888888888" 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="100060330" src="https://wechat2rss.xlab.app/img-proxy/?k=ccdd0fe6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsm99BRoDBKXv0dD2AJk2LhRpo9l4bF3icayhMxVibRPu51S0f10ib1pSI94gRRcxp42icLwianflDg5VU5uIQic6QX3d6kOiciccaK2Cs%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="">Redis 自动扩容开关</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="">Server 自动扩容流程图：</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2490740740740741" 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="100060334" src="https://wechat2rss.xlab.app/img-proxy/?k=99458f1d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHs6xBzvsiaS4SeX00icA1iaLIKIZG3Jz9gUmrHfScibxf83Ish07eXsm3w4gcWXlcPHfpV0mxynVHmuHcvAnib3KAtPgHicenjeouTMs%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="">Redis 自动扩容流程图</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-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">管控周期性任务获取监控平台 Redis 内存使用率超过 80% 的监控信息。</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="">判断节点是否超过集群设置的 80% 扩容阈值。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">判断最近一天是否扩容次数大于 3 次：如果 24 小时内扩容多次，说明可能增长异常，需要让告警发出。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">判断扩容后容量是否大于设置的最大阈值（8G）：这里单个节点最大值为 8G，方便维护。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">预检查扩容后分配是否大于机器内存：自动扩容后分配容量不能大于机器容量。如果大于机器容量则记录扩容失败信息，如果小于则可执行扩容操作，扩容操作后再持久化参数到 Redis 配置文件，然后记录节点扩容成功。</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="">宕机场景告警收敛与自动化处理</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-top: 10px;margin-bottom: 10px;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.4398148148148148" 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="100060336" src="https://wechat2rss.xlab.app/img-proxy/?k=2f46fb31&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtpLmILhkE7F9BNoAq7KvhKGvlkueyiciahd3WRQRico0pcpTauHdX2DrSt8RgGakJNejicqREicM7MmUFLUWPwYluU8riaicAbk7rBicg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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-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="">Redis server 和 proxy Down 告警信息入库；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Redis server 和 proxy Down 告警触发后判断所属机器是否有宕机事件；</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="">如果告警所属机器有机器宕机事件，则判断告警时间是否超过 5 分钟，如果 5 分钟后告警还没恢复则当前节点自动拉起失败，发送电话告警和飞书告警消息通知。如果节点自动拉起成功，则不会再触发告警。</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="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="">针对夜间 Redis 实例机器宕机，引入自动化巡检和自动重启机制，减少夜间运维成本，提高夜间故障集群主备完整性恢复效率。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.23981481481481481" 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="100060335" src="https://wechat2rss.xlab.app/img-proxy/?k=1f753484&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHve60kfEZhS1gqKQZcIwmdR4DpgRKaMLAZibrbCr6qkD3EicOyQUet5ZTebiacY5ibAvGcQIeNqRaibnucz2chs0JLLDzUibwPJ25lrA%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="">Redis 宕机自动恢复示意图</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-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><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">重启宕机上的节点，如果返回失败加入事件队列，支持重试 3 次；</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><div style="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">将告警信息按集群所属发送到对应的业务域，降低了告警后不断找人拉群的运维工作量。告警自动实时同步给业务，提高了业务告警实时性和告警感知能力。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过告警入库收敛优化、宕机场景告警收敛优化和告警自动化处理，降低告警噪音 90% 以上。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过 Server 分片内存容量告警自动扩容、机器宕机节点自动重启，极大降低运维成本和提高告警恢复效率。</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;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: 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="">对集群大 key、集群热 key、集群混用情况、集群成本等进行巡检，针对特殊场景的 key 支持集群维度、key 维度和 key 前缀维度的黑名单配置。</span></p></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.08425925925925926" 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="100060333" src="https://wechat2rss.xlab.app/img-proxy/?k=30548c4a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsLoNvUp3BRPrrN0fVxBVDhpgWhELicrvS0RibLibh0jNI3DBzWKQfoOEMuuNqbCG0bWmbmVUH8ZtMdEoaibFvxria7ohz3MwtbianSQ%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 style="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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="">大 key 巡检日报</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="">每日按业务域维度巡检集群存量大key，推送巡检信息到对应业务域大群，大 key 巡检支持黑名单管理。点击实例 ID 可跳转查看 key 分析详情。</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;width: 55%;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="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.887962962962963" 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="100060337" src="https://wechat2rss.xlab.app/img-proxy/?k=e77197c7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHs0EvchJF1oFqibxQX7nNrCcuEfYwYRHQvW1MBSS2rMHKb8JMcKMozn8efQreKaSUs9uauucVrBCBKBAoybL7JgFvxlMDNY24SU%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;width: 45%;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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.0240740740740741" 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="100060340" src="https://wechat2rss.xlab.app/img-proxy/?k=15b87686&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtDKSnpbZL47zLVC0ibdS7ly3q3lHGcBPHVErCUM6gBJGS5Sn5CbJR0OzLfw9FSjdAqFRMwhFTfIibOmjDgSFH0dzz8ia6Z5Zo5b4%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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;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;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">大 key 巡检日报</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;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">key 分析详情</span></p></div></div></div></div></div><div style="margin: 5px 0px;box-sizing: border-box;"><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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: 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="">热 key 巡检</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="">实时将集群热 key 信息，推送巡检信息到对应业务域大群，热 key 支持黑名单设置。</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;width: 45%;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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.45555555555555555" 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="100060341" src="https://wechat2rss.xlab.app/img-proxy/?k=6a41ff41&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuuLFhNxxJTAlBC9ZjibLggTMCV5Z5uAum4Ksic0rN6NL4ewwNOcYChe5ygO6vNauR35J6kDR5a25jVXqOZbt1Hvf5bdowy6ia280%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;width: 55%;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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3472222222222222" 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="100060338" src="https://wechat2rss.xlab.app/img-proxy/?k=dbc0b058&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHvicf6LcNibiaOPuNLDI0ogbAjAotXSYIGXDcb6SC7ib6FD2SY4Q2KgEKP1w9CZJkFJ15AzurPoibsbian04v01CftZVtk6Nia4HCfssU%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></div></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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;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;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">集群热 key 实时巡检</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;font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">实时热 key 分析</span></p></div></div></div></div></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="">通过持续构建与完善平台自动化运维体系，我们实现了 Redis 集群全生命周期运维的规范化、标准化与自动化，覆盖集群部署、垂直扩缩容、分片水平扩容、版本升级、集群生命周期管理、资源池多维度智能调度、自动化告警处理及常态化巡检等核心场景。整体运维流程实现少人化、无人化执行，大幅降低运维复杂度和人工运维费力度。依托运维工单化、流程自动化的建设思路，平台整体运维效率得到显著提升，为 Redis 服务长期高稳定、高可靠、高性能运行提供了坚实保障。</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=2247543910&amp;idx=1&amp;sn=a17a16f6fe78ff1a0940387ecf5137c8&amp;scene=21#wechat_redirect" textvalue="Claude在得物App数仓的深度集成与效能演进" data-itemshowtype="0" linktype="text" data-linktype="2">Claude在得物App数仓的深度集成与效能演进</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=2247543887&amp;idx=1&amp;sn=4b040af63cd6575b636c2378f6d1d511&amp;scene=21#wechat_redirect" textvalue="Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术</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=2247543834&amp;idx=1&amp;sn=1f5dab2bdd20e7fd77e9fe1102986d1c&amp;scene=21#wechat_redirect" textvalue="大禹平台：流批一体离线Dump平台的设计与应用｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">大禹平台：流批一体离线Dump平台的设计与应用｜得物技术</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=2247543805&amp;idx=1&amp;sn=bafc980cb5dd8750aefa75353bcd1eab&amp;scene=21#wechat_redirect" textvalue="基于 Cursor Agent 的流水线 AI CR 实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">基于 Cursor Agent 的流水线 AI CR 实践｜得物技术</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=2247543782&amp;idx=1&amp;sn=74d16ca2d6ff61edf25579e9d2029eb5&amp;scene=21#wechat_redirect" textvalue="从IDE到Terminal：适合后端宝宝体质的Claude Code工作流｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">从IDE到Terminal：适合后端宝宝体质的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="100060339" src="https://wechat2rss.xlab.app/img-proxy/?k=5b539d1e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtW0YiaicAQEyFM0VrpZ2ibOxw2nhXE7tT0hSuSdzxOGl5wEWCSRFNxsfwKkxial9mWrvj9Og2ic7cwTJicMkSNDEjk7lTUEaK226lJI%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=9d8477ae&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247544006%26idx%3D1%26sn%3D77bc608620d81c44a996464dae407857">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 30 Mar 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>Claude在得物App数仓的深度集成与效能演进</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543910&amp;idx=1&amp;sn=a17a16f6fe78ff1a0940387ecf5137c8</link>
      <description>随着Claude Code等Code LLM普及，其在企业数仓建设的应用已向全链路辅助演进。本文聚焦电商数仓场景，探讨Code LLM深度集成实践，界定数据确权人机边界，提出解耦架构范式；以数据确权、规范IO为核心，结合得物实战阐述集成方案与典型场景。</description>
      <content:encoded><![CDATA[<p>原创 <span>博温</span> <span>2026-03-25 18:32</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=c702e8fe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtqvWp7mJLnLYmnMOaoBXbo65WWdaEKUpOVN0FXJ2sVJy1APA3mWy46e5T0WZA3IEJgTDyqjn1Xt2Suc3rktGbFia0XjJiczyPOk%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>随着Claude Code等Code LLM普及，其在企业数仓建设的应用已向全链路辅助演进。本文聚焦电商数仓场景，探讨Code LLM深度集成实践，界定数据确权人机边界，提出解耦架构范式；以数据确权、规范IO为核心，结合得物实战阐述集成方案与典型场景。</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="">    1.数据确权边界：管理审批与技术实现的分离</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.内部工具演进：从被动式 SaaS 到 Agentic 工作流</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.本质洞察：规范化的输入与输出（Standardized I/O）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">二、基础设施底座：Galaxy MCP 的标准化集成</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.MCP 协议：大模型与数仓环境的通信契约</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.IDE 深度集成：鉴权链路</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、工程实践落地：基于规范化 I/O 的效能演进</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.智能视觉埋点：多模态输入到结构化 JSON 的映射</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.AI OneData 建模：血缘 CSV 到标准 DDL 的编译</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.智能周报生成：SQL 结果集到业务洞察的转化</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.Spark UI Skill：数仓任务排查与智能调优</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="">六、结语</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="">随着以Claude Code为代表的代码大语言模型（Code Large Language Model，以下简称Code LLM）在软件工程领域的普及，其在企业级数据仓库（以下简称数仓）建设中的应用逐渐从单一的代码补全向全链路辅助演进。本文旨在探讨Code LLM在电商数仓环境下的深度集成逻辑与工程实践。文章首先界定了</span><strong style="box-sizing: border-box;"><span leaf="">数据确权中的人机边界</span></strong><span leaf="">，分析了内部数据工具向Agentic工作流演进的趋势，并提出了“认知运行时与执行运行时解耦”的架构范式。</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="">数据确权（Data Rights Confirmation）</span></strong><span leaf="">，二是</span><strong style="box-sizing: border-box;"><span leaf="">规范化输入输出（Standardized I/O）</span></strong><span leaf="">。以此为框架，结合得物App真实数仓建设与研发实践，系统阐述了基于Galaxy MCP的基础设施集成方案，并对智能视觉埋点、AI OneData建模、智能周报生成、策略孵化中心等典型场景的架构设计与运行逻辑进行深入分析。最后，针对大模型应用中存在的幻觉问题与合规风险，本文提出一套系统性的治理与管控机制。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.27578125" 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="100060250" src="https://wechat2rss.xlab.app/img-proxy/?k=76196532&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvMyySbZhDSn7bqk0JXNICEOZpDfON3iaATYP8TGCOzGTpl4Mq3EqfGiab8vL3wTeV7MsdRWGRUHP4FwPZssYrRx3hl6aLcxzIPA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">Code LLM引入数仓的建设流程，并非简单的工具替换，而是对现有研发范式、职责边界及工具链架构的系统性升级。在讨论具体的提效场景前，必须首先厘清底层的逻辑支柱；若未能厘清权责边界与架构定位，大模型的引入极易演变为不可控的技术债务与运维风险。</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="">数仓建设的工程起点是原始数据（ODS 层）的接入，该环节涉及数据来源的合法性、数据所有权的界定、个人可识别信息（Personally Identifiable Information，PII）的合规审查，以及数据质量的责任归属。这些属性决定了数据接入不仅是技术动作，更是企业内部的核心数据确权过程。在引入 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><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;"><strong style="box-sizing: border-box;"><span leaf="">技术实现（AI 辅助）：</span></strong><span leaf="">在完成人工确权与审批后，涉及的 DDL 脚本编写、同步任务模板配置、基础数据质量校验（Data Quality Check，DQC）规则生成等技术执行工作，可由 Code LLM 基于已确权的元数据自动化生成，并经人工复核确认后上线执行。</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: 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="">内部工具演进：从被动式 SaaS 到 Agentic 工作流</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="">传统的数仓研发平台（如得物 App 内部数据研发平台 Galaxy）、BI 系统及指标字典，在形态上多属于</span><strong style="box-sizing: border-box;"><span leaf="">被动式内部 SaaS 工具</span></strong><span leaf="">：即工具仅提供标准化的功能模块与图形化界面（GUI），无法主动理解并完成用户的业务意图，需依赖工程师的专业技能手动操作，属于典型的「人找功能」的被动响应模式，工具的价值上限取决于功能丰富度与用户的专业熟练度。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Code LLM 的引入，促使内部数据工具向 Agentic（智能体化）工作流演进。在这一模式下，核心交互方式由 GUI 转向意图驱动的自然语言交互界面（Language User Interface，LUI）；系统不再仅仅提供「编写 SQL 的环境」，而是能够接收业务意图（如「按特定维度统计退款归因」），在预设的权限与规则边界内，通过调用底层 API 自主完成元数据检索、逻辑组装，并输出最终的数据洞察或代码草案。这种演进重构了数据工具的核心价值逻辑：从「为专业人员提供功能组件」，转向「为业务用户交付可落地的任务结果」。</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="">在探讨 AI 与现有数仓架构的融合时，需先明确大模型在系统中的核心定位：大模型无法替代 Spark、Flink、ClickHouse 等传统大数据计算与存储引擎的核心算力能力，其核心价值是促成了计算架构中「认知决策」与「执行落地」的解耦分离，我们将其拆解为两个核心模块：</span><strong style="box-sizing: border-box;"><span leaf="">认知运行时（Cognitive Runtime）</span></strong><span leaf="">与</span><strong style="box-sizing: border-box;"><span leaf="">执行运行时（Execution Runtime）</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="">由 LLM 充当核心载体，负责处理非结构化需求解析、业务逻辑到 SQL 的语义映射、代码规范校验及调优策略生成，核心处理语义与逻辑的推演工作。该模块不直接触碰物理数据，仅在数据权限管控体系的约束下，操作已确权授权的元数据（Metadata）与抽象语法树（Abstract Syntax Tree，AST）。</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><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="">本质洞察：规范化的输入与输出（Standardized I/O）</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 而用 AI」的陷阱。大语言模型基于概率分布生成文本，存在固有的幻觉风险；在对数据准确性、口径一致性要求极高的数仓场景中，无约束的自然语言对话式开发（业内俗称 Vibe Coding，即无明确规范、凭感觉自由编码的模式），会导致代码风格发散、业务口径不一致、数据失真等严重问题，甚至引发合规风险。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">剥离掉「AI 写代码」的表层形式，触碰数仓与 AI 融合的本质，其核心在于</span><strong style="box-sizing: border-box;"><span leaf="">构建规范化的输入与输出（Standardized I/O）契约</span></strong><span leaf="">。无论是埋点设计、OneData 建模，还是周报生成与策略孵化，其底层逻辑高度一致：将模糊的业务需求，通过结构化模板、CSV、JSON 或 API 接口（规范化输入）喂给模型，并强制模型按照预设的 Markdown 模板、DDL 规范或报告框架（规范化输出）进行交付。这种基于规范的驱动开发模式（Spec-Driven Development，SDD），将大模型不可控的自由文本生成，转化为基于规范契约的受限定向编译，从根源上压缩了幻觉的产生空间，构成了 AI 在数仓中规模化应用的安全底座。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">综上，明确的数据确权边界，与标准化的输入输出契约，共同构成了 Code LLM 在企业级数仓中安全、合规、规模化落地的两大核心支柱。</span></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="">基础设施底座：Galaxy MCP 的标准化集成</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="">要实现上述的“规范化输入与输出”，大模型必须具备感知和操作企业真实数据环境的能力。在实践中，研发团队基于模型上下文协议（Model Context Protocol, MCP），为内部数据研发平台（Galaxy）构建了标准化的集成底座。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.615625" 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="100060254" src="https://wechat2rss.xlab.app/img-proxy/?k=f97fa49b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuILzZt5HO9qv88qdicPsJ3ksw6ibgNrBJCPicv3XzxlHva3BI4avTaY6eyjsEWoj2fiavHbgb29Wk6ZfPfSjyNlwBJLKia5YHuspl8%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="">MCP 协议：大模型与数仓环境的通信契约</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="">Galaxy MCP 充当了 Code LLM与企业内部数据资产之间的桥梁。传统模式下，工程师需要手动复制表结构、日志信息喂给大模型；而在 MCP 架构下，大模型被赋予了“手和眼”。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过提供统一的 HTTP Streamable 接口与 Bearer Token 鉴权机制，MCP 使得大模型能够在安全受控的前提下，直接调用底层数据平台的 API。这种集成的本质，是为大模型提供了</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="">Galaxy MCP 向大模型暴露了一系列高度结构化的工具（Tools），这些工具构成了 Agent 执行复杂任务的基础原子。核心 API 及其对应的数仓场景映射如下：</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=""> 模型在编写 SQL 前，自动获取目标表的建表语句，确保字段名与数据类型绝对准确，消除幻觉。</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=""> 在 OneData 建模或排查数据异常时，模型自动查询上游血缘表，梳理复杂的依赖链路。</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=""> 模型直接读取线上调度任务的真实 SQL 逻辑，用于代码重构或口径比对。</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=""> 模型获取完整的执行日志（如 Spark 报错堆栈），结合上下文自动分析报错原因并给出修复建议。</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="">IDE 深度集成：鉴权链路</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="">在工程落地中，Galaxy MCP 实现了与主流 AI IDE 的无缝集成。通过上述配置，开发者在 IDE 中只需输入自然语言指令（如：“读这个表试试：xxx.table_name”），底层大模型即可自动路由至 Galaxy MCP，完成鉴权、API 调用与结果解析的闭环。这标志着数仓开发正式迈入 Agentic 时代。</span></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="">工程实践落地：基于规范化 I/O 的效能演进</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="">本章将结合得物App数仓研发实证，以实际应用阐述上述底层逻辑在实际业务线中的落地场景。下面的每一个场景，均是在内部经过多轮POC验证，是“规范化输入与输出”理念的具体投射。</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="">智能视觉埋点：多模态输入到结构化 JSON 的映射</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=""> 埋点设计是数仓数据采集的前置环节。传统流程长期存在三大痛点：</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="">PRD 交互复杂，且开发过程中变更频繁，人工对齐耗时。</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="">历史迭代频繁、经手人多，同类交互动作命名混乱（如 `like_click` 与 `click_like_btn` 混用），极大增加下游清洗成本。</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-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.3755739210284665" data-s="300,640" data-type="png" data-w="1089" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060252" src="https://wechat2rss.xlab.app/img-proxy/?k=d80d2b53&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsBWdQAgj0bwQykHgl6cxtkvI215xibib4EUrficvJ0icibwXiaCQPicl5y3H8dd79fibicjvnsGzOkwRYfarLYnh3SMV2DuiaCKibr2FzxAw%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="">规范化 I/O 逻辑：</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;"><strong style="box-sizing: border-box;"><span leaf="">需求解析与确认（前置收敛）：</span></strong><span leaf=""> 构建规范化的 PRD 理解 Prompt，结合原生多模态模型（如 Gemini 1.5 Pro，保留 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><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">规范化输出（Schema 强校验）：</span></strong><span leaf=""> 强制模型输出符合企业 Schema 校验的 JSON 格式，核心实现三点：</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">埋点格式化：</span></strong><span leaf=""> `event_id` 必须严格符合 `[event]_[page]_[block]` 的格式，且事件与参数定义强绑定业务规范字典，杜绝开发随意造词。</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">参数收敛：</span></strong><span leaf=""> 基于历史权威字典，自动映射并收敛同义参数，消除发散。</span></p><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=""> 在某社区线双周迭代抽样中，埋点设计人力投入从平均10人日缩减至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="">一致性提升至 95%：</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="">AI OneData 建模：血缘 CSV 到标准 DDL 的编译</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=""> OneData 方法论要求严格的数据分层与指标口径统一。但在人工执行时，面对复杂的表血缘关系，规范的遵守率往往存在波动，且梳理历史口径耗时巨大。一个典型的 OneData 项目，纯人工梳理口径溯源、编写白皮书往往需要耗费数月。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.17643004824259131" data-s="300,640" data-type="png" data-w="1451" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060253" src="https://wechat2rss.xlab.app/img-proxy/?k=54394bdc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtknicjQkzSoNwoT4P0oZzmaAMP6L8d2Edga7PYt6YDYhicKOuWVJ3KECTbzTUpUrMzqkKNzkmAnZVRvwuiaf2HCicCBpPvH3tSj18%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="">规范化 I/O 逻辑：</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;"><strong style="box-sizing: border-box;"><span leaf="">规范化输入：</span></strong><span leaf=""> 研发团队摒弃了让模型直接阅读杂乱 SQL 的做法，而是通过脚本预先提取底层表的血缘关系与字段清单，将其转化为高度结构化的 CSV 文件（如 某域onedata_表血缘.csv、某域onedata_字段清单.csv）。这些 CSV 文件连同格式严苛的 Markdown 规范文档（规定了字段分隔符 ##、溯源必须到 ODS 层等）一起作为 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="">模型解析多层嵌套的子查询，严格按照契约输出标准化的口径溯源文档与 Mermaid 架构图（如 引力onedata_表血缘_mermaid.md），以及符合分层规范的 DDL 语句。</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=""> 在某业务线包含 34 张表、涉及 6 个粒度的 OneData 重构项目中，对比历史同等规模项目的纯人工评估耗时（约 60 人日），采用 AI 辅助与人工复核结合的模式，整体交付周期缩短至 16 人日（提效约 74%）。由于机器执行规范的绝对一致性，文档的格式统一度达到 100%。</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="">智能周报生成：SQL 结果集到业务洞察的转化</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=""> 传统 BI 报表只能展示数据，无法解释数据。业务方需要的是“为什么跌了”，而不是“跌了多少”。但如果直接让 LLM 读取原始 CSV 数据生成周报，极易出现“幻觉”（如 1+1=3 的计算错误），因为 LLM 本质上是概率模型，不擅长精确的数学运算。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5181086519114688" data-s="300,640" data-type="png" data-w="994" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060251" src="https://wechat2rss.xlab.app/img-proxy/?k=7d13dd17&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHt0w8uMzNpYl1NHgDrZlCoQEcrLclveIhJRy9q6oKrSXx08PEOesfibhq862FXq6lHa2zSNCrC1XYP39jUG0l0CIrNKNv29tUibs%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="">规范化 I/O 逻辑：</span></strong><span leaf=""> 系统设计上存在两条并行路径，而其底层逻辑的起点是同一份 Prompt 规范文档。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">该规范文档充当单一可信源（Single Source of Truth）：在研发阶段，LLM 读取规范文档中精确定义的字段口径、聚合顺序与格式规则，将其编译为 Python 确定性计算模块（Spec-to-Code）；在运行时，同一份规范又作为约束契约传入 LLM，驱动语义叙事输出。这意味着规范的变更（如修改 WoW 计算口径）只需更新一处，两条路径同步收敛。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">路径一（Python 计算层）：</span></strong><span leaf=""> 由 LLM 依据规范编译生成的 Python 模块负责所有确定性运算——WoW/YoY 计算、渠道贡献度排序、量级格式化（万/亿分档）——输出已预渲染的 Markdown 文本片段，不再含任何原始数值。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">路径二（LLM 叙事层）：</span></strong><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 leaf=""> 这一架构的核心价值在于：将 LLM 的不确定性严格限制在语义层，将数值精度的责任锁定在代码层，两者各自处于自身最可控的能力边界内，从根本上规避了&#34;让模型直接计算 CSV 原始数据&#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;"><strong style="box-sizing: border-box;"><span leaf="">业务背景：</span></strong><span leaf=""> 区别于纯粹的 Coding 提效，业务冷启动阶段（如违规作者探查）涉及完整的策略工作流：定义目标 -&gt; 数据收集 -&gt; 特征筛选 -&gt; 模型训练 -&gt; 效果回收。该过程涉及业务方、分析师、数据科学家等多个角色，存在巨大的信息损耗与特征选择的“效率孤岛”。特征选择的质量高度依赖于个人的隐性能力。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7003891050583657" data-s="300,640" data-type="png" data-w="1028" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060257" src="https://wechat2rss.xlab.app/img-proxy/?k=78469245&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsDUfM8j3kGOrM9kaKpHRQw84fw9o7yUH1cibFLDUaKMwRInvlL9Twwu55hm3oo79F6Pvq5DNQX4hNrUIicSEicNXfejw5vF93buM%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="">规范化 I/O 逻辑：</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">策略孵化中心将这一复杂的非线性探索过程，重构为基于 AI 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><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 自动调用 MCP 接口检索资产，推荐相关特征（探索已有的未知），并利用 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=""> Agent 根据特征类型，自动推荐并调用底层机器学习组件（如逻辑回归 LR、随机森林 RF），标准化输入输出矩阵。</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></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="">第一期（MVP 验证）：</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=""> 开发特征交互式 Agent 的核心对话与 PRD 生成能力，完善特征管理。</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=""> 策略生成到落地的整体周期由 10 人日缩短至 1-2 人日，提效 3-5 倍。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;"><strong style="box-sizing: border-box;"><span leaf="">业务背景：</span></strong><span leaf=""> 财务级数据指标（如实收、补贴、平台服务费等）具有严格的勾稽关系。针对此类指标编写覆盖全面的边界测试用例耗时极长，且业务语言（如“邮费返利抵减技术服务费”）转化为测试 SQL 极其困难。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.36640625" 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="100060258" src="https://wechat2rss.xlab.app/img-proxy/?k=2410dfe1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtOrhBjTjHc2UJbZZhiaw4wEaxib0Ilq52bPntcllxiaQVfg2v0nDfAKMD6CPmHEcvgdZXS4kSObRhdOCkRDBZozu3XOUbHb5xwtY%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="">规范化 I/O 逻辑：</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;"><strong style="box-sizing: border-box;"><span leaf="">规范驱动开发（SDD）：</span></strong><span leaf=""> 将测试环节前置，定义标准化的测试契约（Schema）。</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=""> 将 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=""> 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=""> 执行测试 SQL 后，若出现报错或精度异常，LLM 通过 MCP 接口自动读取执行日志进行根因诊断，精准区分“底层逻辑错误”与“浮点数计算带来的可接受精度误差”，并输出修复建议。</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=""> 构建了“质量守夜人”机制，测试覆盖率大幅提升。在某财务项目中，模型自动生成了 20 余个复杂的校验 SQL，将数据质量卡点前置到开发阶段，显著降低了上线后的数据事故率，实现了从“人工抽测”到“机器全量自动化校验”的范式跃迁。</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="">Spark UI 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;"><strong style="box-sizing: border-box;"><span leaf="">业务背景：</span></strong><span leaf=""> 数仓日常运维中，Spark 任务的排查与调优（如数据倾斜、OOM、执行计划不合理）高度依赖工程师的个人经验。排查过程需要频繁查看 Spark UI，分析 DAG 图、Stage 耗时、Shuffle 数据量等，耗时且门槛高。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.49038461538461536" data-s="300,640" data-type="png" data-w="1040" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060255" src="https://wechat2rss.xlab.app/img-proxy/?k=be42e789&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvx4P5kQ1xxrNLdkwUaTFPNzaTR3tOgMXdOkKKCzbLXKVWGanaRwzoGZ409BcuWxicFTqKFu75S85S7j70ZgnmHIbjiamYia644Vw%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="">规范化 I/O 逻辑：</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;"><strong style="box-sizing: border-box;"><span leaf="">规范化输入：</span></strong><span leaf=""> 通过 MCP 接口或监控脚本，自动抓取 Spark UI 的核心指标（如 Stage 耗时、Task 倾斜度、GC 时间、内存使用率）及 SQL 执行计划（Explain 树），将其转化为结构化的 JSON 或文本日志作为 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=""> LLM 充当“认知运行时”，基于输入的结构化日志，结合历史调优专家经验库（如“Shuffle 阶段数据量剧增且单 Task 耗时极长 → 数据倾斜”），进行逻辑推演。</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="">强制模型输出标准化的诊断报告，包含：① 根因定位（如 Join 键倾斜）；② 具体调优建议（如增加 spark.sql.shuffle.partitions，或改写 SQL 引入 Broadcast Join）；③ 优化后的 SQL 代码草案或参数配置。</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 技能（Skill），显著降低了团队的整体技术门槛。</span></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;"><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="">在上述所有工程实践中，提示词（Prompt）不再是简单的自然语言对话，而是演变为了系统架构的一部分。高质量的提示词工程是实现规范化 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="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="">在传统的开发模式中，系统配置通常是 YAML、JSON 或 XML 文件，用于指定数据库连接、调度频率等确定性参数。而在 AI Native 的数仓架构中，提示词承载了业务规则、编码规范与逻辑约束，成为了认知运行时的“配置文件”。这些提示词被纳入版本控制系统（如 Git），与底层代码同等对待，接受严格的 Code Review。</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="">以智能周报生成场景为例，其核心的 周报数据prompt 采用了高度结构化的模块设计：</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="markdown"><code><span leaf=""><span class="code-snippet__section"># 角色设定 (Role Definition)</span></span></code><br/><code><span leaf="">你是一位资深的电商数据分析师，擅长从复杂的数据指标中提取业务洞察。</span></code><br/><code><span leaf=""><span class="code-snippet__section"># 核心任务 (Core Task)</span></span></code><br/><code><span leaf="">请基于提供的 [SQL 结果集 JSON]，撰写本周的业务周报。</span></code><br/><code><span leaf=""><span class="code-snippet__section"># 规范约束 (Constraints)</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">1.</span> 必须使用 Markdown 格式，包含二级标题与无序列表。</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">2.</span> 严禁捏造数据，所有数值必须来源于输入的数据集。</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">3.</span> 环比计算公式为：(本期值 - 上期值) / 上期值，保留两位小数。</span></code><br/><code><span leaf=""><span class="code-snippet__section"># 结构模板 (Output Template)</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">## 一、 核心指标概览</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> GMV：[数值] (环比 [百分比])</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> 转化率：[数值] (环比 [百分比])</span></code><br/><code><span leaf=""><span class="code-snippet__section">## 二、 异动归因分析</span></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></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="">在电商数仓中引入 Code LLM，必须建立系统性的风险管控体系，以应对大模型固有的技术缺陷及企业合规要求。</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="">上下文增强 (RAG) 与 MCP 强绑定：</span></strong><span leaf=""> 严禁模型在无上下文的情况下“裸写” SQL。必须通过 Galaxy MCP 实时获取真实的表结构与分区信息，确保模型引用的表名、字段名均真实存在。</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=""> 模型生成的 SQL 必须经过数仓平台的语法解析器（Parser）进行静态检查，阻断基础语法错误。</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（特别是调用外部公有云 API 时）存在数据泄露风险。管控方案包括：</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=""> 在 Prompt 提交至模型前，必须经过网关层的正则表达式与 NLP 实体识别扫描，自动屏蔽或替换真实的手机号、身份证号及真实交易金额等敏感数据。</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=""> 仅允许模型读取表结构（Schema）与脱敏后的样例数据（Mock Data），严禁模型直接访问生产环境的物理数据。</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 辅助生成的代码变更，在版本控制系统（如 Git）中必须带有特定的 AI 标签，并记录对应的 Prompt 与生成日志，确保事故发生时可进行完整的责任追溯。</span></p></li></ul></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="">Code LLM 对电商数据仓库的介入，绝非停留在代码补全的表层提效，而是推动了数仓研发范式的底层演进。通过界定数据确权的管理边界，研发团队能够安全地将技术实现环节交由 AI 辅助；通过引入规范驱动开发（SDD）与 Agentic 工作流，并以“规范化的输入与输出”为核心，有效抑制了大模型的不确定性。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">从 Galaxy MCP 的底层基础设施打通，到智能埋点、OneData 建模、周报自动化，再到端到端的策略孵化中心，大模型正在重塑数据流转的每一个节点。在这一演进过程中，数据工程师的核心职责正在发生转移：从繁重的 SQL 编码与基础排错，转向业务逻辑的抽象、规范契约的制定以及系统架构的最终决策。未来，基于 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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543887&amp;idx=1&amp;sn=4b040af63cd6575b636c2378f6d1d511&amp;scene=21#wechat_redirect" textvalue="Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术</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=2247543834&amp;idx=1&amp;sn=1f5dab2bdd20e7fd77e9fe1102986d1c&amp;scene=21#wechat_redirect" textvalue="大禹平台：流批一体离线Dump平台的设计与应用｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">大禹平台：流批一体离线Dump平台的设计与应用｜得物技术</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=2247543805&amp;idx=1&amp;sn=bafc980cb5dd8750aefa75353bcd1eab&amp;scene=21#wechat_redirect" textvalue="基于 Cursor Agent 的流水线 AI CR 实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">基于 Cursor Agent 的流水线 AI CR 实践｜得物技术</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=2247543782&amp;idx=1&amp;sn=74d16ca2d6ff61edf25579e9d2029eb5&amp;scene=21#wechat_redirect" textvalue="从IDE到Terminal：适合后端宝宝体质的Claude Code工作流｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">从IDE到Terminal：适合后端宝宝体质的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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543717&amp;idx=1&amp;sn=e49b764abd65ffd07fe65d52f1c7b2c6&amp;scene=21#wechat_redirect" textvalue="AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术</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="100060256" src="https://wechat2rss.xlab.app/img-proxy/?k=fca9a145&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtK4mg08jqA46n1TcNkYBr5S5kfzglsFv08dEVE25RpLZP2V3pogWHMClRBZdzqo1WFwDRq6HwfhkfsrqRVCL8ibMTx20iahrDib8%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=fad0efdf&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543910%26idx%3D1%26sn%3Da17a16f6fe78ff1a0940387ecf5137c8">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 25 Mar 2026 18:32:00 +0800</pubDate>
    </item>
    <item>
      <title>Claude Code + OpenSpec 正在加速 AICoding 落地：从模型博弈到工程化的范式转移｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543887&amp;idx=1&amp;sn=4b040af63cd6575b636c2378f6d1d511</link>
      <description>AICoding 正从模型崇拜走向工程落地。Claude Code 与 OpenSpec 双轮驱动，以上下文治理 + 规格化开发破解 AI 编码意图模糊、上下文漂移难题，打造可复用、可规模化的企业级 AI 研发范式。</description>
      <content:encoded><![CDATA[<p>原创 <span>后羿</span> <span>2026-03-23 18:35</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=9f52a2af&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHszqarr8vWwLEpD2uzxXK3E5WVMbMWjUMqj1DgTbZFicKg7Neibqr92IlmY6ibK4n3VAaE3RdJSXya4pYRLNicv3EaTP08iax7htaZk%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>AICoding 正从模型崇拜走向工程落地。Claude Code 与 OpenSpec 双轮驱动，以上下文治理 + 规格化开发破解 AI 编码意图模糊、上下文漂移难题，打造可复用、可规模化的企业级 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="">一、破局：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.上下文工程的兴起</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="">二、Claude Code：把 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.终端原生的工程哲学</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.MCP 与“即时上下文”</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.CLAUDE.md 与自动记忆</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、OpenSpec：给 AI 编码加上&#34;规格书&#34;，从失控到可沉淀</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.规格驱动开发 (SDD) 的兴起</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.OpenSpec 的工件体系 (Artifacts)</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="">四、实战：CC + OpenSpec 如何落地真实业务</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.工具链对比：为何选择 OpenSpec</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.建立 AICoding 效能飞轮</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="">六、结语：AICoding 落地的飞轮正在转动</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><strong style="box-sizing: border-box;"><span leaf="">进入 2026 年，生成式人工智能（GenAI）已成为编程领域不可或缺的力量。</span></strong><span leaf="">然而，行业正经历从 “模型崇拜” 向 “工程落地” 的深刻转型，单纯依靠增加大语言模型（LLM）的参数规模已无法解决复杂业务逻辑中的幻觉与失控问题。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">当前的共识是，AI 编码（AICoding）的真正瓶颈不在于模型的逻辑能力，而在于上下文管理（Context Management）的失效与开发意图（Intent）的模糊。</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过对 Anthropic 推出的 Claude Code（以下简称 CC）与 Fission AI 倡导的 OpenSpec 进行深度解构可以发现，两者正在通过 “代理化执行” 与 “规格化驱动” 双轮驱动，构建一套闭环的 AI 研发体系。这种结合不仅标志着 AI 编程工具从 IDE 插件向终端原生代理（Agentic Tool）的转变，更预示着 “规格驱动开发”（Spec-Driven Development, SDD）将成为企业级 AICoding 落地的核心范式。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060200" src="https://wechat2rss.xlab.app/img-proxy/?k=ac9c281a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv07evLN1tQ2MXYGIib6g4PfTtX5iajmQonyBsh9WiaxXmCrbyNicGq64vSVL6nCMZh1uqkaFSp5sb03JAia6LL3yzlvaAzYicP8R8I4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">破局：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="">在 AICoding 的早期阶段，开发者普遍认为只要模型足够强大，就能解决所有编程难题。然而，随着项目复杂度的增加，这种观点遭到了现实的挑战。研究表明，虽然 AI 编码助手的使用率在提升，但软件交付的稳定性却在下降。例如，Google 的 DORA 2024 报告指出，AI 采用率每增加 25%，交付稳定性反而下降 7.2%。</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="">AICoding 领域存在一个显著的 “生产力悖论”：开发者在使用 AI 时主观感知速度提升了 20%，但实际完成任务的时间却增加了 19%。这一现象的根源在于 AI 在处理长上下文时的效能衰减。随着任务推移，AI 往往会陷入修正循环（Fix/Test Loops），无法触及深层的业务功能，反而需要更多的人工干预。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">模型的逻辑推理能力（Reasoning）在短小上下文中表现卓越，但在大型工程环境中，模型面临的是 “上下文中毒”（Context Poisoning）和 “注意力漂移”（Attention Drift）。当对话历史过长或包含过多无关代码时，模型的性能会呈现非线性下降。例如，GPT-4o 等先进模型在 1K Token 时的准确率为 99.3%，而当上下文扩展到 32K Token 时，准确率会暴跌至 69.7%。这种 “性能断崖” 意味着，单纯依靠扩大上下文窗口（Context Window）并不能解决问题。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060199" src="https://wechat2rss.xlab.app/img-proxy/?k=6b9617bd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsxuKhWg9LfRrN3flmNvTaZxVqialKe8GFiazBCFKichk8sHM22FEO1XibOouL8KEMqCw4073b5fAgfSzPialF1wlxy8DJnJHTaiaWWo%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="">上下文工程（Context Engineering）正在取代提示词工程（Prompt Engineering），成为 AICoding 的核心技术方案。上下文工程的核心不在于 “如何写更好的指令”，而在于 “如何为模型筛选最精准的 Token 集合”。</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-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.49707602339181284" data-s="300,640" data-type="png" data-w="1026" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-croporisrc="https://mmbiz.qpic.cn/mmbiz_png/FMFU1P6sHHtMYal1MzibrPQeaycCdsDfohIrEfW01aWVAI4c2PV2aAk6dIIeePYQrptU6sdeDKJ0nHOiaXUhy8EURtaibwS88lUWiauzSdmLCsQ/0?wx_fmt=png&amp;from=appmsg" data-cropselx2="520" data-cropsely2="260" data-imgfileid="100060238" src="https://wechat2rss.xlab.app/img-proxy/?k=24e8434d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtMYal1MzibrPQeaycCdsDfohIrEfW01aWVAI4c2PV2aAk6dIIeePYQrptU6sdeDKJ0nHOiaXUhy8EURtaibwS88lUWiauzSdmLCsQ%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 代理在缺乏这些隐性知识（Implicit Knowledge）的情况下，生成的方案虽然符合语法，但却违背了架构初衷或业务约束。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060201" src="https://wechat2rss.xlab.app/img-proxy/?k=fefbde19&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv1PKhZ5Pm7UbnKRnIbd7ibCv1ibYhU5TMjuHqd9Le4sDgbTAk0tsaHaXjYXrVtbrkHic2gZibVosysr2NZ4OMKXX1epC9IW6QTG6k%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="">现代 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="">区分持久化的会话状态（Session）与单次模型调用的工作上下文（Working Context）。</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="">通过命名的、有序的处理器（Processors）构建上下文，而非随机堆砌。</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="">每个子代理仅能看到执行任务所需的最小上下文，通过工具（Tools）按需获取更多信息。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060198" src="https://wechat2rss.xlab.app/img-proxy/?k=5b3eacfc&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtLJx9UTHGUl0gTVp0V8yvgxx4ov8LgQM4eC5JicPO9pFQ5FOia2uLtlY2HYq7cAYeUOhdvdygImJ7vsMZaw4vSLibCWYaNq4U2cw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">Claude Code：把 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="">Claude Code (CC) 是 Anthropic 推出的原生代理工具，它直接运行在终端中，具备读取文件、运行命令、执行重构以及自主验证的能力。与传统的 IDE 插件相比，CC 的核心优势在于其“代理循环”（Agentic Loop）和对上下文协议的深度掌控。</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="">CC 的工作流程被定义为一个闭环系统，旨在模仿人类工程师的思维过程：</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="">Gather Context（收集上下文）：</span></strong><span leaf="">CC 不会盲目读取整个目录，而是通过文件搜索、Git 状态检查以及读取特定的 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">CLAUDE.md</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="">Take Action（采取行动）：</span></strong><span leaf="">基于推理，CC 可以跨多个文件执行编辑，或者利用终端工具（如 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">npm install</span></span><span leaf="">、</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">git commit</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="">Verify Results（验证结果）：</span></strong><span leaf="">这是 CC 最具杀伤力的特性。它能自动运行测试、捕捉错误，并根据反馈调整方案。研究表明，带有验证步骤的 Coding 生成过程，其成功率远高于单次生成。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060203" src="https://wechat2rss.xlab.app/img-proxy/?k=07133998&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtJwBibmAcfGS1oF1QQvd4jhicpXCOyGEFM7IyQVl7LTgKVvLWsphICuL6TeuLkAJMiax2VrcOkCuUpbcD6KibBotKzQtzCjhDFqibI%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="">CC 选择了终端而非图形界面作为主场，这体现了其 “代理优先” 的设计哲学。CC 遵循 Unix 哲学，支持管道（Pipe）、脚本化和自动化集成。这种设计使得 CC 能够与现有的 CI/CD 流程完美衔接，例如在 GitHub Actions 中自动执行代码审计。Anthropic 最新推出的 Code Review 功能，就是通过 Claude Code 基于 PR 的方式进行 bug 的追踪。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">下表详细对比了 CC 与行业领先的 AI 编辑器 Cursor 的差异：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6473988439306358" data-s="300,640" data-type="png" data-w="1038" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060202" src="https://wechat2rss.xlab.app/img-proxy/?k=fb274166&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHstVnZk0uxmPyW3YRFZBYnMDh36VlJicOUFZvARZiaCzibwbV7tUBTs9ffU6kasica43o70Gym7C0vlaq4PzTjF8qf8e938QRPTaBg%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060206" src="https://wechat2rss.xlab.app/img-proxy/?k=97596855&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvibjLPagvtsXReUEqmojItVV1bHibIsdcTtktOutpn0Ac2O8762rQaPdqx6C3sficfvGpznx7vTaxcwbOZ7mXSwHArgRF3RdWoI0%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="">MCP 与“即时上下文”</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="">CC 深度整合了模型上下文协议（Model Context Protocol, MCP）。MCP 是一个开放标准，允许 AI 代理安全地访问外部数据源。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为了应对大规模工具定义导致的上下文溢出，CC 引入了 “工具搜索” 和 “代码执行” 模式。代理不再一次性加载成千上万个 API 定义，而是通过编写代码按需调用 MCP 服务。例如，在分析大型数据库时，CC 不会加载全量数据，而是编写针对性的查询语句，仅将结果摘要读入上下文。这种 “按需加载” 策略极大地提升了 Token 的效用。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060204" src="https://wechat2rss.xlab.app/img-proxy/?k=c0325775&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs9bnFG952VJtq2UiakicVF7WrtibTFNYQciaty3HXgXzPyBPywnbE2C3x6T7jbMqy6XXRGVJYrIvyNDeDANZzyDNUiaoLyQL2akkwk%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="">CLAUDE.md 与自动记忆</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="">CC 引入了 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">CLAUDE.md</span></span><span leaf=""> 文件作为项目的 “操作手册”。这是一个置于根目录的 Markdown 文件，用于存储项目特定的编码标准、架构决策和测试指令。与临时提示词不同，<span textstyle="" style="background-color: rgb(214, 214, 214);">CLAUDE.md</span> 提供了持久的、跨会话的约束。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">此外，CC 具备 “自动记忆”（Auto Memory）功能。它会自动在 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">MEMORY.md</span></span><span leaf=""> 中记录项目的构建命令、调试心得和用户的偏好设置。每当新会话启动时，CC 会加载这些记忆的前 200 行，从而确保 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060205" src="https://wechat2rss.xlab.app/img-proxy/?k=35d3a9af&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtneBgLPYEbL88CfgeeHysJwxian6gfRYbD58JzGwT49UElk1lHXkqOV5zj6Kw1eMB4AobFr3ia2BbX4BU9tcicf2MKX53JicpONZk%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">OpenSpec：给 AI 编码加上&#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="">虽然 Claude Code 提供了强大的执行引擎，但在复杂业务中，AI 仍然可能因为意图不明而跑偏，最终导致交付的代码不符合预期。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">OpenSpec 的出现为 AI 编码提供了 “规格说明书”，将 AICoding 从 “凭感觉写代码” 提升到了 “按规格执行任务” 的高度。</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="">规格驱动开发 (SDD) 的兴起</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="">OpenSpec 倡导的是一种 “规格驱动开发”（Spec-Driven Development）范式。</span><strong style="box-sizing: border-box;"><span leaf="">其核心理念是：在写任何一行代码之前，先由人类与 AI 共同协商并锁定一份机器可读、人可评审的规格文档。</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">下表展示了 SDD 的三个演进阶段：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.20185185185185187" 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="100060208" src="https://wechat2rss.xlab.app/img-proxy/?k=a74bc9c4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtu8aKNbs1SvYeF7zcOpILYcKp9KnGsm5g3EGPXCq6xtpRj3agVnAia3HOTdzeicZju7FLVznXcpdRTS1sIqWT0iaWQibWGiaQGcs8Q%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060210" src="https://wechat2rss.xlab.app/img-proxy/?k=d3327250&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsyCO8UAbHuZGDV6Ts1m7c9Z89In1ORMS72hPjJBnHiaF8ce4k8ibFoqSo7SQQPfEwFicJSzcTn4GvA9BxhhJEsCmtZ7bXRyq6aibc%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="">OpenSpec 的工件体系 (Artifacts)</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="">OpenSpec 弃用了笨重的开发文档，转而采用一套轻量级的、面向 AI 优化的 Markdown 工件体系。每个变更（Change）都被组织在独立的文件夹中：</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="">proposal.md：</span></strong><span leaf="">描述变更的初衷（Why）和范围（What）。</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="">specs/：</span></strong><span leaf="">具体的逻辑规格，通常包含 “Scenario（场景）” 描述，通过具体的输入输出消除模糊性。</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="">design.md：</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="">tasks.md：</span></strong><span leaf="">原子化的任务清单，作为 AI 的执行路径图。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060211" src="https://wechat2rss.xlab.app/img-proxy/?k=fd1e0ce0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvD84PHx2xWzs9T5mhXiaEP6ATjdFkhMeZD6wrRpTSck7gCbWdl7m6I4FXmP2rZu6AGtOGA7gibTbp1XHpQ0gxBBOJHhHOHsS9uU%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="">OpenSpec 最具洞察力的设计在于其生命周期管理。AI 在处理新任务时，最忌讳被旧任务的陈旧信息干扰。OpenSpec 的 “归档（Archive）” 机制解决了这一问题：</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="">Proposal 阶段：</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="">Apply 阶段：</span></strong><span leaf="">AI 严格按照 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">tasks.md</span></span><span leaf=""> 执行，避免了盲目扫描全库导致的 Token 浪费。</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="">Archive 阶段：</span></strong><span leaf="">任务完成后，临时变更文档被移入归档，核心规格更新至主规格文件。这保证了 AI 始终在一个 “卫生” 的上下文环境下工作，同时也为项目留下了可追溯的决策链路。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060212" src="https://wechat2rss.xlab.app/img-proxy/?k=b1a7a00d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtb8jCKJqcicVeLZiavZB2HHWGMw9Hiaia0K3sdPbXlRMHfrw7lCFIk09QiaBVIHOCRibOtibkhXOlcX5tgqeCD6R08kSwoDaU3xSFV44%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">实战：CC + OpenSpec 如何落地真实业务</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="">在实际的企业业务场景中，如何整合这两大工具？答案在于将 OpenSpec 的标准化指令集注入到 Claude Code 的会话环境中。</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="">假设一个电商项目需要重构其优惠券结算逻辑。在传统的 AI 辅助下，AI 可能会在修改 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">CouponService.java</span></span><span leaf=""> 时遗漏分布式锁，或者破坏原有的满减叠加规则。采用 CC + OpenSpec 模式，流程如下：</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">/opsx:propose &#34;重构优惠券结算逻辑，引入 Redis 分布式锁并支持多卷叠加&#34;</span><span style="background-color: rgb(255, 255, 255);box-sizing: border-box;"><span leaf="">。</span></span></span><span leaf="">CC 会在 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">openspec/changes/refactor-coupon-logic/ </span></span><span leaf="">下生成整套骨架。AI 会通过分析现有代码，在 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">spec.md</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="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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">spec.md</span></span><span style="background-color: rgb(255, 255, 255);box-sizing: border-box;"><span leaf="">。</span></span><span leaf="">如果发现 AI 没考虑 “优惠券过期临界点” 的并发问题，可以直接要求 AI 修改规格：“在 spec.md 中增加过期校验场景，并要求使用 Lua 脚本保证原子性”。</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="">第三步：受控应用（Apply）</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">/opsx:apply</span></span><span leaf=""> 了。这时，CC 就变成了完美的执行机器。它不再 “猜” 开发者的意图，而是对照 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">tasks.md</span></span><span leaf=""> 逐项实施。每一项修改后，它都会运行相关的测试。如果测试失败，CC 会自动分析错误并重新修复，直到该项 Task 标为 “完成”。</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">/opsx:archive</span></span><span leaf="">。原本散落在会话记录中的重构逻辑，现在变成了 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">openspec/specs/coupon-settlement.md</span></span><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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5453703703703704" 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="100060209" src="https://wechat2rss.xlab.app/img-proxy/?k=9e1e2e46&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHstyz2LG3xuqnu3NqJCU7otUa1iaqxICkLmRZoXLGJw4hs5LLOQMibFkNGD18yILibrvDF6JV2hSB1GPotz2ibcl72h1QQJeLicQPM8%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="">工具链对比：为何选择 OpenSpec</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="">在 SDD 工具链中，OpenSpec 展现出了极高的工程性价比：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.24074074074074073" 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="100060213" src="https://wechat2rss.xlab.app/img-proxy/?k=f7721629&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvnM39uLG4fMzhhFjlKChtQTE5MEWuhdQj2NATMblXsqKg1PiadGgjZdAdcshfnRELYLpMFR7604XTVSK0Z0iaqa2UpLcvmb7Zvc%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="">OpenSpec 的优势在于它不试图改变开发者的工具偏好。无论是使用 Claude Code、Cursor 还是 Aider，都可以无缝接入 OpenSpec 的规格管理层。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.55859375" data-s="300,640" data-type="png" data-w="1024" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060215" src="https://wechat2rss.xlab.app/img-proxy/?k=09778488&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuKRVUvSK80kwlXA2iaia02Z81SE975OGwNLVkAG4emNxLgZf5ibcB6LicJcEKGc2ap3rHmMERtFWAuM417AtfPps3Pa1YypfIQwiaI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><b style="box-sizing: border-box;"><span leaf="">沉淀：让 AI 编码能力在团队中持续积累</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="">AICoding 落地的终极目标不是让个体开发者写得更快，而是提升整个团队的知识资产质量。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="">团队可以通过自定义 Skill 和 MCP Server 来固化组织资产。</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="">Skill：</span></strong><span leaf="">将公司特有的代码风格、安全审计清单，或者特定中间件的使用指南封装为 .claude/skills/。当团队成员使用 CC 时，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="">MCP Server：</span></strong><span leaf="">连接企业内部的向量数据库（如基于 Zilliz 的语义搜索），让 AI 代理能够从数千万行历史代码中找到最佳实践。</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="">建立 AICoding 效能飞轮</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="">AICoding 的成功落地需要建立一套正向循环的 “飞轮”：</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="">每完成一个 PR，都强制更新对应的 OpenSpec 规格文件。</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 反复犯的错，就将其转化为 CLAUDE.md 中的负向约束（Prohibited rules）。</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="">利用 CC 的 Agent Teams 能力，让一个代理负责写规格，另一个代理负责审计代码，第三个代理负责集成测试。</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="">在 CC + OpenSpec 模式下，软件工程师的角色正在发生质变。如果 AI 能够根据完美的描述生成任何代码，那么 “代码” 本身就变成了编译后的中间产物，而 “规格” 才是核心产品。领域专家（Domain Experts）的重要性显著提升，因为他们能提供最高质量的业务意图描述。这种趋势将迫使开发者从关注 “语法实现” 转向关注 “系统设计” 和 “逻辑严密性”。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060217" src="https://wechat2rss.xlab.app/img-proxy/?k=47a3de26&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHspUYSMibSo8IGHtFN5I7Sib3otlbtrukTGjzV3VD4KCaPmqsHdI0uDCHnOlGnIfgVoLwwbVJxhWjkh5tkWfz6Ijf76IDNfGia3bw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">结语：AICoding 落地的飞轮正在转动</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="">在 2026 年，AICoding 已不再是科幻。Claude Code 提供的强大代理能力，配合 OpenSpec 提供的精密规格框架，为企业提供了一套可复制、可量化的研发新范式。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们必须承认，AI 编码的瓶颈从来不是模型不够聪明，而是我们与 AI 之间的 “沟通带宽” 太低且 “上下文” 太脏。通过上下文工程化管理（CC）和意图标准化表达（OpenSpec），我们正在构建一套让 AI 能够长期、稳定产出的工程环境。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">随着这一模式的普及，软件开发的门槛将进一步降低，而创新的上限将被无限拉高。AICoding 落地的飞轮已经转动，那些能够率先将 AI 编码能力转化为团队组织资产的企业，将在未来的数字化竞争中占据绝对的先机。毕竟，在 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5574074074074075" 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="100060216" src="https://wechat2rss.xlab.app/img-proxy/?k=ab240d39&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvH1GLTwg3pabrY06d1HeZHAYnrdiawaQM4ebY4lov2icLtD2KuVCVnoB1I4y0rxggFK53MFS0UwmABolVHxOSQg3Td5CUcBstLU%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><ol style="list-style-type: decimal;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=""><a href="https://thenewstack.io/context-is-ai-codings-real-bottleneck-in-2026/" target="_blank">https://thenewstack.io/context-is-ai-codings-real-bottleneck-in-2026/</a></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/" target="_blank">https://github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit/</a></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://solguruz.com/blog/spec-driven-development-guide/" target="_blank">https://solguruz.com/blog/spec-driven-development-guide/</a></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://medium.com/@eran.swears/why-bigger-models-wont-code-better-7e8761ebeb16" target="_blank">https://medium.com/@eran.swears/why-bigger-models-wont-code-better-7e8761ebeb16</a></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents" target="_blank">https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents</a></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://code.claude.com/docs/en/how-claude-code-works" target="_blank">https://code.claude.com/docs/en/how-claude-code-works</a></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://www.anthropic.com/engineering/code-execution-with-mcp" target="_blank">https://www.anthropic.com/engineering/code-execution-with-mcp</a></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://code.claude.com/docs/en/best-practices" target="_blank">https://code.claude.com/docs/en/best-practices</a></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://dev.to/webdeveloperhyper/how-to-make-ai-follow-your-instructions-more-for-free-openspec-2c85" target="_blank">https://dev.to/webdeveloperhyper/how-to-make-ai-follow-your-instructions-more-for-free-openspec-2c85</a></span></p></li></ol></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=2247543834&amp;idx=1&amp;sn=1f5dab2bdd20e7fd77e9fe1102986d1c&amp;scene=21#wechat_redirect" textvalue="大禹平台：流批一体离线Dump平台的设计与应用｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">大禹平台：流批一体离线Dump平台的设计与应用｜得物技术</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=2247543805&amp;idx=1&amp;sn=bafc980cb5dd8750aefa75353bcd1eab&amp;scene=21#wechat_redirect" textvalue="基于 Cursor Agent 的流水线 AI CR 实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">基于 Cursor Agent 的流水线 AI CR 实践｜得物技术</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=2247543782&amp;idx=1&amp;sn=74d16ca2d6ff61edf25579e9d2029eb5&amp;scene=21#wechat_redirect" textvalue="从IDE到Terminal：适合后端宝宝体质的Claude Code工作流｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">从IDE到Terminal：适合后端宝宝体质的Claude Code工作流｜得物技术</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=2247543717&amp;idx=1&amp;sn=e49b764abd65ffd07fe65d52f1c7b2c6&amp;scene=21#wechat_redirect" textvalue="AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术</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=2247543499&amp;idx=1&amp;sn=3a1331cc48391be631852ae0efa158b0&amp;scene=21#wechat_redirect" textvalue="搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术</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="100060214" src="https://wechat2rss.xlab.app/img-proxy/?k=df319ad8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuopOxK2Aa1ibmxwZZl4Vbe0FVoEqrlLjYSq9xutVNKl202Ut6XY5L7EF27xNwTibQc6nYnaUrMX7v2ITnUAkXx0reZGzYwgxZXQ%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=94e87dce&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543887%26idx%3D1%26sn%3D4b040af63cd6575b636c2378f6d1d511">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 23 Mar 2026 18:35:00 +0800</pubDate>
    </item>
    <item>
      <title>大禹平台：流批一体离线Dump平台的设计与应用｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543834&amp;idx=1&amp;sn=1f5dab2bdd20e7fd77e9fe1102986d1c</link>
      <description>针对得物搜推广场景，大禹离线 Dump 平台构建流批一体架构，依托统一 DAG 编排、镜像表与状态宽表实现低代码开发、数据同源同构及系统稳定，已落地社区搜索等业务，未来将持续提效并赋能多业务线。</description>
      <content:encoded><![CDATA[<p>原创 <span>野雨</span> <span>2026-03-18 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=e6f9b730&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuKesibd5nP6BRH0hlNCJIHbSibUQLWscZoyTZpTfDIGv0bYI91MDhgmQL9rtwdibAgFe9eJnOYdswoN93IbFIqKGtzxLicCv0Uhe8%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>针对得物搜推广场景，大禹离线 Dump 平台构建流批一体架构，依托统一 DAG 编排、镜像表与状态宽表实现低代码开发、数据同源同构及系统稳定，已落地社区搜索等业务，未来将持续提效并赋能多业务线。</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="">    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.小全量模式加速数据Dump</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="">    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: 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-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="">大禹平台是一个离线 Dump 平台。在不同的场景都有自己的 Dump 流程，我们这里的 Dump 特指在搜索、推荐、广告（后续简称 “搜推广”）的场景中，将异构数据源加工处理后给到索引平台做索引的流程。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Dump 流程有如下一些特点：</span></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;"><span leaf="">多源异构的数据：包括 MySQL、ODPS、HBase 和 Kafka 等各种数据源。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">多样化的输出：输出支持搜推广引擎构建倒排索引、Summary 服务构建 kv/kkv 索引等。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">流批数据结合：一般会有全量和增量，需要保证处理逻辑一致，增量能达到秒级更新。</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">数据处理能力：例如多表 Join、UDF、Filter 等，以方便业务的开发和接入。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2801664355062413" data-s="300,640" data-type="png" data-w="1442" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-croporisrc="https://mmbiz.qpic.cn/mmbiz_png/FMFU1P6sHHtbbiajRAq3jjdrFoR5v7ib658KVDQNuzsiawPty3ysC5rpibyjhYQOjAXBosKbABkPV6gQNCicsgCs5I3H944AOVgPVsgyRAHciaMEQ/0?wx_fmt=png&amp;from=appmsg" data-cropselx2="520" data-cropsely2="149" data-imgfileid="100060185" src="https://wechat2rss.xlab.app/img-proxy/?k=b856520b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtbbiajRAq3jjdrFoR5v7ib658KVDQNuzsiawPty3ysC5rpibyjhYQOjAXBosKbABkPV6gQNCicsgCs5I3H944AOVgPVsgyRAHciaMEQ%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="">离线 Dump 流程</span></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="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-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.8212962962962963" 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="100060161" src="https://wechat2rss.xlab.app/img-proxy/?k=53437703&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvhFeTibrdKDlPDNdR0ujsCPWXr4Xr3m6d0gauAyz8C2wnQv1JaSzEwBUTzROjDKhy6VgqMbhRJIpHk8hv5kpjsVb93cZ6zjDlg%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="">当前 dump 开发模式</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="">如上图是当前常见的 Dump 开发模式，采用了流批分离架构：流处理通过 DTS 订阅 binlog，由 Flink 消费主表变更事件并反查关联表构建宽表，实现增量更新；批处理则将 MySQL 数据抽取至 ODPS，通过 Spark 处理多源数据并按业务逻辑拼接，最终输出 ODPS 表。这种架构存在以下问题：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2777777777777778" 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="100060159" src="https://wechat2rss.xlab.app/img-proxy/?k=5d990f0d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHt7eVaNL5UiafYiafWObwVBJ1MXGmSmvJnAjqDMtyv0ulPTvRlv0NTZrhVcJ6ndO5GlpHIhHCpT6VjRaqkAnGXxm3XSd0v837x5c%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="">当前 dump 开发的问题</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="">依托社区搜索核心场景，构建流批一体化的新质 Dump 架构，实现以下三大核心能力突破：</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="">基于可视化 DAG 编排工具，提供低代码开发能力，通过拖拽式界面实现复杂任务流程的快速搭建与迭代，显著降低开发门槛。</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="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="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: 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-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.65" 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="100060162" src="https://wechat2rss.xlab.app/img-proxy/?k=42a3237d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsQLgZMmaLde5n5KPu5VzI1XHn3XozWSbszR05rXiaoraYITESHFeuzNDfk6S9oX847CAPPSrJZN7qXcZFI6j48zVcg9uFxEHSs%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 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="">如上图是大禹平台技术架构，底层依赖公司的 DJob Cron 定时任务、Flink/Spark 流批计算能力以及多种存储系统；上层为平台支持的搜推广多种场景业务。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">大禹平台分为管理平台与后台系统两部分。管理平台完成处理逻辑的 DAG 开发和相关 Debug、回归验证、监控大盘等能力；后台系统将管理平台的配置转为执行任务，然后依托流批框架生成 Flink/Spark 执行实例，通过调度引擎完成全流程任务执行。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">如下图是新版 Dump 流程，将 Dump 拆分为三个阶段：镜像阶段、宽表阶段、导出阶段，以及流、批两种处理模式。新版流程处理过程有如下优化：</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 镜像至 HBase：</span></strong><span leaf="">平台将任务依赖的 MySQL 数据统一同步至 HBase 构建镜像层，实现与上游 RDS 解耦。有效规避多任务并发反查导致的数据库压力，支持跨任务共享复用 HBase 镜像表，显著提升数据源稳定性与资源利用率。</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="">Binlog 订阅平台化：</span></strong><span leaf="">将 RDS Binlog 订阅流程深度内嵌，自动完成 DTS 订阅创建与 Kafka 资源申请，封装为标准化服务。开发者无需关注底层链路，一键配置即可获取实时变更流，降低接入复杂度，保障流式数据可靠性。</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="">基于 HBase 构建持久化状态大宽表，完整记录字段中间状态。任务处理时直接读取状态数据，彻底规避冗余反查逻辑，简化开发流程。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8796296296296297" 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="100060163" src="https://wechat2rss.xlab.app/img-proxy/?k=2e1c5d0b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvyzt2cnicAprZZKVS0ViaSnFOe40v1VdFPq1GgZicj2t23lPBrPrj21Feg7ZNjH6XTibyVpojtUqpOSrhB829LkqPiaWrY9ickcAbhs%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="">新版 Dump 流程</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;"><span leaf="">大禹平台利用得物 DJob Cron 自建调度系统，通过搭建多个 Cron Job 轮训的方式，完成对任务分阶段的处理。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.15185185185185185" 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="100060164" src="https://wechat2rss.xlab.app/img-proxy/?k=3e3acebe&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsaamPlmujv77hECiaHx92RhibOPJwzRUJHrPibdkfNUI5116j7oIxTs91I3OTaJRMHQKMDiaSqfUVt9wjAugNiaWHdIOjPWuwJvI84%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="">Cron Job 构建调度系统</span></p></div><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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.1259259259259259" 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="100060165" src="https://wechat2rss.xlab.app/img-proxy/?k=3a98947b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHt2DiaCv73iaiaqbznpJm8KByfcibSEr19fD6cNsNsZD5ic8BFSfEak6HY8DXWJgYdIdbXwtpj7TINCj7ocww9M5S9ibB6Opm7jvKD4g%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: 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="">在镜像、宽表、导出三个阶段，分别都有对应 Spark 和 Flink 处理框架。其中，镜像阶段完成 MySQL 数据同步，导出阶段完成状态宽表到引擎数据源的导出流程，宽表阶段是具体的业务逻辑实现。</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;width: 50%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><div style="text-align: justify;font-family: PingFangSC-light;font-size: 15px;padding: 0px 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="">宽表 Spark 框架逻辑：</span></strong><span leaf="">任务严格遵循 DAG 拓扑顺序，依次执行各算子节点（数据源→业务逻辑→导出）的数据处理流水线，最终通过 BulkLoad 方式将结果高效写入 HBase。</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: justify;font-family: PingFangSC-light;font-size: 15px;padding: 0px 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="">宽表 Flink 框架逻辑：</span></strong><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-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.3" data-s="300,640" data-type="png" data-w="740" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060168" src="https://wechat2rss.xlab.app/img-proxy/?k=59ba26d7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtG1bYbRXWlvrK74DgKHQOUyvBIONRd0olX5GgUHYzraDVsgaXSCyKxicCicCASGibrSKiabVsqibGnyLv5CsBUt7nyfhIca9icvhDdk%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.3" data-s="300,640" data-type="png" data-w="740" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060167" src="https://wechat2rss.xlab.app/img-proxy/?k=8cda3e17&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuW0tZe2IedWkjycaTFmqh4Ik9rZ0ADwjpMHYMeDXMOewj3yn8ctnqbsaqwgV7yMYMjWb5zGiavFqdRMFE6cib09aAzqTH88HWCQ%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: 50%;align-self: flex-start;flex: 0 0 auto;box-sizing: border-box;"><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="">宽表阶段 Spark 框架逻辑</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;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">宽表阶段 Flink 框架逻辑</span></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="">平台采用统一的 DAG 编排引擎，将流处理与批处理任务抽象为相同的计算拓扑，从架构层面保障数据源头的天然一致性，彻底规避因不同环境下开发导致的数据偏差风险。同时，平台内置标准化的 UDF（用户自定义函数）开发模板与运行时框架：开发者只需专注业务逻辑实现，编写的 UDF 代码经一次注册，即可无缝嵌入流式与批量处理流程，真正实现 “一次开发、流批复用”，显著提升开发效率，降低维护成本，保障 Dump 开发从数据源头到处理逻辑各环节的流批一致性。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">平台通过定义 AlgoDumpUDF 方法类，完成消息类型封装，用户可以利用 UDF 实现数据过滤和驱动删除等逻辑。</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="typescript"><code><span leaf=""><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">abstract</span> <span class="code-snippet__keyword">class</span> <span class="code-snippet__title">AlgoDumpUDF</span> <span class="code-snippet__keyword">implements</span> <span class="code-snippet__title">UDFFunction</span>, <span class="code-snippet__title">Serializable</span> {</span></code><br/><code><span leaf="">    <span class="code-snippet__comment">//消息类型 add/delete/drop 三种</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__title">AlgoDumpMessageType</span> algoDumpMessageType = </span></code><br/><code><span leaf="">    <span class="code-snippet__title">AlgoDumpMessageType</span>.<span class="code-snippet__property">MESSAGE_TYPE_ADD</span>;</span></code><br/><code><span leaf="">    <span class="code-snippet__meta">@Override</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__title">AlgoDumpMessageType</span> <span class="code-snippet__title">getStatus</span>() {</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">return</span> algoDumpMessageType;</span></code><br/><code><span leaf="">    }</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__meta">@Override</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">void</span> <span class="code-snippet__title">delete</span>(<span class="code-snippet__params"><span class="code-snippet__title">Object</span></span><span class="code-snippet__params"> key, </span><span class="code-snippet__params"><span class="code-snippet__title">String</span></span><span class="code-snippet__params"> reason</span>) {</span></code><br/><code><span leaf="">        <span class="code-snippet__variable">this</span>.<span class="code-snippet__property">algoDumpMessageType</span> = <span class="code-snippet__title">AlgoDumpMessageType</span>.<span class="code-snippet__property">MESSAGE_TYPE_DELETE</span>;</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">    <span class="code-snippet__comment">//调用该方法实现增量过滤</span></span></code><br/><code><span leaf="">    <span class="code-snippet__meta">@Override</span></span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">void</span> <span class="code-snippet__title">drop</span>(<span class="code-snippet__params"><span class="code-snippet__title">Object</span></span><span class="code-snippet__params"> key, </span><span class="code-snippet__params"><span class="code-snippet__title">String</span></span><span class="code-snippet__params"> reason</span>) {</span></code><br/><code><span leaf="">        <span class="code-snippet__variable">this</span>.<span class="code-snippet__property">algoDumpMessageType</span> = <span class="code-snippet__title">AlgoDumpMessageType</span>.<span class="code-snippet__property">MESSAGE_TYPE_DROP</span>;</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">    <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 class="code-snippet__keyword">public</span> <span class="code-snippet__built_in">void</span> <span class="code-snippet__title">process</span>() throws <span class="code-snippet__title">Exception</span> {</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="">CASE示例：用户通过重写process()方法， 实现自己的业务逻辑，实现时可以利用drop方法把无效数据过滤，利用delete方法实现对下游索引发送删除消息。</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="typescript"><code><span leaf=""><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">class</span> <span class="code-snippet__title">MyUdf</span> <span class="code-snippet__keyword">extends</span> <span class="code-snippet__title">AlgoDumpUDF</span> <span class="code-snippet__keyword">implements</span> <span class="code-snippet__title">Serializable</span> {</span></code><br/><code><span leaf="">    <span class="code-snippet__keyword">public</span>  <span class="code-snippet__title">Tuple2</span>&lt;<span class="code-snippet__title">String</span>, <span class="code-snippet__title">String</span>&gt; <span class="code-snippet__title">process</span>(<span class="code-snippet__title">String</span> id, <span class="code-snippet__title">String</span> taskname) </span></code><br/><code><span leaf="">    throws <span class="code-snippet__title">Exception</span> {</span></code><br/><code><span leaf="">        <span class="code-snippet__comment">//过滤消息</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">if</span>(<span class="code-snippet__title">StringUtils</span>.<span class="code-snippet__title">isBlank</span>(id)) {</span></code><br/><code><span leaf="">            <span class="code-snippet__variable">this</span>.<span class="code-snippet__title">drop</span>(id, <span class="code-snippet__string">&#34;drop by id null&#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__comment">//驱动增量删除消息</span></span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">if</span>(id.<span class="code-snippet__title">equals</span>(<span class="code-snippet__number">0</span>)) {</span></code><br/><code><span leaf="">            <span class="code-snippet__variable">this</span>.<span class="code-snippet__title">delete</span>(id, <span class="code-snippet__string">&#34;delete by id = 0&#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__comment">//用户写具体业务逻辑</span></span></code><br/><code><span leaf="">        <span class="code-snippet__title">String</span> a1 = <span class="code-snippet__string">&#34;&#34;</span>;</span></code><br/><code><span leaf="">        <span class="code-snippet__keyword">if</span> (taskname.<span class="code-snippet__title">equals</span>(<span class="code-snippet__string">&#34;dddddd&#34;</span>)) {</span></code><br/><code><span leaf="">            a1 = <span class="code-snippet__string">&#34;ddd&#34;</span>;</span></code><br/><code><span leaf="">        }</span></code><br/><code><span leaf="">        <span class="code-snippet__title">String</span> b1 = <span class="code-snippet__string">&#34;test&#34;</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">Tuple2</span>&lt;&gt;(a1, b1);</span></code><br/><code><span leaf="">    }</span></code><br/><code><span leaf="">}</span></code><br/></pre></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);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="">小全量模式加速数据Dump</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-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="">基于现有状态大宽表，仅针对批处理来源字段加载最新数据源快照，经处理后通过 BulkLoad 高效写入 HBase；依托 HBase 多版本特性实现新旧数据平滑切换，确保批处理数据增量更新过程中查询服务零中断、数据时效性与业务连续性兼得。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.3262092238470191" data-s="300,640" data-type="jpeg" data-w="889" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060166" src="https://wechat2rss.xlab.app/img-proxy/?k=10dc3e95&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHvfc277yDkK72gEN1KiabxmeZm3NEpCHibdVUL9wmZosxTibZkeTLric842n1IueAwpjVxicaOsgGh1XRZRTJ7Nft8XqE79H1XfuBI0%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-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="">大禹平台支持任务产出的双重应用：既可对接计算引擎（如 CEngine），亦可作为公共数据被下游任务高效复用。平台通过标准化的 MirrorOut（导出）与 MirrorIn（接入）算子构建清晰的数据复用链路 —— 上游任务将公共数据配置为 MirrorOut 导出，下游任务通过 MirrorIn 算子一键引用，无需重复开发与数据搬运，实现数据资产的即产即用、任务依赖的显式管理，显著提升开发效率与数据复用性。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9194756554307116" data-s="300,640" data-type="jpeg" data-w="1068" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060170" src="https://wechat2rss.xlab.app/img-proxy/?k=22cd1e3d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHu9uKbbviaVoJM3JHTUPjGOQuArce8iaf6bticweBnXwolD8LCLzBpHUmwokPM9C5EjSSTciashpcS1xnIlB9FNibWlwicoPD66iaSSpY%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="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="">管理平台提供一站式任务开发生命周期管理，涵盖任务创建、可视化流程编排、实例调度与资源管控等核心环节；其中，Dump 任务通过可视化编排实现业务配置——用户仅需拖拽算子节点、配置参数，即可直观构建数据处理逻辑，显著提升开发效率与配置准确性。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6212962962962963" 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="100060173" src="https://wechat2rss.xlab.app/img-proxy/?k=04f53c2b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHu53yrr66T9BtqswUyFZuia3A9t3VKUaqwlibib70Vhia7b2Gc8YMkr2Jo0sQRrK6Zibm1icrRrrSQFXHPPCA1mzJUd7hSTxEvUkEbtA%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="">如下图，通过拖拽算子的方式，可以直观地构建 dump 任务的流程图，实现便捷高效的开发体验。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.44166666666666665" 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="100060172" src="https://wechat2rss.xlab.app/img-proxy/?k=a2a2fd0b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvyDR2kaNlkLFUIQ5XDuUGxnBURLuUBvWVVIibPXrBVTv8Jy2egcuicOrXOncQ12q9HOcXmZicFY9Ys37boPtoZ4obLV2IL4JIU9o%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-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-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.38425925925925924" 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="100060171" src="https://wechat2rss.xlab.app/img-proxy/?k=637bc012&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuAmdOhCKgg6xg8ibKt126SfO7iacl33qAteyIxPpYAyxDDVRHwHibMumib6J4HgUTANiaa4ZUF8sr9j1jWvYPEnxz0m0g5Z1QxN2Jc%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 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></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="">批量回归：</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;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.7411385606874329" data-s="300,640" data-type="png" data-w="931" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060169" src="https://wechat2rss.xlab.app/img-proxy/?k=74122fc8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsLiaXguT5JtFicCsKfrobj2X2gicHeHIS0AUBm1pce3tdKyHsYL6t4dCtCIKj31ibglGO8SInhkRQabryO4C7fScOgdacvzwczJdI%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 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.2959183673469388" data-s="300,640" data-type="png" data-w="784" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060175" src="https://wechat2rss.xlab.app/img-proxy/?k=8918c952&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuGt0jIyEpcCZAEr0FCOBbLpKBeG2ZyvGKhzDCFSWrNRpqlrdg3fzNPSEj0yCTic5kmHxTXsZ8Sv9ibYBm5ibmOcdOdLotlFndzJQ%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 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="">数据Debug</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-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="">Dump流程：</span></strong><span leaf="">支持Dump构建流程的调控，实现对全链路流程的问题快速定位，保障数据产出的稳定性与高效性。</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-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.603448275862069" data-s="300,640" data-type="jpeg" data-w="1044" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060176" src="https://wechat2rss.xlab.app/img-proxy/?k=d396d4e9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHurNhAibQ8mlZqbiafkMW8THuyxnicnFrASa6jMcVTawapSI8R8srv3970lKYVVgHp3S7mrh3btcFVg3ujS1UG7cRHSghicBtK5Uk4%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></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;"><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-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="">如下图所示，社区搜索倒排表 Dump 任务以动态内容为核心实体，融合动态实时内容流、天级统计特征及商品多维特征，通过流批一体处理生成高时效的倒排索引宽表。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6608784473953013" data-s="300,640" data-type="png" data-w="979" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060174" src="https://wechat2rss.xlab.app/img-proxy/?k=8e8eefe4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHt4MRJJgOCAoTD5YREBqk7PeOyiaJ0plxy3z7VHU6MX0RIpQQDJiabUXFY8Z22lia89c93B7OyRLpdmRDK0W31WAfw3icPGfUZFyNw%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;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.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="100060178" src="https://wechat2rss.xlab.app/img-proxy/?k=b57aeed1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtklJsFaU6y41QMKBEGglUqQHZFLbib62H4ib3pXgR4sWRw7Ba8TZ19Dh1RuY7bmC2ibzyvg6icickCrZzVM4AR75IXJRkqkjgJTGvs%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="">如下图所示，穿搭精选推荐 Dump 任务以动态-商品关系为核心主表，融合动态维度的多源流批特征数据（如内容特征基础表、内容审核表、天级离线统计特征表等），利用DAG 编排构建动态-商品的大宽表。</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: 90%;height: auto;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="100060177" src="https://wechat2rss.xlab.app/img-proxy/?k=101ff9e3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsoXl1iaIzUWViab9uWI6gM0zAMKTrUhLmyXVeun0RXPBpY4WHfXpgnCOygFTCPdZXMvQeUP98qkRiayWp4qNDC9Zk6sQNzZN9ej0%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;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.3611111111111111" 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="100060180" src="https://wechat2rss.xlab.app/img-proxy/?k=292b3b03&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHteHJbBHia8IoXRc9FLjFibEOaCt97GRViaHUZhxbu3Cib1AjlJgTbhPOg1e8hY7drZEQWkcP862uln8T52jIRicVRDAgg0jNg2TP8M%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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-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-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="">基于业务场景持续增强关键算子（如维表动态更新、Service 服务化算子、UDTF 部署优化等）和优化调度流程，强化数据处理灵活性；</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="">构建覆盖全局大盘与任务粒度的监控体系，完善资源消耗追踪、Debug 与全链路 Trace 能力，夯实平台稳定性与运维支撑基础。</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-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="">聚焦索引构建效率攻坚，与索引平台深度协同重构数据同步链路。以社区搜索大宽表为例，当前同步耗时近3小时，通过消除冗余中间状态、精简处理流程，可以实现索引构建端到端提速，显著压缩数据准备周期。</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-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.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="100060181" src="https://wechat2rss.xlab.app/img-proxy/?k=03f482c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsZnm4jBHChBgAI36v2wVRibiahuEmIFkIjEf2xbUEB8icy850500iaVpZAHOGesmkQ4jkDsRTEo95ZYeUYEa5Oicnp8XNaHreicvTeg%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 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=2247543805&amp;idx=1&amp;sn=bafc980cb5dd8750aefa75353bcd1eab&amp;scene=21#wechat_redirect" textvalue="基于 Cursor Agent 的流水线 AI CR 实践｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">基于 Cursor Agent 的流水线 AI CR 实践｜得物技术</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=2247543782&amp;idx=1&amp;sn=74d16ca2d6ff61edf25579e9d2029eb5&amp;scene=21#wechat_redirect" textvalue="从IDE到Terminal：适合后端宝宝体质的Claude Code工作流｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">从IDE到Terminal：适合后端宝宝体质的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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543717&amp;idx=1&amp;sn=e49b764abd65ffd07fe65d52f1c7b2c6&amp;scene=21#wechat_redirect" textvalue="AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术</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=2247543499&amp;idx=1&amp;sn=3a1331cc48391be631852ae0efa158b0&amp;scene=21#wechat_redirect" textvalue="搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术</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=2247543475&amp;idx=1&amp;sn=6b31e2ad029864ede35100b16ce20606&amp;scene=21#wechat_redirect" textvalue="得物社区搜推公式融合调参框架-加乘树3.0实战" data-itemshowtype="0" linktype="text" data-linktype="2">得物社区搜推公式融合调参框架-加乘树3.0实战</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="100060179" src="https://wechat2rss.xlab.app/img-proxy/?k=7553d2e4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHu4Om2tnLzulll7EnNIA8gsopcSSw8wkaPUh02Ihloj3trmqkX1mmOUibDiadBe46iaVjq3yGm4tuOjhXibK6riaMBdo1AA1iaPDutSE%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=8291f245&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543834%26idx%3D1%26sn%3D1f5dab2bdd20e7fd77e9fe1102986d1c">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 18 Mar 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>基于 Cursor Agent 的流水线 AI CR 实践｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543805&amp;idx=1&amp;sn=bafc980cb5dd8750aefa75353bcd1eab</link>
      <description>基于Cursor Agent CLI打造流水线集成式AI CR实践方案，实现MR创建及代码提交全流程自动触发审查，搭配标准化提示词工程与适配模型选型，兼顾智能检测与人工兜底，大幅提升代码评审效率，有效降低线上问题风险，落地后有效问题检出率与研发使用意愿双提升。</description>
      <content:encoded><![CDATA[<p>原创 <span>大圣</span> <span>2026-03-16 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=b85857ba&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsBdf6uibLj3Rc34ribqnC6dVq7AMUWuZBJRyK9IqMpet37JvKticXiaHicnU0QoFCcghxNV52y90HKa596yUNtqiavRZNzj9HeGiakos%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>基于Cursor Agent CLI打造流水线集成式AI CR实践方案，实现MR创建及代码提交全流程自动触发审查，搭配标准化提示词工程与适配模型选型，兼顾智能检测与人工兜底，大幅提升代码评审效率，有效降低线上问题风险，落地后有效问题检出率与研发使用意愿双提升。</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="">二、前端研发 CR 现状与可优化点</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.CR 现状</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="">三、AI CR 方案对比分析</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.Cursor Agent CR 主要优势</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.流水线集成 CR 与本地 AI CR 差异</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="">五、MR 流水线接入与 AI CR 报告</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.AI CR 报告</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.AI 智能解决</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    7.复制 Prompt</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.尽早创建 MR</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.尽早创建 MR</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.人工 CR</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: 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="">在实际迭代开发中，不同需求的代码规模差异很大，有些需求涉及上千行代码，有些则只有一两行。且对于前端的代码验收，主要侧重在界面功能，通过功能验收，没法确保每一行代码都测试到的，以及功能的代码逻辑是否合理，是否健壮、是否规范等问题，都需要通过人工代码 CR 来进一步兜底验收代码的质量，尽量降低业务线上出错的可能。但当面对上千行的代码变更时，人工 CR 也是心有余而力不足。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">传统的代码审查依赖人工，面对大规模代码变更时效率有限，而 AI 代码审查能够实现自动化、标准化的质量检查，有效补充人工审查的不足。</span></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="">前端研发 CR 现状与可优化点</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="">CR 现状</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="">目前前端研发同学主要使用的代码质量保障工具有前端 Apex 插件智能体、Uraya 质量分检测。其中 Apex 插件智能体是通过前端研发自助点击或 git hook 自动触发 CR 智能体执行，智能体内定制了 CR 规则以及与 MCP 的结合，利用 Cursor IDE 的 Agent 能力进行本地 AI CR ，找出代码问题、本地解决问题。Uraya 质量分检测是在创建 MR 后，通过流水线自动触发，Uraya 质量分检测代码变更的质量分浮动，产出具体问题的记录，引导研发优化代码。</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><p style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ol style="list-style-type: decimal;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="">本地触发 CR 需要研发同学主动点击触发或者通过 Apex git hook 执行 CR 智能体，当开发的需求多、分支多、提交次数多的时候，时长容易漏触发、忘记点。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">对于 MR 评审人员，如果希望通过 Cursor CR 时，需要在本地通过调用 CR 智能体再执行一遍，获取 CR 结果，在目前 Cursor 按量计费的背景下，重复执行 CR 智能体的成本需要及时关注。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当前流水线 Diff + 大模型 API 的 AI CR 方式，误报率较高，研发使用意愿较低。</span></p></li></ol></p><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="">AI CR 方案对比分析</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 CR 方案进行了深入对比。</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="">Cursor Agent CR 主要优势</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060137" data-ratio="0.225" 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=661d0e62&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvazPBps6dFY4eBgxJIicRicCMCEQqGeIInvVbTtiaaLvyyVIyhNEpKXZfT8xT659eX6rP3UGWzvzic4QxxhjajWdiab3s1M6VZsm60%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="">流水线集成 CR 与本地 AI CR 差异</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060139" data-ratio="0.31203703703703706" 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=761a978d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuUib4icwVQatc6QJ9ZVQfrq6fTCxcHtlHdbXGJO5n9DvvAfw8MYEoUC1V4lA3Qhu4mSz1Q5nGn7SlxxplbD1VkBwtCCUoCRIyJY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><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="">结合目前现状与可优化点，我们期望能像 Uraya 质量分检测一样，在 MR 过程中通过流水线自动触发，中途每次代码提交也能自动触发，对于流水线中的 CR 不满意时，可以结合 Apex CR 智能体进行本地 CR 调整代码。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为此我们考虑结合 Cursor Agent CLI 在流水线中增加一个 AI CR 的任务，自动触发 Cursor Agent 代码 CR，并记录 CR 结论，及时展示给研发或者代码评审的同学，辅助代码质量优化。</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-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 class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060138" data-ratio="0.3907407407407407" 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=f0897daa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHujF7mdhAhfpP7mScaXibFRVKn6CPMqlNRsAy5Lg6j9Qz0miaO1ayKFpKn4YSx4J0Xzjia7kftXhx04Tb26vbo0L34ibXUVJomQtbU%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><p style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><ol style="list-style-type: decimal;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当研发创建 MR 后，流水线配置了 AI CR 检测流水线后，将会自动触发 Cursor Agent CR 任务。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">接收到检测任务后，将会前置将该仓库准备好，并将 MR 的信息以及制定的 CR 规则，一并交给 Cursor Agent CLI 执行，待执行完成，会得到一份 CR 报告。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">接收到检测任务完成后，目前会通过 MR 评论的方式添加到对应的 MR 中，引导用户查看。</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="">对于 CR 人员视角，打开审查报告，可以根据审查出的问题，一键添加到评论，引导开发者修改。</span></p></li></ol></p><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;"><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="">MR 流水线接入与 AI CR 报告</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="">以下图 MR 为例，在 MR 流水线中，添加了仓库流水线 AI 检测的检测任务，当创建 MR 时，会自动触发执行一次，在 MR 未合入的过程中，每次代码变更也会自动触发。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-croporisrc="https://mmbiz.qpic.cn/sz_mmbiz_jpg/FMFU1P6sHHvLUVVALK0nyfiagxT0ibDHVn9ZQv6DUEjonT0Y8eJiaxdAcZxSpQnFdfFl52X1A91Wpp1I31icHv2PtFia7aluTPh5KwdABn1niagmI/0?wx_fmt=jpeg&amp;from=appmsg" data-cropselx2="520" data-cropsely2="352" data-imgfileid="100060155" data-ratio="0.67578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="jpeg" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=b244a061&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvLUVVALK0nyfiagxT0ibDHVn9ZQv6DUEjonT0Y8eJiaxdAcZxSpQnFdfFl52X1A91Wpp1I31icHv2PtFia7aluTPh5KwdABn1niagmI%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="">检测完成后会自动添加一条 MR 评论，通知研发已完成检测，可以点击查看 CR 报告。评论概览中有审查摘要，显示聚类问题的数量；还有审查总结，即对所有反馈的总结，概览问题。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060136" data-ratio="0.1648148148148148" 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=f775f1ab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuuz4ZFgwaArfMU4NQcicgDQWGOx7xicVG9xgezdB7YxPiavEc1ZTpBuODhJp8r34x311bxzsYacxZVQ9oGSlDJf9otxAtBY6yibnU%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="">AI CR 报告</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="">以下为实际 MR 生成的 CR 报告，可以看到，报告主要包括：MR 的基础信息、问题的分类 Tab、问题的具体描述、问题的操作。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.49765625" 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/FMFU1P6sHHum24UMVb6Zib8ibCWH8LoPr6z0VylkueARhdc8v8MU7aGPBjNNueStHFGHWPcuNraN09oOkSvrN4xAWic7r49TyMy9pwbrMYJoPA/0?wx_fmt=jpeg&amp;from=appmsg" data-cropselx2="520" data-cropsely2="260" data-imgfileid="100060156" src="https://wechat2rss.xlab.app/img-proxy/?k=df964e93&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHum24UMVb6Zib8ibCWH8LoPr6z0VylkueARhdc8v8MU7aGPBjNNueStHFGHWPcuNraN09oOkSvrN4xAWic7r49TyMy9pwbrMYJoPA%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="">首先报告列表会对问题进行聚类，分为严重问题、警告、建议三类，切换对应 Tab 可以看到问题列表。具体的问题信息，主要有类型、问题代码、修复后代码、描述、文件路径、行号、操作等列。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.26944444444444443" 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="100060143" src="https://wechat2rss.xlab.app/img-proxy/?k=407652ec&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsxJgnwCiaEdPicsaZxIDxsTX6GVev0M8lGmwgWvJjpTUlWuHjcfDvD23LHLXwGUa9pQibUdLviapwiaXpHiaTFfsCMLuQ6wUq4B09B8%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="">点击操作列的添加到评论，将会一键将相关问题的信息，生成格式化描述，添加到 MR 的评论中，提醒开发者关注问题、解决问题。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5064814814814815" 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="100060145" src="https://wechat2rss.xlab.app/img-proxy/?k=53a35fc1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtbVquEUESVDuTnsG4sib5cZYBTvbVDp1Iicm5VkXzpsMFhKTbTeibormEQnT0cxJAwDlwRGPEmtTWiaZ5YLibqkYt07Jib3YHic3XYKo%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="">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="">点击操作列的 Cursor 解决，将会一键将相关问题的信息，生成解决问题 Prompt，一键打开本地 Cursor ，创建 Agent 对话去解决问题。打开链接后，Cursor 会先接收 Prompt ，你可以简单浏览下，点击 Create Chat ，即可一键创建 Chat，回车执行修复。</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;width: 32%;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="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.4547169811320755" data-s="300,640" data-type="png" data-w="530" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060142" src="https://wechat2rss.xlab.app/img-proxy/?k=77826603&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsibVZRicyOHUzQAe9jP1iaptSWZU8wRCemyBibdmNrxU7CMSdrdR5ndv0IGBibeIs5c8XMtgFp52fIHnITnoabSkicD6ibmJfjGN1WKE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div></div><div style="display: inline-block;width: 68%;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="vertical-align: middle;display: inline-block;line-height: 0;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060141" data-ratio="0.6874265569917744" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="851" src="https://wechat2rss.xlab.app/img-proxy/?k=b7d36a59&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsav7fk34m40PqyYbJFV3lIbkQbNNFNiaoNnlrN7dHdMicf3ibDiciaorePoSOlSjgfzibHhIqlhGTTGfdsrAeqodYTILLGVuBYicZsnI%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;width: 40%;vertical-align: top;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="">Cursor Prompt 预览</span></p></div></div><div style="display: inline-block;width: 60%;vertical-align: top;align-self: flex-start;flex: 0 0 auto;height: auto;box-sizing: border-box;"><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="">确认填入 Chat 执行</span></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="">复制 Prompt</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="">点击复制 Prompt，支持一键复制修复问题 Prompt，可以放到期望的 IDE 里使用。如下图，就是复制的 Prompt 示例。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060149" data-ratio="1.2132701421800949" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1055" src="https://wechat2rss.xlab.app/img-proxy/?k=57883ff1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtprmu4QiaeUTCcUJqrc7kHMSrszGaASQk9URfNa2lJuOYpfBibeeAGzeDGKQvOyhjIb7N19MA9OKPwbzJfwULmO46PWDqkcOw8o%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="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="">尽早创建 MR</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="">当需求分支第一次提交后，就可以创建到 release 或 test 目标分支的 MR 了，后续每次提交代码都将会自动触发检测，产出 AI CR 报告。</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="">研发收到 AI CR 报告的通知后，可以及时打开 CR 报告查看，确认反馈的疑问点是否需要调整，如果需要调整可以通过 Cursor 一键解决，将问题解决前置到提测以前，这样所有的改动可以尽可能的被测试同学验证到。</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="">人工 CR</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="">发布前最后的人工 CR 可以通过前置的 AI CR 发现与问题前置解决，大幅提升靠最后人工 CR 的反馈、修改等环节效率。特别是当业务需求代码量较大时，人工 CR 浏览的效率和质量也是无法保证的。</span></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="">AI CR 其实就像给 AI 一个详细的检查清单。这个清单分两部分：一部分是基本规则，比如&#34;你要扮演什么样的角色&#34;、&#34;按什么流程检查&#34;；另一部分是具体的技术要点，比如&#34;注意空指针问题&#34;、&#34;检查React用法是否正确&#34;等。有了这个清单，AI 就能像有经验的程序员一样，系统地检查代码，发现各种潜在问题，让代码质量得到保障。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">具体这个规则体系的结构如下：</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="">.cursor/rules</span></code><br/><code><span leaf="">├── <span class="code-snippet__number">00</span>-role-<span class="code-snippet__keyword">and</span>-constraints.mdc          <span class="code-snippet__meta"># 角色与约束 - 定义AI代码审查助手的角色和基本约束条件</span></span></code><br/><code><span leaf="">├── <span class="code-snippet__number">01</span>-workflow-steps.mdc                <span class="code-snippet__meta"># 工作流程步骤 - 描述代码审查的工作流程和步骤</span></span></code><br/><code><span leaf="">├── <span class="code-snippet__number">02</span>-detection-standards.mdc           <span class="code-snippet__meta"># 检测标准 - 定义代码问题的检测标准和准则</span></span></code><br/><code><span leaf="">├── <span class="code-snippet__number">03</span>-output-format.mdc                 <span class="code-snippet__meta"># 输出格式 - 规定代码审查结果的输出格式和规范</span></span></code><br/><code><span leaf="">├── <span class="code-snippet__number">04</span>-best-practices.mdc                <span class="code-snippet__meta"># 最佳实践 - 提供代码审查中的最佳实践建议</span></span></code><br/><code><span leaf="">├── common                               <span class="code-snippet__meta"># 通用规则目录 - 包含各种常见的代码问题检测规则</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">01</span>-<span class="code-snippet__literal">null</span>-pointer-defense.md       <span class="code-snippet__meta"># 空指针防御 - 防止空指针异常的最佳实践</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">02</span>-react-hooks-usage.md          <span class="code-snippet__meta"># React Hooks 使用 - React Hooks 的正确使用方式</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">03</span>-data-merge-state.md           <span class="code-snippet__meta"># 数据合并状态 - 处理数据合并时的状态管理问题</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">04</span>-<span class="code-snippet__keyword">async</span>-programming.md          <span class="code-snippet__meta"># 异步编程 - 异步编程模式和常见陷阱</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">05</span>-memory-leak-performance.md    <span class="code-snippet__meta"># 内存泄漏性能 - 检测和防止内存泄漏问题</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">06</span>-security-coding.md            <span class="code-snippet__meta"># 安全编码 - 安全编程实践和漏洞防范</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">07</span>-compatibility.md              <span class="code-snippet__meta"># 兼容性 - 确保代码兼容性的检查点</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">08</span>-git-conflict-detection.md     <span class="code-snippet__meta"># Git 冲突检测 - 检测并解决 Git 合并冲突</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">09</span>-code-quality.md               <span class="code-snippet__meta"># 代码质量 - 代码质量评估和改进规则</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">10</span>-resource-handling.md          <span class="code-snippet__meta"># 资源处理 - 正确处理系统资源的规则</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">11</span>-url-<span class="code-snippet__keyword">params</span>.md                 <span class="code-snippet__meta"># URL 参数 - URL 参数处理的安全和有效性检查</span></span></code><br/><code><span leaf="">│   ├── <span class="code-snippet__number">12</span>-business-logic-consistency.md <span class="code-snippet__meta"># 业务逻辑一致性 - 确保业务逻辑一致性的规则</span></span></code><br/><code><span leaf="">│   └── <span class="code-snippet__number">13</span>-monorepo-dependency.md        <span class="code-snippet__meta"># 大仓依赖 - Monorepo 架构中的依赖管理规则</span></span></code><br/><code><span leaf="">└── README.md                            <span class="code-snippet__meta"># 说明文档 - 规则系统的介绍和使用说明</span></span></code><br/></pre></p><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="">在 AI CR 环节，模型的选择需要考虑模型对于代码理解的复杂性、上下文长度需求以及推理准确性、模型的速度、模型的使用成本等考量。在 Cursor 的模型列表中，我们优先使用 Compose 1.5，当额度不足时，我们也会降级使用 Auto 模型。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">以下为 Cursor auto 模型与 Composer 1.5 模型对比，可以看出，两个模型都找出了 4 个问题，但在时间上，Composer 1.5 进行需 44 秒即可完成，而 auto 模型需要 91 秒。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3125" 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="100060148" src="https://wechat2rss.xlab.app/img-proxy/?k=cb41a381&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvBW0ULeSYopyuUar7wsE67DzryrQZRtAw6iaBWsOrvXdONgzzhLRJTuI7vElbia0aVQy2mf7NgOJtpC8rOQVYEmstNH4LNoQFWw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><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="">通过多个迭代实践与数据统计，Cursor Agent CR 挖掘的有效问题数可以达到 50% 左右，研发使用的意愿也相比原来有不少提升。当前我们也在将 AI CR 报告融合到 Cursor IDE 插件中，进一步融合到研发流程里。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">随着 AI 生成代码在开发流程中越来越普遍，AI CR 的重要性将进一步凸显。相比传统的人工审查，AI 审查能够自动发现 AI 生成代码中可能存在的逻辑错误、安全性问题和规范性缺陷，提前在开发过程中消除隐患。同时，AI CR 还能确保 AI 生成的代码符合团队的技术规范和最佳实践，保持代码风格的一致性。为 AI 时代的开发流程提供了可靠的质保机制，让开发流程更加顺畅，是现代软件开发的重要保障。</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=2247543782&amp;idx=1&amp;sn=74d16ca2d6ff61edf25579e9d2029eb5&amp;scene=21#wechat_redirect" textvalue="从IDE到Terminal：适合后端宝宝体质的Claude Code工作流｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">从IDE到Terminal：适合后端宝宝体质的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=2247543717&amp;idx=1&amp;sn=e49b764abd65ffd07fe65d52f1c7b2c6&amp;scene=21#wechat_redirect" textvalue="AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术</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=2247543499&amp;idx=1&amp;sn=3a1331cc48391be631852ae0efa158b0&amp;scene=21#wechat_redirect" textvalue="搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术</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=2247543475&amp;idx=1&amp;sn=6b31e2ad029864ede35100b16ce20606&amp;scene=21#wechat_redirect" textvalue="得物社区搜推公式融合调参框架-加乘树3.0实战" data-itemshowtype="0" linktype="text" data-linktype="2">得物社区搜推公式融合调参框架-加乘树3.0实战</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=2247543318&amp;idx=1&amp;sn=ddb8f1a7acae9ee4b4f25c392c527eb4&amp;scene=21#wechat_redirect" textvalue="深入剖析Spark UI界面：参数与界面详解|得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">深入剖析Spark UI界面：参数与界面详解|得物技术</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="100060146" src="https://wechat2rss.xlab.app/img-proxy/?k=e8b781bb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuuQVsGK5wEWsM83AVakT98iaAo7FobStiaT0qzPIicyqK8zGMVSjia6U5dibHkJWTicWlxYiavm4icQXlCozNICSQQrDvp3TtmktPyg2E%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=7d18e45c&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543805%26idx%3D1%26sn%3Dbafc980cb5dd8750aefa75353bcd1eab">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 16 Mar 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>从IDE到Terminal：适合后端宝宝体质的Claude Code工作流｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543782&amp;idx=1&amp;sn=74d16ca2d6ff61edf25579e9d2029eb5</link>
      <description>实战打磨的 AI 辅助编程工作流，从 Claude Code CLI 选型、多屏协作、GUI+TUI 无缝衔接，到多 Agent 架构与 CC 六大拓展技巧，全是可直接复用的实战经验，帮你高效用好 AI 编程，大幅提升开发效率。</description>
      <content:encoded><![CDATA[<p>原创 <span>羊羽</span> <span>2026-03-13 14:07</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=31551aa4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtgbVKyic3a1KZteXcBB6M17PujtevnUuTfLicWiaZUiazOllmzvNWSiandx7cibvmGgFr6X2EZt9nxbE1vKAl5nbtN2hxdOKibwoUbUQ%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>实战打磨的 AI 辅助编程工作流，从 Claude Code CLI 选型、多屏协作、GUI+TUI 无缝衔接，到多 Agent 架构与 CC 六大拓展技巧，全是可直接复用的实战经验，帮你高效用好 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="">二、工具选型</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.Claude Code CLI</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.GUI/TUI衔接</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.规范驱动开发(SDD)</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、CC拓展</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.命令(command)</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.技能(skill)</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.子代理(subAgent)</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.MCP</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.钩子(hook)</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    6.插件(plugin)</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、CC技巧</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.飞书MCP</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.WebFetch</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.WebSearch</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    5.iTerm2通知</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.注意力哨兵</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    8.拓展市场</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    9.状态行个性化</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">七、总结</span></p></div></div></div></div></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="">事情是这样的，之前对 AI 编程一直是观望态度，但是部门最近在做 AI 辅助编程 POC，有幸成为 POC 用户，用上了自己舍不得买的高级编程模型 （感谢公司）。尽管我自认为是一个在代码上很挑剔的人，但是试了下感觉居然还可以 （Go、React）！只能说还得是谷歌，调整重心略微发力，Gemini 3 表现确实很不错。既然尝到甜头了，觉得自己是时候好好地琢磨琢磨，研究研究，沉淀一套自己的工作流、方法论，解放自己的生产力，顺应潮流努力成为 AI 时代的受益者，而不是被淘汰的人！</span></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;"><span leaf="">新的开发范式需要搭建新的开发环境和匹配自己开发习惯的工作流，这就像刚学编程那会，需要挑一个自己喜欢的 IDE、熟悉 IDE 快捷键和优化 IDE 设置一样。过程中间肯定有阵痛，Java 开发者们回忆一下多年之前从 Eclipse 转 IDEA 那会的阵痛吧，但是磨刀不误砍柴工，阵痛之后一定是生产力提升。借本文分享下我摸索后的方案，供大家参考。</span></p></div></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="">目前 AI 辅助编程领域热火朝天，各种 GUI 工具、TUI 工具如雨后春笋让人目不暇接，这对于花心的强迫症选手（比如我）来说选型很困难。但是我觉得有两个基础认知可以帮助我们更好地做决定：</span></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;"><span leaf="">（一）AI 辅助编程工具由脑和手两部分组成。脑是外接的大模型 API，手是各个产品调教的提示词和内部工作流。按我理解，【脑】决定了工具的上限，【手】决定了工具的下限。在这个场景里，大模型就像是汽车里的发动机，而且所有型号的汽车支持的【发动机】规格都是通用的、统一的、标准化的。有了这个基础，我们可以随便选一个趁手的工具，然后自行按场景选配【合适】的【发动机】。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060102" data-ratio="0.5558375634517766" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="788" src="https://wechat2rss.xlab.app/img-proxy/?k=271d4bad&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvFEicTPFpLneTwXeS9qExEMM39LUpH2YVb6fvBC7OouONpJh8hw5Au17IpG5rcmfxlElbOI5FSYYvnvVolBmU6KicNk8AicLyNVw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><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;"><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: 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 辅助编程当前是一个【千帆竞发】的热门领域，而且单纯就【工具】来说，这个领域【没有技术壁垒】。A 产品抛出的杀手级特性，不出半个月一定会有 B 产品跟进。毕竟现在软件迭代的速度借助 AI 提升了很多，A 产品验证过的想法，B 产品可以很快地跟进和实现。Claude Code CLI 的开发者就使用 Claude Code CLI 迭代 Claude Code CLI，有点绕口，大概就是【工具自举】的意思吧。</span></p></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="">Claude Code 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="">综上，其实没啥纠结的，我们照着这两点来选型就好：1. 这个工具一定得便捷地支持模型插拔，就是我随时可以根据场景换一个更适合的、更便宜的、表现更好的大模型。而且这种插拔一定要简单。 2. 这个工具一定要有积极的维护者，不断地迭代、优化它的工作流、提示词。最好是一个商业化产品，因为商业化产品出于其商业目标，一定会投入资源积极进行迭代。 </span></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;"><span leaf="">当前满足这两个条件的，我想也就是 Claude Code CLI 了： 1. Claude Code CLI 是一个商业化产品，有专门的技术团队在不停地更新、迭代。 2. Claude Code CLI 可以非常便捷地支持大模型插拔，我可以随时根据成本、效率、体验来切换合适的大模型。因此，这个环节我选 【Claude Code CLI】。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">后文以CC代指Claude Code CLI。</span></p></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="">我通过自定义 Shell 函数来实现便捷的模型切换，不同的场景、不同的任务使用不同的模型。基本原理就是，CC 支持环境变量注入 LLM 配置信息，因此我只需要按场景注入【行内临时环境变量】即可。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060101" data-ratio="0.25458996328029376" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="817" src="https://wechat2rss.xlab.app/img-proxy/?k=98cdff23&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtf0MDZyHfBYl2oLwHK0jkIOmOOa4xcxGGmLZRicnicdhlicY7hjCM2eXefNrKibTsLx8fCNaTxLK2ZjSHklXhlkhHueN0Wiapl38sA%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="">详见：Bash - 行内环境变量，Bash 是标准的 Shell 实现，其他 Shell 如 Zsh 都兼容其行为。</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="">Shell配置</span></strong></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060103" data-ratio="1.0446927374301676" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="716" src="https://wechat2rss.xlab.app/img-proxy/?k=f47324f0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtqIBvArfs1UaVK2iazHEssibX1KAAJukfx6EYw3dOBYKODibIy7sU7kkEc3vwefy2sNiaiaexPb5JFFTm2iaj2MwMpakJOr7m0AolH0%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-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.0221774193548387" data-s="300,640" data-type="png" data-w="496" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060100" src="https://wechat2rss.xlab.app/img-proxy/?k=6a74e0ef&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvANDHpRIOA4EWuvTV5vc8uA5S0uNGRM3CibwEWWqKOnz7nmJSJRQSUm3frIGuurGhDzRHiaoOicOj5VFxP4uL3KCdNXYSY6wFA9Y%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-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.2496969696969697" data-s="300,640" data-type="png" data-w="825" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060104" src="https://wechat2rss.xlab.app/img-proxy/?k=875a6724&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtKA4icr08qYkUrV0N3jbhJLpuFwTMNaWkKFBeOejp4UuIV92lunicWbHick1YUBE2aGztLxiclhb5ibtV1JryfM2ptgIfq5rKPPUJQ%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="">为了兼容，设置了一个 claude 别名：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060105" data-ratio="0.6679841897233202" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="506" src="https://wechat2rss.xlab.app/img-proxy/?k=ce174c80&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHslEYDWWwrSydu1Kb0B0PsCXfNicvrW7kPUmUwP1WNjib42vwFiblJ6lpVGQ0j8TD5MWuqx6RXoKlibWq1LgJHtRSZ4G8ibcARD9x6c%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="">这样输入claude 时，默认使用智谱 GLM 模型。</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="">Shell 脚本大概这样，可以修改后配置到自己的 </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 textstyle="" style="background-color: rgb(214, 214, 214);">~</span></span><span leaf=""><span textstyle="" style="background-color: rgb(214, 214, 214);">/.zshrc</span> 中。如果不熟悉 Shell，嫌麻烦也可以试试这个开源工具：farion1231/cc-switch。</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="bash"><code><span leaf=""><span class="code-snippet__comment"># claude 默认</span></span></code><br/><code><span leaf=""><span class="code-snippet__built_in">alias</span> claude=<span class="code-snippet__string">&#39;zcc&#39;</span></span></code><br/><code><span leaf=""><span class="code-snippet__comment"># Kimi</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">function</span> <span class="code-snippet__function"><span class="code-snippet__title">kcc</span></span>(){</span></code><br/><code><span leaf="">    <span class="code-snippet__built_in">echo</span> Kimi Claude Code...</span></code><br/><code><span leaf="">    <span class="code-snippet__built_in">local</span> model=<span class="code-snippet__string">&#34;kimi-k2.5&#34;</span></span></code><br/><code><span leaf="">    ANTHROPIC_BASE_URL=<span class="code-snippet__string">&#34;<a href="https://api.moonshot.cn/anthropic" target="_blank">https://api.moonshot.cn/anthropic</a>&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_AUTH_TOKEN=<span class="code-snippet__string">&#34;sk-xxxxxxxxx&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_SMALL_FAST_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_DEFAULT_OPUS_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_DEFAULT_SONNET_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_DEFAULT_HAIKU_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    CLAUDE_CODE_SUBAGENT_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    launch_claude_code <span class="code-snippet__variable">$@</span></span></code><br/><code><span leaf="">}</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 智谱GLM</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">function</span> <span class="code-snippet__function"><span class="code-snippet__title">zcc</span></span>(){</span></code><br/><code><span leaf="">    <span class="code-snippet__built_in">echo</span> GLM Claude Code...</span></code><br/><code><span leaf="">    ANTHROPIC_BASE_URL=<span class="code-snippet__string">&#34;<a href="https://open.bigmodel.cn/api/anthropic" target="_blank">https://open.bigmodel.cn/api/anthropic</a>&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_AUTH_TOKEN=<span class="code-snippet__string">&#34;sk-xxxxxxxxx&#34;</span> \</span></code><br/><code><span leaf="">    launch_claude_code <span class="code-snippet__variable">$@</span></span></code><br/><code><span leaf="">}</span></code><br/><code><span leaf=""><span class="code-snippet__comment"># 七牛</span></span></code><br/><code><span leaf=""><span class="code-snippet__keyword">function</span> <span class="code-snippet__function"><span class="code-snippet__title">qcc</span></span>(){</span></code><br/><code><span leaf="">    <span class="code-snippet__built_in">echo</span> QiNiu Claude Code...</span></code><br/><code><span leaf="">    <span class="code-snippet__built_in">local</span> model=<span class="code-snippet__string">&#34;minimax/minimax-m2.1&#34;</span></span></code><br/><code><span leaf="">    ANTHROPIC_BASE_URL=<span class="code-snippet__string">&#34;<a href="https://api.qnaigc.com" target="_blank">https://api.qnaigc.com</a>&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_AUTH_TOKEN=<span class="code-snippet__string">&#34;sk-xxxxxxxxx&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_SMALL_FAST_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_DEFAULT_OPUS_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_DEFAULT_SONNET_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    ANTHROPIC_DEFAULT_HAIKU_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    CLAUDE_CODE_SUBAGENT_MODEL=<span class="code-snippet__string">&#34;</span><span class="code-snippet__string"><span class="code-snippet__variable">$model</span></span><span class="code-snippet__string">&#34;</span> \</span></code><br/><code><span leaf="">    launch_claude_code <span class="code-snippet__variable">$@</span></span></code><br/><code><span leaf="">}</span></code><br/><code><span leaf=""><span class="code-snippet__keyword">function</span> <span class="code-snippet__function"><span class="code-snippet__title">launch_claude_code</span></span>(){</span></code><br/><code><span leaf="">    CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \</span></code><br/><code><span leaf=""><span class="code-snippet__comment">#    clear</span></span></code><br/><code><span leaf="">    <span class="code-snippet__built_in">command</span> claude <span class="code-snippet__variable">$@</span></span></code><br/><code><span leaf="">}</span></code><br/></pre></p><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="">在当前的气氛下，我想我算是一个【古板】的开发者，我做不到【fire and forget】，或者说完全靠黑盒的自然语言对话来完成代码开发。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我还是只将 AI 当助手，还是想要白盒的掌控 AI 写的代码，还是希望最终交付的代码有我的风格、我的审美、我的品味。毕竟 AI 也只能帮我写代码，并不能帮我背锅。尽管我选择了 TUI 工具 Claude Code CLI，但是我还做不到全程只在终端操作，我还是习惯 JetBrains 特色的双栏 diff。</span></p><p><span leaf="">因此，当前我开发流程的起点还是传统的 IDE，比如我最喜欢的 JetBrains。每天上班第一件事是接水，第二件事就是打开 IDE。所以我需要想办法来将 GUI 工具和 TUI 工具流畅的衔接起来，减少代码开发时的频繁切换产生的割裂感！</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-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.5897009966777409" data-s="300,640" data-type="png" data-w="602" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060107" src="https://wechat2rss.xlab.app/img-proxy/?k=552710c6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtCcaRfnYRib7iblac7Nu7BWW9X1Qm6UhCGZFRXVcxYlBfBIb75TwDta8HGfztvXGvIJkXONhmfAsRn7SweFCSmB73cYt2OzkFyM%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="">如上图，我有 3 个显示器，我的构想是这样的：</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1. MacBook 内置显示器 —— 常驻两个空间：一个用来打开浏览器，还有 VPN、网易云音乐、Finder 软件，用来承接各种临时的操作。一个用来打开飞书，用来沟通、协作。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2037037037037037" 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="100060108" src="https://wechat2rss.xlab.app/img-proxy/?k=2c0a28d1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsiaqNrHjicj7mw8A5SX2767qCRMQZ9fMXTDUhyH5dd6nPsNG5zoPeCMCbVFuG4KJgDFdzHOEIDMoLnCNNNHek1lErzR9lcP1F6c%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="">2. 中间主屏 —— 常驻两个空间：一个用来打开浏览器，用来做各种【输出】。一个用来打开 IDE，专注于写代码、看代码，用标签页打开多个 Project。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7049382716049383" data-s="300,640" data-type="png" data-w="810" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060109" src="https://wechat2rss.xlab.app/img-proxy/?k=42b913a1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtuzAUOAIPyWJpOjOpsoCzOa6bYCicKcKG7hBW372OF5ekmRicWKeff6lgysMNQREnpUcsCbO9SxJgibIy3ZrCaGqP1u8vDldZK1w%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="">3. 左边竖屏 —— 常驻两个空间：一个用来打开浏览器，用于看文档、查资料等各种【输入】。一个用来打开 TUI 工具，进行辅助编程！</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060106" data-ratio="0.4166666666666667" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="768" src="https://wechat2rss.xlab.app/img-proxy/?k=2536df67&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuU9oiaPO97NvNcuLia0N6COMbRZYqGvMhBzP1s4fM2XIfbumYggiadduby2ojEHKWKoPSGRFbaAnRohvUCJB0f01L3EGtuB5pobs%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="">GUI/TUI衔接</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="">现在问题来了，我希望我的开发工作的【主轴】是 IDE，流程的起点是 IDE。但是我的 IDE 在中间屏幕，终端在左边屏幕，它俩是独立软件，没法协作、自动跟随切换 Project 的工作目录。我希望有个【自动化流程】，当我在 IDE 里切换项目的时候，CC 自动跟随切换！</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 data-pm-slice="0 0 []"><span leaf="">我期待的流程是这样的：</span></p><p data-pm-slice="0 0 []"><span leaf="">因为某个原因，我在 IDE 里打开了一个项目 A <span textstyle="" style="font-weight: bold;">→</span> 准备写代码了，点击 IDE 里的某个【按钮】，左边屏幕自动【新建】一个项目 A 的 CC 会话终端并激活到前台显示  <span textstyle="" style="font-weight: bold;">→</span> 我跟左边的 CC 对话，让他干活 <span textstyle="" style="font-weight: bold;">→</span> 我在中间的 IDE 里评审、调试、诊断 <span textstyle="" style="font-weight: bold;">→</span> 因为某些原因我又要在 IDE 打开一个别的项目 B <span textstyle="" style="font-weight: bold;">→</span> 我再次点击那个【按钮】，左边屏幕自动【新建】一个项目 B 的 CC 会话终端并激活到前台显示 <span textstyle="" style="font-weight: bold;">→</span> 我在 IDE 里又切回了项目 A，我又点击了那个【按钮】，左边屏幕自动【切换】到 A 的 CC 会话终端并激活到前台显示。</span></p><p><span leaf="">好的想法已经有了，AI 时代就怕你没有想法，有想法就一定有办法实现！</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="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1. macOS 上的原生软件，大部分支持 AppleScript 自动化，也就是说我们可以写脚本驱动软件的行为、模拟人机交互，比如打开软件、新建 tab、点击按钮等。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2. JetBrains IDE 支持集成外部命令，也就是说：可以在 IDE 里点击一个按钮，自动执行一个 Shell 脚本或者别的可执行文件。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">产品需求清晰了，接下来开始让 AI 干活！一顿沟通和调试之后，我们有了一个【自动化】创建 iTerm2 新标签的可执行脚本！</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8390977443609022" data-s="300,640" data-type="png" data-w="665" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060110" src="https://wechat2rss.xlab.app/img-proxy/?k=6282d22c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvEtEicVLvI6BxBzRs6FYhVicGg4K66oXiam54icEQVhsu6nQgBN9StELzSGib4Et2zfnn767h5wK2iaiaPqH8QibWvNTicNZngF1RibICKo%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><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 class="code-snippet__section">## 📌 工具功能说明</span></span></code><br/><code><span leaf="">请帮我创建一个 macOS 上的 iTerm2 自动化工具,主要功能包括:</span></code><br/><code><span leaf=""><span class="code-snippet__section">### 核心需求</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">1.</span> <span class="code-snippet__strong">**智能窗口管理**</span>:自动使用或创建 iTerm2 窗口</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">2.</span> <span class="code-snippet__strong">**项目标签管理**</span>:为每个项目目录维护独立的标签页,支持标签复用</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">3.</span> <span class="code-snippet__strong">**三面板布局**</span>:自动创建固定的三面板布局(上方一个全宽面板,下方两个并排面板)</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">4.</span> <span class="code-snippet__strong">**命令自动执行**</span>:在每个面板中自动切换到项目目录并执行预定义的命令</span></code><br/><code><span leaf=""><span class="code-snippet__section">### 使用场景</span></span></code><br/><code><span leaf=""><span class="code-snippet__code">```bash</span></span></code><br/><code><span leaf=""># 基本用法:在当前目录打开</span></code><br/><code><span leaf="">./open-claude-in-iterm.sh</span></code><br/><code><span leaf=""># 指定项目目录</span></code><br/><code><span leaf="">./open-claude-in-iterm.sh /path/to/project</span></code><br/><code><span leaf="">```</span></code><br/><code><span leaf="">---</span></code><br/><code><span leaf=""><span class="code-snippet__section">## 🎯 技术架构要求</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">### 技术栈</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> <span class="code-snippet__strong">**Shell 脚本**</span> (open-claude-in-iterm.sh):参数处理、路径规范化、日志管理</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> <span class="code-snippet__strong">**AppleScript**</span> (open-claude-in-iterm.applescript):iTerm2 自动化核心逻辑</span></code><br/><code><span leaf=""><span class="code-snippet__section">- </span><span class="code-snippet__section"><span class="code-snippet__strong">**依赖**</span></span><span class="code-snippet__section">:macOS、iTerm2、Bash</span></span></code><br/><code><span leaf="">---</span></code><br/><code><span leaf=""><span class="code-snippet__section">## 📋 详细功能规格</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">### 1. Shell 脚本 (open-claude-in-iterm.sh)</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">#### 参数处理</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> <span class="code-snippet__strong">**参数1**</span>:项目目录(可选,默认当前目录)</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> <span class="code-snippet__strong">**自动处理**</span>:相对路径转绝对路径</span></code><br/><code><span leaf=""><span class="code-snippet__section">#### 面板命令配置</span></span></code><br/><code><span leaf=""><span class="code-snippet__code">```bash</span></span></code><br/><code><span leaf="">PAN1_CMD=&#34;claude&#34;     # 上方面板命令</span></code><br/><code><span leaf="">PAN2_CMD=&#34;claude&#34;     # 左下面板命令</span></code><br/><code><span leaf="">PAN3_CMD=&#34;claude&#34;     # 右下面板命令</span></code><br/><code><span leaf="">```</span></code><br/><code><span leaf=""><span class="code-snippet__section">### 2. AppleScript (open-claude-in-iterm.applescript)</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">#### 主要流程</span></span></code><br/><code><span leaf=""><span class="code-snippet__strong">**步骤1:窗口管理**</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> 检查 iTerm2 是否运行(未运行则自动启动)</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> 使用当前激活的 iTerm2 窗口,如果没有则创建新窗口</span></code><br/><code><span leaf=""><span class="code-snippet__strong">**步骤2:标签管理(关键逻辑)**</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> 在找到的窗口中,查找 <span class="code-snippet__code">`session.path`</span> 变量等于项目目录的标签</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> <span class="code-snippet__strong">**复用逻辑**</span>:如果找到现有标签 且 窗口不是新创建的 → 直接切换标签并返回</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> <span class="code-snippet__strong">**创建逻辑**</span>:如果未找到标签 或 窗口是新创建的 → 创建新标签和布局</span></code><br/><code><span leaf=""><span class="code-snippet__strong">**步骤3:三面板布局创建**</span></span></code><br/><code><span leaf=""><span class="code-snippet__code">```</span></span></code><br/><code><span leaf="">布局示意图:</span></code><br/><code><span leaf="">┌─────────────────────────┐</span></code><br/><code><span leaf="">│   上方面板 (全宽)         │</span></code><br/><code><span leaf="">│   执行: PAN1_CMD         │</span></code><br/><code><span leaf="">├──────────────┬──────────┤</span></code><br/><code><span leaf="">│  左下面板    │  右下面板 │</span></code><br/><code><span leaf="">│  PAN2_CMD   │  PAN3_CMD │</span></code><br/><code><span leaf="">└──────────────┴──────────┘</span></code><br/><code><span leaf="">```</span></code><br/><code><span leaf=""><span class="code-snippet__strong">**分割顺序(重要)**</span>:</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">1.</span> 初始状态:一个全屏 session(上方面板)</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">2.</span> 第一次分割:对上方 session 执行<span class="code-snippet__strong">**水平分割**</span>,创建下方面板</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">3.</span> 第二次分割:对下方 session 执行<span class="code-snippet__strong">**垂直分割**</span>,创建右下面板</span></code><br/><code><span leaf=""><span class="code-snippet__strong">**步骤4:命令执行**</span></span></code><br/><code><span leaf="">在每个面板中依次执行:</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">1.</span> 切换到项目目录:<span class="code-snippet__code">`cd &#34;/path/to/project&#34;`</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">2.</span> 清屏:<span class="code-snippet__code">`clear`</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">3.</span> 等待 0.3 秒(确保目录切换完成)</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">4.</span> 执行命令:<span class="code-snippet__code">`PAN_CMD`</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">5.</span> 等待 0.5 秒(确保命令启动)</span></code><br/><code><span leaf=""><span class="code-snippet__section">## ⚠️ 常见错误</span></span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> ❌ 符号链接未处理,导致找不到 AppleScript 文件</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> ❌ 分割顺序错误,导致布局不正确</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> ❌ 缺少 delay,导致命令执行失败或在错误目录执行</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> ❌ 新窗口处理错误,导致多余空白标签</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> ❌ 标签复用逻辑错误,导致同一项目创建多个标签</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> ❌ 路径未引用,导致包含空格的路径失败</span></code><br/></pre></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="">IDE配置</span></strong></p></div></div></div></div><div style="margin: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">创建外部工具</span></strong></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3385731559854897" data-s="300,640" data-type="png" data-w="827" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060111" src="https://wechat2rss.xlab.app/img-proxy/?k=7a8dee1e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHujCcP1WUqcfrWdkTJUtdryoxKUnXDyePlMaQUFkM26MF8KzhpURwXYgB1SrfvD9gXBfiapLKgKd5rib2wmlXwibxypRmGSTRXTP8%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="margin: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">添加到工具栏</span></strong></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.17696969696969697" data-s="300,640" data-type="png" data-w="825" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060114" src="https://wechat2rss.xlab.app/img-proxy/?k=d47ce917&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHv5kfgNuCoTERRqKh6Cz32qd2pYHicibkPqMvGSmao7SR0BQcUQMa9J8ibqHFicGBLsBLiaJqnuzicRnCnuqPAqpbGzFdjhqQY34FZy4%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-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="">点击工具栏按钮后，自动在全屏的 iTerm2 窗口新建或激活项目目录下的 CC 会话，下图里就是 3 个项目。</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-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.2611111" 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="100060129" src="https://wechat2rss.xlab.app/img-proxy/?k=907e656e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvmlPAicXfMOpDHWMzOFUJCWTnich6E0ERMoiaiaP80Eg80mGOcajHbwV1tOib5FV8b4x1dgH2anuvaH4E2ibqAiaekoPia6ubic0rhg5rI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">多Agent协作</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 leaf="">会的越多，让你干的就越多。既然 AI 那么牛，一个 CC 会话已经满足不了我膨胀的想法和需求了。我希望我可以同时支配多个 AI 开发工程师，而我变成 PM！所以参考酒米的思路，我给每个项目的终端，自动化的划分了 3 个子窗口，每个子窗口都是一个 CC 会话。效果大概这样：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6064814814814815" 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="100060113" src="https://wechat2rss.xlab.app/img-proxy/?k=cc9ac77b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsnzspzs2sqfTDW7GLMoUvibx0MrJkMI53jmrWQtGeaPdewboOj4XWbABfJgrK8BjJoZHNzezLoCiaN3iaTmCK0uyxl0rdxWmEnN4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><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="">主从架构</span></strong></p></div></div></div></div></div></div></div></div></div><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">每个项目自动打开 3 个常驻的 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><span leaf="">知人善用才是好 PM！这个模式也很匹配现实中的组织架构和成本取舍，现实中每个需求一般也都是由一个架构师和多个中高级开发者来协作完成！感谢热心市民无声雨，给我们小组共享了自己采购的纯血 Claude 模型，所以目前我用 Claude 模型来对方案，用 GLM 或者 MiniMax 来实施方案！</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;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="">规范驱动开发(SDD)</span></strong></p></div></div></div></div></div></div></div></div></div><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">主从智能体的协作很重要，我跟【架构师】聊了半天确定的方案和设计，需要有一个清晰的、对大模型友好的方案和任务文档作为【开发者】的输入。这就很巧，刚好最近在流行 SDD，规范驱动开发。大致就是模拟现实中的软件开发流程将开发生命周期拆分为 3 个阶段：</span></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;"><span leaf="">【proposal】需求对齐、方案设计、【任务细化】；</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">【apply】开发任务实施；</span></p></li><li><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">【archive】功能验收、文档沉淀。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">围绕这个流程，开源社区设计和研发了一系列对大模型非常友好的工具和提示词（比如 OpenSpec），【阶段 1】和【阶段 2】中间通过格式设计良好的【设计文档和任务文档】来进行上下文交接。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">也就是说，我可以在上述的 3 窗口环境中，按照 SDD 流程来：【proposal】跟【架构师】交互，对齐需求、设计和任务 A <span textstyle="" style="font-weight: bold;">→</span> 【apply】让【开发者 1】着手完成任务 A <span textstyle="" style="font-weight: bold;">→</span> 【proposal】继续跟【架构师】交互，对齐需求、设计和任务 B <span textstyle="" style="font-weight: bold;">→</span> 【apply】让【开发者 2】着手完成任务 B <span textstyle="" style="font-weight: bold;">→</span> 【proposal】继续跟【架构师】交互，对齐需求、设计和任务 C <span textstyle="" style="font-weight: bold;">→</span> 【apply】让【开发者 1】着手完成任务 C <span textstyle="" style="font-weight: bold;">→</span> ……</span></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="">CC拓展</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="">CC 当然很厉害，但它本质上也就是一个朴素的 ReAct 模式智能体。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9142011834319527" data-s="300,640" data-type="png" data-w="676" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060116" src="https://wechat2rss.xlab.app/img-proxy/?k=e31d2aa5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuuRV1icv9k2peTEqBZ0um7U9uCyP8MkvqyOibW5Zia0PPI2mAHVhNOItl1RehLLEEnoY5q9icEUhm7IgG0P6ubKPyv5ofHsNzMicM4%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="">ReAct 这么火，大家肯定也都耳熟能详了，我们也就不说太多。当然 CC 团队围绕编程这个课题做了很多细致的提示词调优和内置工作流设计，这个我们黑盒的用就好了，也没必要关注太多。我们最需要关注的，是 CC 提供给我们使用者的【拓展点】，那些允许我们个性化设置的东西。</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="">命令(command)</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="">命令的本质就是预定义的提示词模板。目的是为了省事，不用每次都重复的输入类似的提示词。比如想让 CC 帮我提交代码，每次我们可能都要交代一大堆字，比如：</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="sql"><code><span leaf="">请调用 git diff <span class="code-snippet__comment">--cached 获取当前暂存区的代码变动。</span></span></code><br/><code><span leaf="">忽略所有的 node_modules 或二进制文件。</span></code><br/><code><span leaf="">基于变动内容，判断这是一个 feat (新功能), fix (修复) 还是 chore (杂务)。</span></code><br/><code><span leaf="">生成一个不超过 <span class="code-snippet__number">50</span> 字符的标题，并在正文详细列出影响的文件。</span></code><br/><code><span leaf="">由我确认后执行 git <span class="code-snippet__keyword">commit</span>。”</span></code><br/></pre></p><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p><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="">技能(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="">技能和命令最大的差别就是：命令是用户主动提交的提示词，而技能是 Agent 自己决策后自动导入的提示词。当然技能包里除了提示词，一般还会携带一些配套的工具、脚本、命令或者文档。</span></p><p><span leaf="">比如，我安装了一个【html 转 pdf 的技能包】，这只能提示 CC 可以使用这个技能，但是具体用不用、什么时候用、怎么用都是 CC 自己规划、决策的。</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="">子代理(subAgent)</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="">SubAgents 是可以并行处理任务的独立 AI 代理，每个子代理拥有独立的上下文窗口，可以分配不同任务以提高效率。【主代理】的上下文窗口中包含有【子代理】的【简短】描述信息，可以基于这个描述信息规划、决策使用哪个子代理。</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="json"><code><span leaf=""><span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;agents&#34;</span><span class="code-snippet__punctuation">:{</span></span></code><br/><code><span leaf="">    <span class="code-snippet__attr">&#34;code-reviewer&#34;</span><span class="code-snippet__punctuation">:{</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;description&#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__attr">&#34;model&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;claude-opus-4-5&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;instructions&#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__attr">&#34;tools&#34;</span><span class="code-snippet__punctuation">:[</span><span class="code-snippet__string">&#34;read&#34;</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__string">&#34;search&#34;</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__string">&#34;git&#34;</span><span class="code-snippet__punctuation">],</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;permissions&#34;</span><span class="code-snippet__punctuation">:{</span></span></code><br/><code><span leaf="">        <span class="code-snippet__attr">&#34;allowWrite&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__literal"><span class="code-snippet__keyword">false</span></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/><code><span leaf="">    <span class="code-snippet__attr">&#34;test-writer&#34;</span><span class="code-snippet__punctuation">:{</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;description&#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__attr">&#34;model&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;claude-sonnet-4-5&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;instructions&#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__attr">&#34;tools&#34;</span><span class="code-snippet__punctuation">:[</span><span class="code-snippet__string">&#34;read&#34;</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__string">&#34;write&#34;</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__string">&#34;bash&#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__attr">&#34;doc-generator&#34;</span><span class="code-snippet__punctuation">:{</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;description&#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__attr">&#34;model&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__string">&#34;claude-sonnet-4-5&#34;</span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf="">      <span class="code-snippet__attr">&#34;instructions&#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__attr">&#34;tools&#34;</span><span class="code-snippet__punctuation">:[</span><span class="code-snippet__string">&#34;read&#34;</span><span class="code-snippet__punctuation">,</span><span class="code-snippet__string">&#34;write&#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/><code><span leaf=""><span class="code-snippet__punctuation">}</span></span></code><br/></pre></p><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.4828009828009828" data-s="300,640" data-type="png" data-w="814" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060118" src="https://wechat2rss.xlab.app/img-proxy/?k=72308fea&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuysQ6RRBJh9HSZAowqibnsnkVm50Zuycu6MrBNHQhCSQiaJh0ibJ1XPrvp9yQHw4TB09oXt905y9vib4F4suvlbg8FUV2seQlnDG4%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><span leaf="">这样在主代理的上下文窗口里，只会有子代理的输入和输出（几个类文件路径），而子代理在搜索过程中遍历文件、目录、读取文件内容产生的临时 token，不会对主代理产生影响。我目前认为 SubAgent 和 Skill 差不太多。不过我不确认 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="">MCP</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="">MCP 和技能一样，都是由 CC 自主规划、决策使用的。差别有两个：</span></p><p style="margin:0px;padding:0px;box-sizing:border-box;"><span leaf="">1. MCP 工具的说明信息占用的上下文太多了！不管是否被使用，每次都需要一口气提交所有工具的完整元信息（使用说明 + 出入参 Schema）供大模型规划、决策，占用大量上下文。而【技能】选择了【渐进式披露】，先向大模型提供少量关键信息，只有在大模型选择了使用技能时，才告诉大模型更多关于技能的补充说明信息，让大模型进一步推理、决策。</span></p><p style="margin:0px;padding:0px;box-sizing:border-box;"><span leaf="">2. MCP 工具更多的偏向【远程 RPC】，基于网络来实现原子化的远程能力调用。而【技能】更多的偏向【本地 IPC】，具体能力更多通过【编排】本地脚本、本地命令来实现，有点像 stdio 模式下的 MCP。</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="">钩子(hook)</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="">hook 是在特定事件触发时自动执行的脚本，用于自定义工作流、拦截危险操作、自动格式化代码等。就类似 Linux NetFilter，CC 在很多地方植入了流程执行的劫持点，将流程上下文交给用户开发的脚本或者命令。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.17440660474716202" data-s="300,640" data-type="png" data-w="969" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060115" src="https://wechat2rss.xlab.app/img-proxy/?k=23a3fe98&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHteVQVHCIR9L2AqPEyl31ZUjNvmWlUOITrDrfUiclaQKESIuI5ibZRgtRFN45dibW4GjlkkOe3DVLpjnrOgW3jzskZRyM2TS36GlI%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="">插件(plugin)</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="">plugin 就是上述各种拓展打包、分发、安装的一种格式。你可以把它想象成 npm 包、pip 包、apk 包等我们比较熟悉的概念。然后我们可以按流程和格式建设插件市场，类似 pip-index、npm-index 等。</span></p><p><span leaf="">我没有细看流程和格式，但是大概也就是一个特定文件布局的 zip 文件包，里面有插件描述信息和各类拓展，比如可以包含：</span></p><ul style="list-style-type: disc;" class="list-paddingleft-1"><li><p><span leaf="">5 个 Skills；</span></p></li><li><p><span leaf="">10 个斜杠命令；</span></p></li><li><p><span leaf="">3 个 MCP 服务器配置；</span></p></li><li><p><span leaf="">2 个 SubAgent 定义；</span></p></li><li><p><span leaf="">若干 Hooks。</span></p></li></ul></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="">CC技巧</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="">飞书MCP</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="">飞书官方提供了 MCP，我主要用它来读写飞书文档，蛮好用的，大家可以试试。比如我每周都要在固定目录下创建固定标题格式的【系统巡检文档】，所以我借助飞书 MCP 整了个自定义 Command 帮我自动创建这些文档去除重复劳动，感觉真香！之前每次都要手动建 3 个文档、选目录、改名字！</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6583333333333333" 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="100060119" src="https://wechat2rss.xlab.app/img-proxy/?k=de05b4f5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsTCYTGZZfNd0A0qHW7VVvQH15UwlukvfL1iaDvrRhRvmUaohoXQno84ewu7Ke5zJ1pufx5ibEp05jz3aHuImDKfNOZvYon0O1xU%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-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.7875457875457875" data-s="300,640" data-type="png" data-w="546" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060117" src="https://wechat2rss.xlab.app/img-proxy/?k=1d8e50b1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtNfVuLT6YiatRhptHhXUWCwEbmicTUDypQPj5nH0G4okNBNv9tq8hYcoQGmdhDpBd9EEBPib2XbGfK4BmmALDgAK3rRLbVicTPn34%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="">有时候我们需要精确的告诉 CC，哪个文件需要读或者改，其实不用从 IDE 里复制文件路径，直接在终端里模糊搜索就好了。</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="">WebFetch</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.2301480484522207" data-s="300,640" data-type="png" data-w="743" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060122" src="https://wechat2rss.xlab.app/img-proxy/?k=4ea985ae&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuUlib0rTzpuZvfC9JJWyII0GFZr5c39HGpyPBGtYEmOr9L1Tib4x3bwycY7msgnSHa2v3bbjmXGYR7C4SwjMDicRtEGca8iaPktcc%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="">CC 默认集成了 WebFetch 命令，就是指定 URL 读取网页内容，这个理论上就是一个本地执行的 curl 命令，没有云端成本，不需要云端协作。但是有个问题：（一）CC 在访问地址之前，会先调用 <span textstyle="" style="background-color: rgb(214, 214, 214);">anthropic.com</span> 的一个风控接口，判断这个网络地址是否有安全风险。（二）政策原因，<span textstyle="" style="background-color: rgb(214, 214, 214);">anthropic.com</span> 会拒绝所有来自中国大陆、香港的请求，风控接口返回 404 或者其他。（三）风控不通过，WebFetch 失败。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.17592592592592593" 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="100060121" src="https://wechat2rss.xlab.app/img-proxy/?k=4cf7518d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsS1mL1EWfr4AStrQFLt9WI2PMMmYPItaFiaXQ0ibd5eReaVu3sicUlvbMibYNHB37u5rxSUrhuqiacCiahLFLVBGOicIamPNmQD2fz7c%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 textstyle="" style="background-color: rgb(214, 214, 214);">~/.claude/settings.json</span> </span><span style="letter-spacing: 0.034em;background-color: transparent;"><span leaf="">中添加如下配置，禁用 WebFetch 工具前置的风控检查就好了。</span></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="json"><code><span leaf=""><span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;skipWebFetchPreflight&#34;</span><span class="code-snippet__punctuation">:</span><span class="code-snippet__literal"><span class="code-snippet__keyword">true</span></span><span class="code-snippet__punctuation">,</span></span></code><br/><code><span leaf=""><span class="code-snippet__punctuation">}</span></span></code><br/></pre></p><div style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p data-pm-slice="0 0 []"><span leaf="">详见：<a href="https://linux.do/t/topic/1148954" target="_blank">https://linux.do/t/topic/1148954</a></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="">WebSearch</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="">WebSearch 是需要云端协作的，需要有个搜索引擎服务提供能力。因为我们没有用官方的付费订阅，所以默认的 WebSearch 工具我们用不了，调用 WebSearch 工具得到的结果都是 0。</span></p><p><span leaf="">办法是去找一个免费或者收费的 MCP 服务。免费的我看大家都推荐 Brave&lt;</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;}]">brave.com</span><span leaf="">&gt;，大家也可以找找别的。收费的也有很多，我看智谱的套餐里限量提供了 &lt;联网搜索 MCP - 智谱 AI 开放文档&gt;。也有很多按量付费的，大概几分钱一次，有需要的可以找找。</span></p><p><span leaf="">添加了 MCP 搜索工具后，建议禁用 CC 自带的 WebSearch 工具，不然每次跟大模型交互时，工具信息还会带给大模型，产生额外的 token 开销和推理误判。在 <span textstyle="" style="background-color: rgb(214, 214, 214);">~/.claude/settings.json</span> 中添加如下配置：</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="json"><code><span leaf=""><span class="code-snippet__punctuation">{</span></span></code><br/><code><span leaf="">  <span class="code-snippet__attr">&#34;permissions&#34;</span><span class="code-snippet__punctuation">:{</span></span></code><br/><code><span leaf="">    <span class="code-snippet__attr">&#34;deny&#34;</span><span class="code-snippet__punctuation">:[</span></span></code><br/><code><span leaf="">      <span class="code-snippet__string">&#34;WebSearch&#34;</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/><code><span leaf=""><span class="code-snippet__punctuation">}</span></span></code><br/></pre></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="">iTerm2通知</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="">终端上的任务需要我们输入的时候，可以配置下，让 iTerm2 发出声音和通知。这样我们就不会因为忘记确认操作而阻塞进度。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.6434034416826003" data-s="300,640" data-type="png" data-w="1046" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060123" src="https://wechat2rss.xlab.app/img-proxy/?k=f29107cb&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsaP1Zicib2N44sNEIazWQRwsn5XT5brnIeg2huHQncrX7XK9T5q3DicTQPLLicPic56wu4g8uKhT81U9sJHvLMrvAlicmPv214xSlE8%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="">详见：Optimize your terminal setup - Claude Code Docs</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="">因为我们每个项目都复用一屏内的 3 个子窗口，一般不会重开。为了避免上下文溢出或者之前对话对新任务产生干扰，当我们完成一个任务时，需要及时的执行 <span textstyle="" style="background-color: rgb(214, 214, 214);">/clear</span> 命令，清空上下文，从 0 开始新对话。</span></p><p><span leaf="">如果任务没有完成，但是又不得不 clear，那么可以维护一个自定义命令，在 clear 后提示大模型根据 <span textstyle="" style="background-color: rgb(214, 214, 214);">git status</span> 看到的文件变更快速找回上下文。把 git 状态当作 AI 的 “短期记忆快照”，<span textstyle="" style="background-color: rgb(214, 214, 214);">/clear</span> 只清上下文，不清工作进度。</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="markdown"><code><span leaf=""><span class="code-snippet__section"># Context Catch-up</span></span></code><br/><code><span leaf="">当前对话已被 <span class="code-snippet__code">`/clear`</span>，请通过 git 状态恢复上下文。</span></code><br/><code><span leaf="">使用方式：</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">1.</span> 阅读 <span class="code-snippet__code">`git status`</span>（必要时结合 <span class="code-snippet__code">`git diff`</span>）</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">2.</span> 仅基于文件变更推断正在进行的任务</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">3.</span> 延续现有实现思路，不要假设额外背景</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">4.</span> 在未收到明确指令前，先给出你对当前上下文的判断</span></code><br/><code><span leaf="">目标：</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> 快速找回任务状态</span></code><br/><code><span leaf=""><span class="code-snippet__bullet">-</span> 避免旧对话或错误假设干扰新任务</span></code><br/></pre></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-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="">在记忆文件里要求大模型扮演一个特别的角色，如果聊着聊着角色行为丢失了，说明大模型注意力失焦了，已经丢掉了你最开始的要求。这时候就该 clear 一下重开会话了。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.22037037037037038" 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="100060124" src="https://wechat2rss.xlab.app/img-proxy/?k=2c097049&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHsafzS5D6ztBy4cISFV3T4JFos8jJaFDcYrRibiafQcrk2RGBPYNjdagSuzriabm2QT04dbQpe1CX4Ijic5KsKGOB648Wg6ibuNqGDk%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="">为了便于相关个性化拓展物料的分发、便于大家搜索、安装，市面上已经有了相关的分发平台和便捷安装命令了。</span></p><p style="font-size: 15px;font-family: PingFangSC-light;box-sizing: border-box;"><ol style="list-style-type: decimal;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="" 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;list&#34;,{&#34;type&#34;:&#34;ol&#34;,&#34;style&#34;:&#34;list-style-type: decimal;box-sizing: border-box;padding-left: 20px;list-style-position: outside;&#34;,&#34;class&#34;:&#34;list-paddingleft-1&#34;,&#34;start&#34;:null},&#34;listitem&#34;,{&#34;style&#34;:&#34;box-sizing: border-box;&#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;}]"><a href="https://skills.sh" target="_blank">https://skills.sh</a></span></p></li></ol></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3" 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="100060120" src="https://wechat2rss.xlab.app/img-proxy/?k=cbdc2d70&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHufdicRObys3wrnH6DBC01I1GP7vcic1OQGG1WqPx68fr3gbv9MibRyhMvjuuNxxmjgpI5YTJ45REE4CKwoxkZVZh3a9swjFhJM90%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><p style="font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><ol style="list-style-type: decimal;box-sizing: border-box;padding-left: 20px;list-style-position: outside;" class="list-paddingleft-1" start="2"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://www.aitmpl.com" target="_blank">https://www.aitmpl.com</a></span></p></li></ol></p><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.3073770491803279" data-s="300,640" data-type="png" data-w="976" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060127" src="https://wechat2rss.xlab.app/img-proxy/?k=2f6d46b2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHseXvGDibTMhO1xoktgpILdHKzHNojbGzKrsU7JJG9nYpxnmrDINjtQYh8ibmianeZk0qzRFRYOLGbqmibQqH003cL3AcgGmkmZZbM%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-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.164021164021164" data-s="300,640" data-type="png" data-w="567" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060125" src="https://wechat2rss.xlab.app/img-proxy/?k=0a14618e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvFWlpueWWX1iaULkwBxmI8ic9gVibicWTBicWxMzCvrSYibABm13ibMgevQGCec10iabpmT4T6hML8JBfgBGC491nHEyHkXwbNnVg08n0%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="">状态行显示在 Claude Code 会话界面底部，可以自定义显示的内容，比如git分支名、目录名、模型名等。推荐使github开源项目：claude-code-statusline-pro-aicodeditor，效果如下：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4030732860520095" data-s="300,640" data-type="png" data-w="846" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100060126" src="https://wechat2rss.xlab.app/img-proxy/?k=99a9659a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuwB5o7zVa1LCUr0MEZxOPUKgejIoibiania76UERbTh4rlp60C9wZxLyra60piaYjgK8E3NyeVKSBGS9V2QuDraAzeEhNpDiar2OiaI%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 href="https://github.com/HorizonWing/claude-code-statusline-pro-aicodeditor" target="_blank">https://github.com/HorizonWing/claude-code-statusline-pro-aicodeditor</a></span></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="">差生文具多，尽管我暂时还没有使用 CC 产出啥说得上来的东西，但是确实花了很多时间琢磨怎么让它用起来更顺手。一些不成熟的想法，希望可以给到大家启发。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">参考：</span></p><ol style="list-style-type: decimal;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=""><a href="https://www.ginonotes.com/posts/how-i-use-every-claude-code-feature" target="_blank">https://www.ginonotes.com/posts/how-i-use-every-claude-code-feature</a></span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf=""><a href="https://www.cnblogs.com/knqiufan/p/19449849" target="_blank">https://www.cnblogs.com/knqiufan/p/19449849</a></span></p></li></ol></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=2247543717&amp;idx=1&amp;sn=e49b764abd65ffd07fe65d52f1c7b2c6&amp;scene=21#wechat_redirect" textvalue="AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术</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=2247543499&amp;idx=1&amp;sn=3a1331cc48391be631852ae0efa158b0&amp;scene=21#wechat_redirect" textvalue="搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术</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=2247543475&amp;idx=1&amp;sn=6b31e2ad029864ede35100b16ce20606&amp;scene=21#wechat_redirect" textvalue="得物社区搜推公式融合调参框架-加乘树3.0实战" data-itemshowtype="0" linktype="text" data-linktype="2">得物社区搜推公式融合调参框架-加乘树3.0实战</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=2247543318&amp;idx=1&amp;sn=ddb8f1a7acae9ee4b4f25c392c527eb4&amp;scene=21#wechat_redirect" textvalue="深入剖析Spark UI界面：参数与界面详解|得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">深入剖析Spark UI界面：参数与界面详解|得物技术</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=2247543276&amp;idx=1&amp;sn=afc76725398e7dc2f36e27473bc18832&amp;scene=21#wechat_redirect" textvalue="Sentinel Java客户端限流原理解析｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Sentinel Java客户端限流原理解析｜得物技术</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="100060128" src="https://wechat2rss.xlab.app/img-proxy/?k=f0cda8c6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHtiahOibDEiceF1vXo5EabEzupMsLLzxnI5rGyFojtHmtUZYdlj4iboryEGediaVyMMWmcPnefcHkg9nZu7HyZUuQsXvKiclWHZpWFeQ%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=46e1eda4&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543782%26idx%3D1%26sn%3D74d16ca2d6ff61edf25579e9d2029eb5">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 13 Mar 2026 14:07:00 +0800</pubDate>
    </item>
    <item>
      <title>AI编程能力边界探索：基于 Claude Code 的 Spec Coding 项目实战｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543717&amp;idx=1&amp;sn=e49b764abd65ffd07fe65d52f1c7b2c6</link>
      <description>10 天、2.5 万行代码、2754 次工具调用，基于 Claude Code 的 Spec Coding 实战完成企业级中后台从 0 到 1 搭建。本文复盘「约束 + 示范 + 视觉」三层规范体系，拆解 AI 编程能力边界，重构开发者在 AI 时代的核心竞争力与高效研发范式。</description>
      <content:encoded><![CDATA[<p>原创 <span>阳凯</span> <span>2026-03-11 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=f5e01cb7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHvRuaWyMMmv1fELLMy5EGow1HjQ86yPiaKiaHN3t6tShJZVZQ32LYt33vQ1iclj4p0JT4z6bjXruWFh49QicbGOwGNTLKUfWRKxVpY%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>10 天、2.5 万行代码、2754 次工具调用，基于 Claude Code 的 Spec Coding 实战完成企业级中后台从 0 到 1 搭建。本文复盘「约束 + 示范 + 视觉」三层规范体系，拆解 AI 编程能力边界，重构开发者在 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="">二、Spec Coding </span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.什么是 Spec Coding 工作流</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.Spec 工作流的实际价值</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="">五、开发时间线：10 天的演进过程</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.阶段二：项目搭建（2个工作日，20 条指令）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.阶段三：功能开发（4个工作日，89 条指令）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    4.阶段四：细节打磨与生产部署（4个工作日，108 条指令）</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.案例一：AI 驱动产品设计</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.案例二：SDD 驱动前端功能研发</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.案例三：SDD 驱动系统重构</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="">七、代码规范落地：CLAUDE.md 和 Rules 的实际效果</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="">八、MCP 工具：消除信息断层</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.MCP 一：接口文档直连</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.MCP 二：飞书云文档直读</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">九、AI Spec Coding 经验总结</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.AI 的能力边界在哪里</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.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="">    6.一句话总结</span></p></div></div></div></div></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-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="">10 天，2.5 万行代码，提效 36%。 基于 Claude Code 的 Spec Coding（规格驱动编码） 深度实战。通过 2,754 次工具调用，我们不仅完成了从 0 到 1 的前端项目搭建，更在“约束+示范+视觉”的三层规范体系下，摸清了 AI 编程的真实能力边界。本文将复盘这场实战，拆解如何用结构化工作流消除 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059937" data-ratio="0.5578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=a4363adf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv0QMUQWF4MgUK3FwaqHzbjgFPdeVGDo0w1F40joVLqjDG2icRDTLTGvHG3ZeucogBf9BRbfgXfJXM9Px4PBsuiaSsB6sJ2CAhyQ%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">Spec Coding</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="">什么是 Spec Coding 工作流</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="">众所周知，Spec Coding（规格驱动编码）的核心思想是：在写代码之前，先写规格文档。通过 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">openspec</span></span><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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059935" data-ratio="0.5578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=d8403ea3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuAnKy5EXBHLGpibTmAziath5icXprZrLf92IQyxSkB7vdK7mHNZVMl0FagoodGKYNnGx9XsI8owu8abAiaxawSsYI0EKVZnr6Les0%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="">Spec 工作流的实际价值</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="">在 proposal 阶段明确为什么以及怎么做，避免实现完才发现方向不对。</span><strong style="box-sizing: border-box;"><span leaf="">适合复杂功能：</span></strong><span leaf="">对于需要跨多个文件多个层次的功能，tasks 分组让 AI 聚焦在当前步骤。</span><strong style="box-sizing: border-box;"><span leaf="">可审计：</span></strong><span leaf="">每个 Change 的完整决策链（proposal→design→specs→tasks）都留有记录，方便回溯。</span></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="">一个标准企业级中后台搭建，包括表格、表单、卡片列表、数据看板等中后台常见核心功能，项目从零搭建到完成以下全部功能，全程使用 Claude Code 辅助开发。</span></p><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.5583333333333333" 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="100060068" src="https://wechat2rss.xlab.app/img-proxy/?k=d67b0ab3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuCClYM0Y1lkDETRI6C0ib5zE1M8iaBnXXoc8pa3QzlicXkTlqhcSERawPJCyOPzWgFbPDk1hicJ9oibCuK1O6DwknXLY1icJ9DOChl4%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p></div></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;"><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="">在这次使用Claude Code 做 Spec Coding的从0到1项目探索中，我们积累了一份完整的原始数据，以下所有数字均来自Claude Code对 109 个 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">.jsonl</span></span><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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059943" data-ratio="1.6157894736842104" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="760" src="https://wechat2rss.xlab.app/img-proxy/?k=9b023cb6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvuoicXuXuLj456WZyVyo9ibKXC7OMZ7p8VNkUx79jmRv2uBkmPONycPJDzfibnHBxibMrQcBkml8WvklbTH82TvJ75leRVXq71JzI%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="2.20109439124487" data-s="300,640" data-type="png" data-w="731" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059945" src="https://wechat2rss.xlab.app/img-proxy/?k=d7b4320b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHs0AUtIfZ9cesibXrzModBvV2kjialWMJN0HCTxe8V5mfTkyp65mFUiahtpEdFlrweDic9CeKTlC1a1evomSD4GMiaK3SSegiatGHjAg%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="">2,754 次工具调用的分布揭示了 AI 的&#34;工作方式&#34;， AI 自主完成的 738 次文件读取、550 次代码编辑、662 次终端命令执行，以及 208 次任务进度标记——几乎覆盖了一个研发日常工作的全部动作类型。</span></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="">开发时间线：10 天的演进过程</span></strong></p></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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059944" data-ratio="0.5578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=8d9c22a4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsxhelC8sPhsRjy6D5wJ3AhRxv835kPYkZVQqlhCqnu1psLfmZPGOBDSZC2SLT48ibhviccRN66PXicKPOdGDtPiaKTiaMLs5LujVEc%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-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.5578125" 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="100059946" src="https://wechat2rss.xlab.app/img-proxy/?k=06c35cb0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvG6fIiaVLj81COb12D0wzb5dAL9IEibb9pnvXB8RtGU8abYXVHq9zkVv513ibiboruMLhDibmlJ003bRRBb6TIeafmuQPxqsbLSEMY%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="">在动工之前，我们完成了产品方向的确认和 UI 设计稿、产品PRD的输出。过程主要使用 Cursor + 设计规范 Rules，直接从概念沟通到生成高保真 UI 稿（HTML文件），再生成标准的 PRD 需求描述，覆盖系统所有核心页面。这一阶段的产出是一套可直接用于开发对齐的视觉参考，也是后续 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="">阶段二：项目搭建（2个工作日，20 条指令）</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059947" data-ratio="0.5578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=5520b5f2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHt93IziaAswiagG8ygOMeHTTVickkZW0uMXnyRTz8rfFNhIicXyibExfOp3y6Ig5XjZe4lD3uF9p2A9mbtaP5J0gLUsHTglXiaOXDPls%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;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="">阶段三：功能开发（4个工作日，89 条指令）</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5578125" 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="100059949" src="https://wechat2rss.xlab.app/img-proxy/?k=82b5c9c7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuiasNm1ViawjPW4bxq4Dk6rSdnCdQaumVKGJ8nv9iaLrrr46LvwuetcGLad5Y39XzgdLU0pKVeOr3e8DNz1YE2B4xoVjjKNFfAJU%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="">这是整个项目开发强度最高的阶段，我们引入了“规格驱动编码”（Spec Coding）的工作流，约 80% 的功能代码在此阶段完成。我们不再是简单地给 AI 下达指令，而是先与 AI 共同定义清晰的功能规格（Specification），然后 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="">阶段四：细节打磨与生产部署（4个工作日，108 条指令）</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059950" data-ratio="0.5578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=c56db18c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuYysCnw73Zc6hb2y1zb3RUo3W2GvvIeN3umHfqUgibibOQF09bxKUnpzshBbLCMwYicYQPoDADjoAJzFARCVsvXzrUEqbImzxNuk%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: 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;"><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="">案例一：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="">没有产品经理、没有 UI 设计师，一个工程师如何用 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></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">传统意义上，从 0 到 1 开发一个企业级知识问答平台需要三个角色：产品经理（需求分析 + 用户路径 + PRD）、UI 设计师（交互稿 + 高保真设计稿）、工程师（编码实现）。这个项目设计过程中，通过让 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059951" data-ratio="0.5581395348837209" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1376" src="https://wechat2rss.xlab.app/img-proxy/?k=82b00b19&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsxHRkcR1VxZ4NrtqrQp14CzCwicRQ91gsWufhwqbaaYaOib2AsDKzBPiaHcxI6negHYiaNWTlQb6X3O0mRHHvJForLwF17ictZc8SA%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="">让 AI 扮演产品经理：</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在 Rules 中植入「首席产品专家」Persona 提示词，将 AI 从工程师的「急于执行」模式切换为产品经理的「先想清楚」模式，与 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.81328125" 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="100059952" src="https://wechat2rss.xlab.app/img-proxy/?k=b5558641&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtKicibegGGRPjvuL3I77SLu4kc8SjWTE1icncXn0CiaxibjzpW66Az1Vgj3UVdC7c2xCaEhsZVm0RAsbzgxVyuby21hO8qSlZHTHGI%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="">让 AI 扮演 UI 设计师：</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在 Rules 中定义设计规范，通过对话式生成逐页产出高保真 HTML 文件，而不是源码：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.38410153640614564" data-s="300,640" data-type="png" data-w="2994" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059948" src="https://wechat2rss.xlab.app/img-proxy/?k=b32645a5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsRGGEDrpeJnh4ZjjBfwV5JkbbdOE0y3icWSecibDZv8C8XJcXbTia8sQWTCXm1QLrJJD35hJibC9aqR2RzKicQVK08AymwJjN0fyts%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="">让 AI 生成研发可读的 PRD：</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">基于产品经理角色，将 HTML 设计稿作为上下文，最后生成精确到组件行为级别的 PRD：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8080697928026173" data-s="300,640" data-type="png" data-w="1834" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059954" src="https://wechat2rss.xlab.app/img-proxy/?k=a666a477&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtROdbHN2rz32TEbWrONruurAeUZmAHjALCEibFDfTlk1ZexzTiacy9Q7Gfm3k8icibziaYxpnlol0VurrafYicPhlmZBPGhsZIre7HQ%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="">案例二：SDD 驱动前端功能研发</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="">在已有系统上增量交付一个完整功能模块，SDD 如何保证「增量」功能快速开发，并系统性提升前后端联调效率。比如其中有个SSD需求开发「定时任务管理」完整模块，并且对接 6 个后端接口。这是 SDD 工作流第一次被完整运用于新功能模块开发，也是验证「SDD + MCP」前后端联调提效的关键场景。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059956" data-ratio="0.5578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=883e8a94&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvmP3Qqr4VSOSk56xMmaicTicwYWic6K2HvY1AlzD2YxPUXhv2SAwnT7skQ9miabuSKUvKop5JqLibWiadBAfyDb0S2OibeZCn4CabNho%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 style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">opsx:new</span></span><span leaf=""> 到 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">archive</span></span><span leaf="">，</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">人工指令 &lt; 10 条，AI代码占比100%，</span></span></strong><span leaf="">交付完整任务管理模块（独立路由 + 完整 CRUD + 执行记录 + 检索结果）。</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="">SDD + MCP 的联调路径：接口 URL → MCP直连文档 → 一次性获取字段、枚举、必填项 →  接口文件一次生成 → </span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">联调一次通过，6 个接口零联调返工。</span></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="">同日额外交付了两个完整模块，</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">3个独立完整模块，单日全部开发完成，</span></span></strong><span leaf="">按纯人工开发，当天人效提升3倍。</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="">案例三：SDD 驱动系统重构</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="">新功能开发是「从无到有」：AI 可以大胆生成，错了删掉重来。重构是「在活体系统上动手术」：这种高风险对 AI 执行提出了截然不同的要求——</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">不仅要知道改什么，更要知道不能改什么，以及按什么顺序改。</span></span></strong><span leaf="">SDD 的价值正在于此：在动代码之前，把这三件事全部写清楚。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5578125" 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="100059955" src="https://wechat2rss.xlab.app/img-proxy/?k=db7c6f43&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuK6WneW4vPoQ674bbjkQ0PnV924E5wOwUkHImubVpUvsUlakeJw25gYxBlZXUmByR22L1a1r6FJzVv6VYEwLmiat4IvFibhEu9o%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></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(218, 218, 218);box-sizing: border-box;"><span leaf="">useChat</span></span><span leaf=""> 导出 20+ 方法（4 种无关职责混合）、</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">ChatInterface</span></span><span leaf=""> 接收 17 个 props（参数3 层传递）。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">执行TASKS：</span></strong><span leaf="">9 组 34 个子任务，从「grep 确认组件当前归属」→「按新分层迁移」→「更新所有 import 路径」→「tsc 类型检查」→「冒烟验证」，每一步有明确输入和验收标准。</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个任务全部完成（含 4 个验证任务），AI 全程独立执行，人工干预 &lt; 5 条指令。7个业务组件与公共组件完成解耦，</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">useChat</span></span><span leaf=""> 拆为 3 个单职责 hook，</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">ChatInterface</span></span><span leaf=""> 从 17 个 props 缩减至 6-8 个。</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="">并不是所有编程相关的问题AI都可以解决，哪类工程问题从结构上超出了 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5578125" 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="100059957" src="https://wechat2rss.xlab.app/img-proxy/?k=ac320298&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtm2TdXE4dVH6bibkbliaQ8et7BmDPiaBgJ2zoffmAsSdWhFB1ZDH2ElsPTJAiarWOLBE05H5l6iaU0L2tAKwHoibOicYYv86hyl39S1M%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="">其中有一天遇到一个测试环境构建失败的问题，结果过程约 4 小时，7 个会话、15+ 次方案尝试、59 条指令。整个项目单日指令最多的一天，也是 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059953" data-ratio="0.8652849740932642" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="772" src="https://wechat2rss.xlab.app/img-proxy/?k=30ceb732&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtT36xjbib8iaFcYB5UeSIcjEbl7eCcwmwFVCKy2dhK3OVssBicVyFBOZk3BN1BSeictogz0xMDHrUfibRUKUc689TUVOgtiatNYmicDE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5984375" 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="100059959" src="https://wechat2rss.xlab.app/img-proxy/?k=e17acd61&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsfuB7IbesHVhUW4slt9b2R00dKtgImsDlsLVc1Yiae7GNBCQrRCHUDm3N1QhaiceNIh14NqGaydemkpfKsicIzu83icDwYTFib5U0o%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 每次分析都是正确的——问题不在于 AI 的分析能力不足，而在于问题的结构性特征超出了 AI 的信息范围和反馈机制：</span></p><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="">每次验证方案必须提交代码等待 CI（一轮约 10 分钟），AI 分析的是日志截图，无法感知「现在的 CI 环境还有哪些隐性配置」。</span></p></li></ul><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="">AI 每次分析都正确，但正确分析的只是当前暴露的那一层，问题全貌无法被单次分析覆盖。</span></p></li></ul><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=""> Prisma postinstall 境外下载没有任何显式错误，引导AI 不得不深入阅读 node_modules 源码第 2319 行才能发现根因。这类「运行时行为藏在依赖内部、没有文档描述」的问题，超出了 AI 通过训练数据或当前上下文主动推断的范围。</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-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">.npmrc 历史副作用：</span></strong></span><span leaf="">早期为跳过 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">@next/swc-darwin-arm64</span></span><span leaf=""> 在 Linux 下载而加入的 omit=optional，无意间也跳过了 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">@tailwindcss/oxide-linux-x64-gnu</span></span><span leaf="">（Tailwind v4 的 native binding），</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">postinstall</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="">Prisma v6 境外下载沉默卡死：</span></strong><span leaf="">AI 需要阅读 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">node_modules/@prisma/fetch-engine/dist/index.js</span></span><span leaf=""> 第 2319 行才能发现这个行为——</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">postinstall</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="">pnpm 跨平台 lockfile 不一致：</span></strong><span leaf="">macOS arm64 生成的 lockfile 不含 Linux x64 的 native package；切回 npm 则 lockfile 被忽略，安装结果每次不同。</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="">最终解法（4 小时探索后得出）：</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="">锁定 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">tailwindcss@4.1.11</span></span><span leaf="">，配置</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">PRISMA_ENGINES_MIRROR=<a href="https://registry.npmmirror.com/-/binary/prisma" target="_blank">https://registry.npmmirror.com/-/binary/prisma</a></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="">统一使用 pnpm，CI 命令同步更新，删除 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">.npmrc</span></span><span leaf=""> 中的 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">omit=optional</span></span><span leaf="">。</span></p></li></ul></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="">代码规范落地：CLAUDE.md 和 Rules 的实际效果</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><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">三个层次的协同约束，</span></span></strong><span leaf="">每层解决不同的问题：</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="bash"><code><span leaf="">第一层：约束层（.claude/rules/）      ← 告诉 AI「禁止什么、必须怎样」</span></code><br/><code><span leaf="">第二层：示范层（.claude/code-design/）← 告诉 AI「标准产出长什么样」</span></code><br/><code><span leaf="">第三层：视觉层（.claude/ui-design/）  ← 告诉 AI「页面应该长什么样」</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="">为什么需要三层？</span></strong></p><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;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.5578125" 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="100059962" src="https://wechat2rss.xlab.app/img-proxy/?k=ba2fea0a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvb8spibtPrt55O5rHbfwzWI9iaDFSiaicQkkeLNxUMiayxclTdrbMhBKFgsTicicNicBkibjCAt0zricbKtDibqG18FEMOvxorYIJlwkRbFg%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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">.claude/rules/</span></span><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="">7 个规范文件，分别约束不同维度：</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="ruby"><code><span leaf="">.claude/rules/</span></code><br/><code><span leaf="">├── ts.md          <span class="code-snippet__comment"># TypeScript 规范（禁止 any、使用可选链等）</span></span></code><br/><code><span leaf="">├── code-names.md  <span class="code-snippet__comment"># 命名规范（kebab-case/camelCase/PascalCase）</span></span></code><br/><code><span leaf="">├── comment.md     <span class="code-snippet__comment"># 注释规范（JSDoc、</span><span class="code-snippet__comment"><span class="code-snippet__doctag">@ai</span></span><span class="code-snippet__comment">-context/</span><span class="code-snippet__comment"><span class="code-snippet__doctag">@ai</span></span><span class="code-snippet__comment">-rules 文件头）</span></span></code><br/><code><span leaf="">├── lint.md        <span class="code-snippet__comment"># 代码风格（单引号、文件末尾换行）</span></span></code><br/><code><span leaf="">├── style.md       <span class="code-snippet__comment"># 样式规范（Tailwind CSS、less 文件）</span></span></code><br/><code><span leaf="">├── pages.md       <span class="code-snippet__comment"># 页面目录结构规范（constants/services/hooks/components 分层）</span></span></code><br/><code><span leaf="">└── service.md     <span class="code-snippet__comment"># API 接口生成规范（fetch{Name}Api 命名、UniversalResp 泛型）</span></span></code><br/></pre></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="">第二层：示范层（</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">.claude/code-design/</span></span><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="">将项目常见场景预置完整的「标准模板代码」，AI 在生成新页面时可以直接参照，</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">后续可以切换为skills</span></span></strong><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">：</span></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="bash"><code><span leaf="">.claude/code-design/</span></code><br/><code><span leaf="">├── pro-table/          <span class="code-snippet__comment"># 通用列表页模板（含搜索、分页、批量操作、行操作）</span></span></code><br/><code><span leaf="">├── pro-form/           <span class="code-snippet__comment"># 通用表单页模板（含创建/编辑双模式、字段验证）</span></span></code><br/><code><span leaf="">├── editable-pro-table/ <span class="code-snippet__comment"># 可编辑表格模板（含行内编辑、添加/保存/删除）</span></span></code><br/><code><span leaf="">├── drawer/             <span class="code-snippet__comment"># 抽屉组件模板（含标准打开/关闭逻辑）</span></span></code><br/><code><span leaf="">├── compontent/         <span class="code-snippet__comment"># 通用组件模板（含 README、Props 定义、使用示例）</span></span></code><br/><code><span leaf="">└── utils/              <span class="code-snippet__comment"># 工具函数模板</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=""><span textstyle="" style="font-weight: normal;">示范代码的作用不只是「看个格式」。以 </span></span></strong><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">pro-table</span></span><span leaf=""> 为例，当开发者让 AI「参考 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">.claude/code-design/pro-table</span></span><span leaf=""> 生成知识治理列表页」时，AI 直接继承了这套模式，</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">一次就能生成符合团队风格的代码</span></span></strong><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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">.claude/ui-design/</span></span><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="">注意存放 HTML 设计稿，覆盖主要页面的视觉参考：</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="bash"><code><span leaf="">.claude/ui-design/</span></code><br/><code><span leaf="">├── knowledge-spaces.html  <span class="code-snippet__comment"># 知识空间列表页设计稿</span></span></code><br/><code><span leaf="">├── search-strategy.html   <span class="code-snippet__comment"># 检索配置页设计稿</span></span></code><br/><code><span leaf="">├── space-detail.html      <span class="code-snippet__comment"># 空间详情页设计稿</span></span></code><br/><code><span leaf="">└── xxx设计稿</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="">这些 HTML 文件可以直接在浏览器中打开预览，AI 也可以读取其中的结构和样式信息。实践中，提供 HTML 设计稿后，AI 生成的 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="">规范约束的实际效果</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></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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">fetch{Name}Api</span></span><span leaf=""> 命名，类型以 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">I{Name}Req/Res</span></span><span leaf=""> 格式，整个项目 205 个文件保持高度一致。</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 style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">constants/</span></span><span leaf="">、</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">services/</span></span><span leaf="">、</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">hooks/</span></span><span leaf="">、components/ 分层在每个新页面中都被正确创建。</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="">CURD页面均参照了 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">pro-table</span></span><span leaf=""> 模板的 hooks 分离方式，代码结构高度一致。</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(218, 218, 218);box-sizing: border-box;"><span leaf="">?.</span></span><span leaf=""> 和 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">??</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></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="">2/24，AI 生成知识空间列表后，将所有代码写在单文件中，未按规范分层。通过一条追问后，AI 重构为正确结构。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2/27，AI 错误地使用了 </span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">.less</span></span><span leaf=""> 后缀，但项目实际配置使用 SCSS，在收到错误提示后立即修正。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">出现 antd v5 废弃 API（</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">destroyOnClose</span></span><span leaf="">、</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">dropdownStyle</span></span><span leaf="">），AI 习惯于使用训练数据中更常见的旧 API，需要通过报警信息触发修正。</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><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=""><span textstyle="" style="font-weight: normal;">规范文件只是「约束」而非「能力」</span></span></strong><span leaf="">——只有「约束层」时，AI 知道不能做什么，但遇到复杂场景仍可能生成不够地道的代码；加入「示范层」和「视觉层」后，AI 有了对齐的锚点，</span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">输出质量和一致性明显提升</span></span></strong><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">。</span></span></strong></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;"><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="">MCP 工具：消除信息断层</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;"><strong style="box-sizing: border-box;"><span leaf="">接口文档断层：</span></strong><span leaf="">接口文档在 API平台，AI 无法直接访问，只能靠用户手工复制字段，容易遗漏、版本不一致。<span textstyle="" style="font-weight: bold;">需求文档断层</span></span><span leaf=""><span textstyle="" style="font-weight: bold;">：</span>PRD、设计文档存在飞书云文档中，每次引用都需要用户打开→复制→粘贴到对话框，打断思路。</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="">MCP 一：接口文档直连</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 可以根据接口 URL 自动拉取完整接口文档——包括入参字段、出参结构、枚举值定义、必填项标注。<span textstyle="" style="font-weight: normal;">累计被调用了 21 次，完成39个接口联调</span></span><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">，</span></span></strong><span leaf="">覆盖了几乎所有接口的初次接入和更新迭代场景。服务端接口未生效之前，并且支持同步生成mock数据，减少后端依赖。interface.ts</span><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-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.86796875" 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="100059958" src="https://wechat2rss.xlab.app/img-proxy/?k=e4fb4978&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvAboz8raupx4fiam44fHBDcczWqTZhOWr9LnExqoea4UAqGMLVIlyoKiatibgjqS6dh0ciaC0V7DjwAFgb9uj03jCV3joHCwwdibp8%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: 86%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059960" data-ratio="0.9109375" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=01d06977&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHusbNNhkYw41v2S2WAxL1wMBlEs3rdrBOkyGXYdq7j6qcmNWerNmhqXsLK5NJ8gZqvRIQLLpRI9DHnMwK35sc9mE71NibAURMSo%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="">MCP 二：飞书云文档直读</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="">通过该MCP工具，AI 可以直接读取飞书云文档的内容（PRD、设计说明、技术文档等），无需用户手工打开→复制→粘贴。</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-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.5578125" 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="100059961" src="https://wechat2rss.xlab.app/img-proxy/?k=6f36a85c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuZcPYMa8z9UCjLfYCibaYt7xnQ1qyPjsgCWibyic7XkAWeUlRXSvn598go2TXND6d6xt7CBzlK2ric6NAPdHyc4vZP8C14qMgomLE%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">AI Spec Coding 经验总结</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="">重新理解「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 是你的 Copilot」。这个比喻在日常补全层面成立，但在 Spec Coding 实践之后，我更倾向于另一个模型：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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4578125" 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="100059964" src="https://wechat2rss.xlab.app/img-proxy/?k=ea7df113&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHshiasibQoP7yjxqribgpgSYxllT5FRKXcQcrvUGykUHBV7ka4JYFl0scoR4v6qLv4IJMhiaU7Wd346Rguux2KiaZ9GOdbcnAggDvRk%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><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 会选一个「看起来合理」的解释，而不是停下来问你。</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 个任务的重构、9 组联调任务、跨会话的上下文恢复——这些在人类身上需要消耗大量意志力的事情，AI 做起来没有摩擦成本。本项目 208 次 TodoWrite 调用背后，是 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 不知道你们公司的部署环境是什么样的，不知道这个接口上周刚换过版本，不知道「这个交互做成这样用户会抱怨」。它只知道你告诉它的。这也是 3/4 生产构建排障花了大量时间的根本原因。</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-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="">从 10 天、2,754 次工具调用中，我们归纳出一个更精确的能力边界框架，而不是简单的「能做/不能做」：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5578125" 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="100059963" src="https://wechat2rss.xlab.app/img-proxy/?k=4521323c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHu91AwPKSoQzVJVEAGQy15cemtyeicb1rf5icqMsQTf6Wt49CS1yLNVAukJN3Qesp0vylT7nQtOsZJh5MG9CibKh4SQI9WX9moPEA%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="">真实项目中的并不是所有的需求都值得写一份 Spec。在真实的项目迭代中，我们需要根据需求颗粒度来选择协作模式。</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="">场景：改个文案、修个显隐逻辑、调整 CSS 间距。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">策略：直接在 Cursor Chat  中对话。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">理由：沟通成本低于编写规范的成本，AI 的即时反馈效率最高。</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="">中颗粒标准化需求：基于Rules 或者 Skills 预设规范生成</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="">场景：增加一个标准的 CRUD 页面、创建一个简单的业务组件。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">策略：利用预设的 Cursor Rules 或 Skills（如 pro-table.mdc）。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">理由：这类需求有强烈的“模式感”。只要规则定义清晰（如“执行流程：识别场景 -&gt; 读取示例 -&gt; 生成类型 -&gt; 完成 UI”），AI 就能基于标准化模板高质量输出。</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="">中大颗粒复杂功能：OpenSpec 深度协作</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="">场景：重构核心逻辑、新增带有复杂业务逻辑的模块、无参考代码的新功能。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">策略：OpenSpec 标准流 (SDD)。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">理由：业务逻辑复杂时，AI 极易产生幻觉或需求偏移。通过 Spec 强制进行“先设计后编码”，可以确保 AI 的每一步都在既定轨道上，且 Spec 记录了设计的决策过程，对于后期维护价值巨大。</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 失效的三种模式</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 的失效不是随机的，而是可归类的：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059966" data-ratio="0.5578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=d74fdf46&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuo6icWXkgOVxicAoQwQKcWI7Yy9cskTbETbktw8Sys8H7eYic72RQuSfKDQzyWczmSaPwpra42ZHRb1WyJNaWKsIS42vBibGqPlEg%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><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-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="">应对：在 CLAUDE.md 或 code-design 中补充对应规范，一次修复，全局生效。</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><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;"><span leaf="">表现：本地正常，CI 失败；AI 分析每次都对，但解的都是当前暴露的问题。</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;"><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="">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;"><span leaf="">表现：用户说「优化一下首页」，AI 悄悄改了组件结构，而不是先澄清目标。</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="">应对：Spec 工作流的 proposal 阶段强制要求先描述「Why」，避免 AI 自行填充目标。</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="">AI Coding 不是让开发者「消失」，而是让开发者的工作向上迁移：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059967" data-ratio="0.5578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=481b73d7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvhTLXA2FCstLwaeMDUtlOxGRdiak62BmicMffs1iaaq4mIzrQYpGsZ8iaWIEfvyDvRt6x1BTG6nUic9D6icH0HxhqT2uJnGbTaWyLIE%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="">规范设计能力</span></strong><span leaf="">成为 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><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="">——过去 Code Review 在代码写完后进行，现在需要在 方案设计/任务执行 阶段就介入，而不是等 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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5578125" 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="100059965" src="https://wechat2rss.xlab.app/img-proxy/?k=cb0bd8d6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsaGl1ODN5HOyR2tK7EFibEDIffLvxjQDnYUQtDfUGTXwlVIjicSeFduVWyvNHSJyOK0djnZ3CpOSJianXV6ISfj36icoOWhsmqjLY%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="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 class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059968" data-ratio="0.5578125" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="png" data-w="1280" src="https://wechat2rss.xlab.app/img-proxy/?k=b5cbcbb5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtjibK3AOmC1tQ9icNxTaNBibVr8wib5FGjdRQiaZA05Lun3zXtZenxaZuopicG901FI0pjrsVZyjQ7EzznRGhtHKvDRpQdAMG5cgH9c%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="">每次踩坑后补充到 CLAUDE.md/rules，形成团队共享的「AI 执行约束库」。目前 7 条规范文件是手动维护的，下一步可以建立「踩坑→提炼规范→自动追加」的闭环。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">MCP 工具链的纵向延伸：</span></strong><span leaf="">本项目 MCP 仅覆盖了接口文档、飞书文档。后续针对设计稿、测试用例、发布平台、日志平台接入，可以进一步形成完整的AI Coding链路。</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><span leaf="">本项目开发过程中，发现大型任务执行等待时间较长，下一步可以尝试多Agen并发生成，同时开发不同功能模块。</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="">AI Coding 的本质不仅仅是用 AI 写代码，而是用结构化的规范和工作流把不确定性消除在执行之前——AI 负责在确定性空间里高速执行，人负责维护和扩展那个确定性空间的边界。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">10 天、217 条指令、2,754 次工具调用、25,546 行净增代码——这个数字背后，是一套让 AI 可以「看见」、「理解」、「遵守」团队约定的规范体系。规范是杠杆，AI 是力，Spec 工作流是支点。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">本报告由claude code基于claude code 109 个真实历史会话、2,754 次工具调用记录生成，人工补充并校准，数据来源：</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">~/.claude/projects/-Users-admin-Desktop-code-knowledge-qa/。</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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543499&amp;idx=1&amp;sn=3a1331cc48391be631852ae0efa158b0&amp;scene=21#wechat_redirect" textvalue="搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术</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=2247543475&amp;idx=1&amp;sn=6b31e2ad029864ede35100b16ce20606&amp;scene=21#wechat_redirect" textvalue="得物社区搜推公式融合调参框架-加乘树3.0实战" data-itemshowtype="0" linktype="text" data-linktype="2">得物社区搜推公式融合调参框架-加乘树3.0实战</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=2247543318&amp;idx=1&amp;sn=ddb8f1a7acae9ee4b4f25c392c527eb4&amp;scene=21#wechat_redirect" textvalue="深入剖析Spark UI界面：参数与界面详解|得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">深入剖析Spark 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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543276&amp;idx=1&amp;sn=afc76725398e7dc2f36e27473bc18832&amp;scene=21#wechat_redirect" textvalue="Sentinel Java客户端限流原理解析｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Sentinel Java客户端限流原理解析｜得物技术</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=2247543235&amp;idx=1&amp;sn=25a92af422dc6cbf55e1be290dbb8cc3&amp;scene=21#wechat_redirect" textvalue="社区推荐重排技术：双阶段框架的实践与演进｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">社区推荐重排技术：双阶段框架的实践与演进｜得物技术</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 class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100060066" data-ratio="1" data-s="300,640" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-type="jpeg" data-w="724" src="https://wechat2rss.xlab.app/img-proxy/?k=8e4712c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvsg8icPNghQiaAa64pYkSkMrxHoVe6WHKz7lBYyicgt6YVfBUFycicpHUheDj9tqg4OYIODRsdBLtmEQY5e4t3ugwSu1x0VJpU9Ss%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://wechat2rss.xlab.app/link-proxy/?k=4177ee9c&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543717%26idx%3D1%26sn%3De49b764abd65ffd07fe65d52f1c7b2c6">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 11 Mar 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>搜索 C++ 引擎回归能力建设：从自测到工程化准出｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543499&amp;idx=1&amp;sn=3a1331cc48391be631852ae0efa158b0</link>
      <description>聚焦搜索 C++ 引擎高频迭代场景，我们以统一流量录制为底座，构建可归因 DIFF 测试体系与一键压测能力，通过发布流水线将回归设为硬性准出，实现从工具集合到工程化治理的升级，保障迭代可控与交付可信。</description>
      <content:encoded><![CDATA[<p>原创 <span>耿辉</span> <span>2026-03-09 18:31</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=8d9d0031&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHu5pg9wWzwJxXg6Wn2XzoP4pR1JOpeKoyic1VGR21KoezeLsEV9AzpSrdSx3bJvrICSKL1CibuZVJ5Xc2dChSCdl0mHUDNzTvmHE%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>聚焦搜索 C++ 引擎高频迭代场景，我们以统一流量录制为底座，构建可归因 DIFF 测试体系与一键压测能力，通过发布流水线将回归设为硬性准出，实现从工具集合到工程化治理的升级，保障迭代可控与交付可信。</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="">    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.DIFF测试：从无到“可归因”</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: 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;"><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="">在搜索系统中， C++ 引擎长期扮演着</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="">过去一年，我们围绕搜索 C++ 引擎展开了一次系统性的回归能力工程化建设。本文将介绍这次能力升级的背景思考、核心设计思路以及落地实践。</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="">搜索 C++ 引擎的升级主要来自三类需求：业务功能需求、重要技术项目（有 QA 深度参与）、大量技术优化与结构性改造需求。</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="">现有测试方式的演进空间</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="">当前搜索引擎主要依赖两类测试手段：DIFF 测试和压测，这些手段在长期实践中发挥了重要作用，但随着业务复杂度提升，我们也逐步看到进一步优化的空间：流量获取依赖下载日志、手工上传，自动化程度仍可提升。DIFF 过程中存在自然噪音。需要更精细化处理（AA DIFF、排序不稳定）。报告与分析信息分散在不同工具中，定位效率有优化空间。多套工具并行使用，缺乏统一平台化沉淀。整体来看，测试能力更多体现为“工具能力集合”，而在流程标准化、资产沉淀与统一治理方面仍有提升空间。</span></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;"><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="">这次建设的目标，并不是简单“再做一个工具”，而是希望系统性解决以下问题：让 DIFF 和压测成为搜索 C++ 引擎的标配回归能力、让回归结果具备可分析、可归因能力、让回归成为发布的硬性准出标准、保证工具本身的稳定性，不成为新风险、整体提升引擎的回归效率和交付质量、通过流程和流水线，降低对“人”的依赖。一句话总结：把回归这件事，从“靠自觉”，变成“靠系统”。</span></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;"><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="">围绕上述目标，我们将建设拆分为五个关键方向：流量录制：一次录制，多处复用。环境建设：稳定、可复用的 DIFF/ 压测环境。DIFF 工具体系：从“能跑”到“好分析”。一键压测能力：降低执行门槛。工具与索引平台集成：让回归真正被用起来。</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="">流量录制：回归的基础设施</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="">DIFF 和压测的核心前提只有一个：真实、稳定、可复用的流量。因此我们优先建设了搜索 C++ 引擎的流量录制链路，作为后续所有测试能力的基础。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5962962962962963" 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="100059839" src="https://wechat2rss.xlab.app/img-proxy/?k=8fb65c88&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtILxPAG3z3D4FjnvgSna6qHosfdw9hoeNMrTHZ4Q4gufQOMWxNk8Fib8CyKZ8WxmnKv4eAdsJbEOzSicVWk1HD6IHmAwGTlv5XM%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><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><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;"><span leaf="">索引平台更新 </span><strong style="box-sizing: border-box;"><span leaf="">ARK 配置中心</span></strong><span leaf="">中的录制配置。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">搜索 C++ 引擎实时监听配置变化。</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="">录制配置设计</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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">dsearch3<a class="wx_topic_link" topic-id="mmil6aui-tv12ds" style="color: #576B95 !important;" data-topic="1">#test</a>.properties</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></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">指定 app / group。</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="">指定 IP。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">采样率（0～100）。</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></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;"><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="">引擎侧根据配置生成 Kafka 消息。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">多业务场景复用同一 ARK 集。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">多场景流量复用同一个 Kafka Topic。</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="">ODPS</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="">请求体。</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="">环境信息（生产 / 预发）。</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="">DIFF、压测、问题复现</span></strong><span leaf="">提供了统一数据源。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">流量存储字段说明：</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="makefile"><code><span leaf=""><span class="code-snippet__section">request_type:流量标签（原C++引擎请求类型）</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">app_name:C++引擎appName</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">group_name:C++引擎groupName</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">request_body:录制的C++引擎请求体</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">env:录制的流量环境：预发/生产</span></span></code><br/><code><span leaf=""><span class="code-snippet__section">graph_name:图名称</span></span></code><br/><code><span leaf="">experiments：实验列表（搜索新增）</span></code><br/><code><span leaf=""><span class="code-snippet__section">pt:ODPS分区，按天分</span></span></code><br/></pre></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="">DIFF 测试：从无到“可归因”</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="">DIFF 执行流程：</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9787037037037037" 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="100059842" src="https://wechat2rss.xlab.app/img-proxy/?k=d995ded0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsTcb5SFggiczESsE1z0z7yJMk9rmuEFGqs2pscEpARnOlR8WFDOR2icxy6KzxWkr9uSpaDOMXV5nwXGciasdZ3aRrzHAcRnXhPkA%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="">DIFF 的入口统一在</span><strong style="box-sizing: border-box;"><span leaf="">索引平台</span></strong><span leaf="">：查询流量 →选择流量→配置参数→触发 DIFF→查看报告。底层由测试服务 + 脚本完成：流量筛选与改造、请求转发、去噪、报告生成与存储。</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="">DIFF 对比方式：</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7240740740740741" 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="100059843" src="https://wechat2rss.xlab.app/img-proxy/?k=6705a31b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuNcEpKPyMPfNLaA7ZbmKcIVmdBoZlRSeOqduUYIiadYuI7nCFsoRY4RSGhy70ulSKClG9ibIfzicqYZ0c0kzNQtAV8xJPXE5cmnU%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="">对照组部署 master 分支，实验组部署预发布分支。指定行或者指定集群方式请求对照组和实验组环境。打开新功能开关进行响应比对，生成预期有DIFF报告。</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="">DIFF 环境设计</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;"><span leaf="">指定集群：对照组 / 实验组两套完整集群。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">指定行</span><strong style="box-sizing: border-box;"><span leaf="">：</span></strong><span leaf="">精确绑定 search / rank 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="">唯一变量只有代码和配置。</span></strong></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;"><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></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="">DIFF 策略设计</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="">我们不只关注“有没有 DIFF ”，而是关注这个 DIFF 是否符合预期，因此 DIFF 被拆为两类：</span></p></div><div style="margin: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">响应 DIFF</span></strong></span></p></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;"><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><div style="margin: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">指标 DIFF</span></strong></span></p></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-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><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="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="">DIFF 去噪</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="">DIFF 不可用，往往不是因为“真问题”，而是噪音太多。我们重点处理了：AA DIFF（排序不稳定、非确定性逻辑）、可忽略字段、数值微小波动、内部超时导致的异常结果，目标只有一个：让开发看到的DIFF，尽可能都是真问题。</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="">DIFF 报告设计</span></strong></p></div></div></div></div><div style="margin: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">报告展示</span></strong></span></p></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="">DIFF 汇总报告：</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="">应用、集群、请求接口、流量标签、路由信息、对比数量、DIFF 数量、完全一致率、query_tag 平均召回数、score 平均分等。</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="">字段增删改统计。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">DIFF 详情报告：</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="">traceId、一致率、增删改字段、请求体等。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">漏斗算子 DIFF 明细。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">响应 DIFF 明细。</span></p></li></ul></div><div style="margin: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">报告通知</span></strong></span></p></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;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></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.9722222222222222" 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="100059841" src="https://wechat2rss.xlab.app/img-proxy/?k=d19d7790&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsibR8iaclzx0oKZ8DbxVibk3emq4ibz87K9Nz2rFib52WJdgBQRYRiay49NrvGkKodnbQ8DW0HgsDV0Q7QAA6gGicDs88TGiaVbvjyW6k%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></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-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">索引平台作为压力测试发起入口，查询流量-&gt;选择流量-&gt;填写压测参数-&gt;压测触发-&gt;压测记录查看。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">测试服务提供索引平台操作的接口能力，查询流量-&gt;流量筛选-&gt;压测文件生成-&gt;压测任务触发-&gt;压测状态更新。</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">压测平台提供实际压测能力，启动压测任务-&gt;生成压测报告。</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></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: 90%;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="100059840" src="https://wechat2rss.xlab.app/img-proxy/?k=1aef9a57&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtkQITyyyGSlrBxXXMksuoj2GXJ26ZyYNP3w8XnL3CMSXNDGE4GBvmspQUAY8Ju3LI9eDBm9R11P9eLKeia0RE10HQpP2RXQXvA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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-1"><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">对照组：master 分支。</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="">阶梯式加压，对比性能曲线。</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="">压测环境设计</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="">同 DIFF 环境建设。</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: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">报告展示</span></strong></span></p></div></div><div style="margin: 5px 0px;box-sizing: border-box;"><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><div style="margin: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">报告通知</span></strong></span></p></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="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.39814814814814814" 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="100059846" src="https://wechat2rss.xlab.app/img-proxy/?k=2c47339f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtlzxKvy8lBDZlVJHVAWmNXvgIVALSOfLR2plZ1xnxMUo7n2mcUXjiaPAd3pBhRDl1Inee29C2BUDiaMUXNgvqkwfhyFhVIg44xw%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="">。当前已完成：UT / MR 流水线初步建设，后续规划中将：把 DIFF 和压测作为</span><strong style="box-sizing: border-box;"><span leaf="">发布硬性卡点</span></strong><span leaf="">、回归不通过，禁止上线、回归过程自动扩缩容，避免长期占用资源、自动生成准出报告。</span></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="">回归执行率 100%：解决“忘跑回归”。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.0435185185185185" 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="100059847" src="https://wechat2rss.xlab.app/img-proxy/?k=2de7f6a9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtYRKdkrD5cdzC3B2dKujnh4AkttkTYUsP5rVdaKlbYPzw5M7icTbtPib0rGdCJR73qNhn61jfsGSTXsyOaAF29iaVgCquXejibmrI%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-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.17314814814814813" 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="100059844" src="https://wechat2rss.xlab.app/img-proxy/?k=909dae8c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuoBNkbibNicQ0MtibS8NQ6uCK2tKGyzKSdMdZQqy7qrZVGu8QeLicA5ia5Xe2BXXDEngjMGJia3r6eGpP507hdRLFWe3UcaBjm6gEpg%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="">形成统一的上线 SOP 规范。</span></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;"><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="">搜索 C++ 引擎回归能力建设，并不是一次“工具升级”，而是一场工程化治理：把经验变成流程、把自觉变成约束、把风险前移到上线之前，最终目标只有一个：让搜索引擎的每一次升级，都更可控、更可信。</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=2247543475&amp;idx=1&amp;sn=6b31e2ad029864ede35100b16ce20606&amp;scene=21#wechat_redirect" textvalue="得物社区搜推公式融合调参框架-加乘树3.0实战" data-itemshowtype="0" linktype="text" data-linktype="2">得物社区搜推公式融合调参框架-加乘树3.0实战</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=2247543318&amp;idx=1&amp;sn=ddb8f1a7acae9ee4b4f25c392c527eb4&amp;scene=21#wechat_redirect" textvalue="深入剖析Spark UI界面：参数与界面详解|得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">深入剖析Spark 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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543276&amp;idx=1&amp;sn=afc76725398e7dc2f36e27473bc18832&amp;scene=21#wechat_redirect" textvalue="Sentinel Java客户端限流原理解析｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Sentinel Java客户端限流原理解析｜得物技术</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=2247543235&amp;idx=1&amp;sn=25a92af422dc6cbf55e1be290dbb8cc3&amp;scene=21#wechat_redirect" textvalue="社区推荐重排技术：双阶段框架的实践与演进｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">社区推荐重排技术：双阶段框架的实践与演进｜得物技术</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=2247542990&amp;idx=1&amp;sn=95c80d04da0238e8e16312f48c1a1f5f&amp;scene=21#wechat_redirect" textvalue="Flink ClickHouse Sink：生产级高可用写入方案｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Flink ClickHouse Sink：生产级高可用写入方案｜得物技术</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="100059845" src="https://wechat2rss.xlab.app/img-proxy/?k=98ff7fe5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHvFa4T6X40RS6Orolm7ABRovfxREOSYsWZZFv7U3hDFWc4Esaric23M7OC6kzNIia7LZYAQMm9CfjIZRia0VAMiaTLyadGcU17o8Xw%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=013fbe6a&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543499%26idx%3D1%26sn%3D3a1331cc48391be631852ae0efa158b0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 09 Mar 2026 18:31:00 +0800</pubDate>
    </item>
    <item>
      <title>Her Code, Her World: 她们是重构世界的 “多核” 程序｜得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543476&amp;idx=1&amp;sn=a4d410069549d1569f44ded68f363ffd</link>
      <description>在三八国际妇女节来临之际，我们采访了这样一群女性，她们不被定义，永远自由且朝气蓬勃、向上生长。—— 提前祝所有女性节日快乐。</description>
      <content:encoded><![CDATA[<p>原创 <span>国际三八妇女节</span> <span>2026-03-06 12:02</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=f492e30d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHudDEoNH5v3IWWneurh4mhQ1zFDqSb3q1KYLcK91stG3ZnKfzv2nDiaSPOFtibAM5mia6kMPsQyyEwB4jShhc0gokfgx4GDBpUVFc%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>在三八国际妇女节来临之际，我们采访了这样一群女性，她们不被定义，永远自由且朝气蓬勃、向上生长。—— 提前祝所有女性节日快乐。</p>
  <p style="text-align: center;" nodeleaf=""><img class="rich_pages wxw-img" data-aistatus="1" data-imgfileid="100059810" data-ratio="20.718232044198896" data-s="300,640" type="block" data-type="jpeg" data-w="724" src="https://wechat2rss.xlab.app/img-proxy/?k=d112a7e6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHurtR3wXdcgQblKibzods1ibBIAVvIpOP7DBWFvhSlS6dllTng4vld3VymsuEJ88939jKjlaV8M1iaHEWQY8a4jrDOVGROKZpnruA%2F640%3Fwx_fmt%3Djpeg%26from%3Dappmsg"/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=909f84c5&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543476%26idx%3D1%26sn%3Da4d410069549d1569f44ded68f363ffd">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 06 Mar 2026 12:02:00 +0800</pubDate>
    </item>
    <item>
      <title>得物社区搜推公式融合调参框架-加乘树3.0实战</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543475&amp;idx=1&amp;sn=6b31e2ad029864ede35100b16ce20606</link>
      <description>得物社区搜索与推荐场景中，加乘树调参框架从 1.0 解释执行升级至 3.0 编译执行，以全量 + 增量配置、数学公式 DSL、AST/DAG 强校验与多级降级机制，实现公式即配即用、极致性能与工程安全兼顾，显著提升多目标模型迭代效率。</description>
      <content:encoded><![CDATA[<p>原创 <span>啊俊 风林 益嘉</span> <span>2026-03-04 18:30</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=32ddd41d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtp9LZUuvYyyJDoZoBSsUwBcibibWghMRyEQtfZWIFQWqODm8TuPcJd8vwxctuglHKjALHkzAI7wUzPnxfk9MMs5uL1lVsTTibKQo%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>得物社区搜索与推荐场景中，加乘树调参框架从 1.0 解释执行升级至 3.0 编译执行，以全量 + 增量配置、数学公式 DSL、AST/DAG 强校验与多级降级机制，实现公式即配即用、极致性能与工程安全兼顾，显著提升多目标模型迭代效率。</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.DSL接近数学公式/逻辑表达式明文</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="">四、核心攻坚：加乘树3.0升级编译执行</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.极致性能：配置直译硬代码，零中间损耗 + 最优JIT</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.多重护航：防止非法Java字节码引发线上问题</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="">五、稳扎稳打：从1.0到3.0的演进</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.加乘树1.0</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.加乘树2.0</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    3.加乘树3.0</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">六、还能更好</span></p></div></div></div></div></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-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="">近年来，搜索/推荐/广告系统在粗排（Pre-ranking）与精排（Ranking）阶段的模型训练中，呈现出一个明确的趋势：从单目标优化转向多目标建模 + 多目标融合。模型目标多、融合公式复杂，给工程维护、算法迭代效率都带来了挑战。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为了明文化直白展示公式全景、方便决策调参方向，直接配公式、线上自动算（既支持精排预估目标融合、也支持业务条件boost）。我们设计并落地了加乘树调参框架。从1.0优化至3.0，我们提供了：一个调参框架（Java版、同时引擎基建同学落地了C++版）能支持不同算法环节“公式即配即用”，一个打通AB实验的一站式产品化平台，支持一站式“辅助配置-&gt;调试-&gt;开实验-&gt;变更管控”。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">带来收益：无论是粗排还是精排，“训多目标、融公式” 已成为工业界标准范式。在得物社区搜索、推荐的模型迭代实践中，我们也确实走“模型多目标训练 + 融合公式调参”范式，2025在社区推荐、社区搜索落地了几十次LR（社区推荐内外流精排、粗排，社区搜索精排）、近百次加乘树推全。</span></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-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;"><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;"><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;"><strong style="box-sizing: border-box;"><span leaf="">DSL可解释性强：</span></strong><span leaf="">粗、精排的融合公式配置量大，数学变换复杂，容易配错。我们提供的DSL让算法同学直接写数学公式/逻辑表达式。明文公式形成策略全景，方便算法同学决策调参方向。</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="">即配即用+数学公式DSL的需求，给工程稳定性带来极大挑战。我们采用“编译语法校验 + 自动用全量配置降级 + 手动切换编译/解释模式”三位一体保障稳定性。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7901023890784983" data-s="300,640" data-type="png" data-w="1172" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059710" src="https://wechat2rss.xlab.app/img-proxy/?k=126a935d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvCWfEq87VqFyNAMl7nJxRHH9BDtKmP3tV82K8DY9pH0HB7lewBia6rOcVIaAicqrrA7qdJTicibviaOtjaVOrfGdSI16q0FpNG9VTc%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="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="">传统的KV、JSON 或 YAML等配置格式在面对上百行数学公式时已显乏力：一方面配置体量大、人工修改易出错且缺乏容错机制；另一方面可读性差，难以维护和审查。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们采用“全量配置+增量配置”的设计，天然解决了使用门槛&amp;自动降级问题：</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="">全量配置锁定为只读，确保基线稳定；算法同学只需声明需要新增或修改的增量配置（upsert）。系统在运行时将增量动态合并到全量配置中，生成最终生效的实验配置——既简化了操作；又避免了误改全局参数的风险。</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="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.8116147308781869" data-s="300,640" data-type="png" data-w="1412" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059712" src="https://wechat2rss.xlab.app/img-proxy/?k=771c6682&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvChXPVoa1j6vicXU3AJtqPYn8XaNUhQnooTiaV2vOicaPRtM5zEDyQtkoPTlrhMIQGlHkkQfVBfCvrkW845E52BU89k684c7JlG8%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="">DSL接近数学公式/逻辑表达式明文</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="">社区搜索、社区推荐的精排融合公式，服务了“多目标融合+业务boost调权”，语义包含：数学变换、逻辑判断、自定义UDF。当算法写下一串<span textstyle="" style="background-color: rgb(214, 214, 214);">sin(log(max(UDF(x), y)))</span>，框架能否接住？框架必须托底，正确校验与执行，杜绝“配错即崩”。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">从加乘树1.0到3.0，公式解析统一选用 ANTLR。相比手搓“逆波兰表达式”或“Flex &amp; Bison”，它基于AST校验更可靠，且Java开发门槛低。实际加乘树的配置结构里，公式按KV配置（Key 为结果名，Value 为表达式），支持跨行引用——前序公式的输出可作为后序公式的输入，形成可串联的计算链，直至得出最终结果。</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="">公式链转DAG：</span></strong><span leaf="">在加乘树3.0中，有相互依赖关系的多行公式，被框架解析成DAG。每个item都通过这套DAG计算融合分，1个item可能有多个融合分、每棵DAG的根结点对应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="">AST驱动逐行校验：</span></strong><span leaf="">每行公式都依托编译原理，校验&amp;解析为抽象语法树（AST）。结构化的AST可支撑后续可靠计算。</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="">加乘树3.0把DAG和AST直接翻译成代码：</span></strong><span leaf="">框架将公式链直接翻译成可执行代码，用字节码技术加载到JVM中。每个item直接计算即可。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3898550724637681" data-s="300,640" data-type="png" data-w="1380" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059711" src="https://wechat2rss.xlab.app/img-proxy/?k=074c4fdd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHu438iaFFAib1DJgVz9mPHUCia8tDwJz6ZC65jIZC8jibD0ChhxHPsf1tZP1lW61TP2xrJqqDzTL6298czNCZGPgvTduib63QG2V5bE%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><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="">如何应对无限组合的公式配置？加乘树选择了编译原理强校验，用了ANTLR框架，把公式校验&amp;解析成严谨的可访问结构（AST）。</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="">DAG强校验公式链：</span></strong><span leaf="">加乘树3.0初始化阶段自动解析公式链间的依赖关系，一边将公式链解析成DAG、一边强校验。能通过校验、最终编排成DAG的公式，才会进入实际计算；不能通过校验的危险配置（漏配公式、公式配错）都会在初始化阶段就被拦截，不会进入实际计算。</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="">加乘树设计了一套自动降级范式，方便“前置拦截错误、事中有效托底、后置发出告警”。一旦有错误的实验开流量，加乘树初始化阶段就会校验出错误，当次请求忽略AB实验配置、直接用全量配置计算，并及时发出“实验配置有误”的告警。</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="">如果有“编译原理校验”、“DAG校验”没有校验出的意外怎么办？如果框架仅仅是高峰期计算超时失败了怎么办？加乘树最后一层安全托底是“用全量配置串行重算”。无论如何保证线上效果。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4172461752433936" data-s="300,640" data-type="png" data-w="1438" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059708" src="https://wechat2rss.xlab.app/img-proxy/?k=69fe1a7e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHut5dn8wUXPyP9z4KCzT1rgsRrycFw3RianNgmJN1LaDFIeIt2WcT9AKHfshIcvIPBY8mab92nZ4TdyuljRfSDPdYrMVIo3Y074%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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="">核心攻坚：加乘树3.0升级编译执行</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="">加乘树2.0在社区搜索落地后，“每次请求3000个item、线程并发拆的多”的情况，暴露出加乘树耗CPU、耗线程的弱点。C++版加乘树替换了计算引擎，没有采用antlr visitor解释执行数学运算的方式，而是用exprtk框架、收获了更高的性能。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">受C++版加乘树的启发，我们计划替换Java版加乘树的计算引擎，降CPU消耗、降执行平响。加乘树3.0变成“直接将配置翻译成代码，字节码加载，直接计算”的编译执行形态。</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="">极致性能：配置直译硬代码，零中间损耗 + 最优 JIT</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="">Antlr翻译&amp;Javassist加载，直接“公式翻译成可执行代码”：</span></strong><span leaf="">包括多行公式的依赖关系、数学计算&amp;UDF调用，直接拉平成硬代码。硬代码执行效率最高，没有map缓存、递归调用栈等损耗。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">多行公式传递中间结果，map换POJO：</span></strong><span leaf="">每个item维护自己的缓存map，高并发put/resize，造成明显的CPU消耗、youngGC压力。本次会初始化时决策缓存POJO，避免resize、且读写更高效。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">核心Javassist管理类借鉴Dubbo写法：</span></strong><span leaf="">Dubbo的ClassGenerator写法，对内存管理考虑比较完善。本次借鉴ClassGenerator，把动态生成代码收入唯一管理单例类。</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;box-sizing: border-box;"><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">晚高峰模块平响、CPU火焰图消耗和内存分配火焰图消耗均显著降低。</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;"><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="">动态生成的字节码必须严格遵循JVM 范，平时习惯手写的Java法糖是不容忍的。例如，<span textstyle="" style="background-color: rgb(214, 214, 214);">Float a = (float) b</span>; 在源码中合法，但若<span textstyle="" style="background-color: rgb(214, 214, 214);">b</span>是<span textstyle="" style="background-color: rgb(214, 214, 214);">Double</span>类型，该语句涉及拆箱 + 窄化转换 + 装箱，而字节码层面需显式插入<span textstyle="" style="background-color: rgb(214, 214, 214);">doubleValue() → (float) </span>cast → <span textstyle="" style="background-color: rgb(214, 214, 214);">Float.valueOf() </span>等指令。若直接按表面类型生成字节码，将触发<span textstyle="" style="background-color: rgb(214, 214, 214);">VerifyError</span>。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">OOM在多处需要关注：</span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Javassist使用不当容易OOM：Javassist 在生成和操作字节码时（如通过 CtClass），因为其缓存机制，需要开发者主动管理资源释放。每次parse字节码的CtClass要及时释放，否则高频生成字节码容易触发OOM。这一点上，加乘树参照了Dubbo的ClassGenerator写法，创建、销毁内聚在同一个类里，即用即释放。</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.35446685878962536" data-s="300,640" data-type="png" data-w="1388" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059709" src="https://wechat2rss.xlab.app/img-proxy/?k=346b81d1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuLzu0K13O9BcJPus5h7UTccd0hCCmN7zBfCJxDfPdGzSEJOmnbuIQRthTLLziaBxXMTEU02LxYn43tbicVEnK782zBaNNhc5y1Y%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="">动态生成ClassLoader/Class/Instance要能GC：Instance能GC，ClassLoader/Class能GC吗？答案是能，只有从ClassLoader -&gt; Class -&gt; Instance全链路都GC Root不可达了，这一串才能GC。所以用Spring的ClassLoader这类常驻ClassLoader加载动态生成类是不行的，必须用即用即弃的自定义ClassLoader，并注意全链路的强引用问题。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.22109826589595374" data-s="300,640" data-type="png" data-w="1384" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059713" src="https://wechat2rss.xlab.app/img-proxy/?k=f3ca9ab6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvDbFsOiam0umP8iaPaxcGBv6jl2vMduvzwZRWEveXk5skJwiatsTvKS8hua24OfVZKNbTunvvFBIj25ra38vavhKpCMsDhUoNpKM%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="">我们实际验证了动态生成的类确实能被GC掉。</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="">多重护航：防止非法Java字节码引发线上问题</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="">ASM + Javassist双重检验：</span></strong><span leaf="">翻译生成的代码，经Javassist生成字节码后，除Javassist .toClass()的自检验，我们还让字节码过了ASM的字节码静态校验（会运行类似JVM的类型推断验证，确保每条指令执行前后，局部变量表和操作数栈的状态是类型安全的）。</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="">我们将加乘树管理平台封装成了一个沙箱，算法同学调试公式点击“校验”，平台会用同一套SDK模拟线上全套加载流程:“AST强校验 -&gt; DAG强校验 -&gt; 真实翻译代码 -&gt; Javassist &amp; ASM 双校验 -&gt; <span textstyle="" style="background-color: rgb(214, 214, 214);">反射调用构造器创建实例</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><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="">加乘树2.0、1.0的解释执行能力十分稳定、只是性能略差，3.0可以一键回退解释执行。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2441860465116279" data-s="300,640" data-type="png" data-w="1376" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059715" src="https://wechat2rss.xlab.app/img-proxy/?k=9a2bd149&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtBLb75glMaAicInUYOd7g6uJzUMhjX9aGEZkmM1o32bm5bpL78KEnXfZ7FIv2VHv1icibkOGC6ZOIxjVzCVuX5iavib6UnNVZ36Ah0%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="">做了一套一站式“辅助配置-&gt;校验-&gt;实时调试-&gt;开实验-&gt;变更管控”的使用体验，告别繁琐配置、体感更丝滑。</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="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;"><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="">稳扎稳打：从1.0到3.0的演进</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="">加乘树1.0: 支持配公式、框架直接算公式，支持UDF，解释执行。加乘树2.0: 少量性能优化，抽象成SDK。加乘树3.0: 升级为编译执行，外观简化为只需要配公式、框架自动解析DAG。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">加乘树1.0和2.0都是用的解释执行，antlr visitor遍历AST做“数学/逻辑/if判断”运算。加乘树3.0升级成了编译执行，多行公式解析DAG、每行公式用antlr解析AST时，直接翻译成Java执行代码，用字节码技术把执行代码加载进JVM直接执行。同时加乘树3.0也支持降级至解释执行。</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="">加乘树1.0</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="">解决：落地即配即用公式，解决手搓硬代码迭代效率低、代码腐化导致生效逻辑不清晰的问题。缺陷：费线程&amp;CPU。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">加乘树1.0于2025年1月在社区推荐外流精排落地，配法（使用外观）、降级机制是后续迭代不变的：</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）：</span></strong><span leaf="">“全量配置+叠实验改动”的配置机制 2）配置总共分 consts(输入物料)、paramBranch(条件分支替换参数)、formulas(公式)、root(融合结果字段名)。</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="">降级机制：1）：</span></strong><span leaf="">初始化阶段就检测公式配错、漏配公式等，一旦检出就自动降级走全量配置、并发出告警 2）少量运行时才能发现的问题，串行重算、降级算全量配置。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当时是从手搓硬代码做公式融合，无DIFF迁移过来，解决了如下2个迭代痛点：</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="">除调参是可配，调公式形态、调生效条件等都需要开发&amp;上线。</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="">boost、融合公式迭代复杂之后，生效逻辑变得黑盒，不容易分析调参方向。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8518005540166205" data-s="300,640" data-type="png" data-w="1444" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059716" src="https://wechat2rss.xlab.app/img-proxy/?k=acc1b552&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtgrm9kaOOdmib5RKD8YJ3sPJb4oqV71s0foRPunicq3blf16GhYn9ia1n5tPNvIlsEO0GbhKFiboCnypiaoBXBzTHmjFDibP7uIvx1g%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="">加乘树1.0的实现要点</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="">纯item维度（请求维度的公式也会每个item重复计算）。consts-&gt;paramBranch-&gt;formulas串行计算。antlr解析单行公式成AST，框架递归解析树依赖，antlr visitor解释执行。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.4892703862660944" data-s="300,640" data-type="png" data-w="1398" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059717" src="https://wechat2rss.xlab.app/img-proxy/?k=c82f4eb8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHu8Wzsm6e3aaOiaPHAPLf5ToyMQpw6WAXCQgDVrL2QF3Qc0Z0EN2XPvIcpFFX9z3V3lf38nDoX9jleNJ2hpKrKibeCPaWVV56sTk%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="">为什么用antlr</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="">DSL语法校验：</span></strong><span leaf="">我们需要一种配置设计，能尽可能简洁地表征模型融合公式（支持逻辑判断/复杂数学变换/UDF）——接近Java语法&amp;数学公式的DSL（当时有对标字节的配置外观）。我们需要准确校验DSL配置正确、并正确解析DSL配置——在antlr、手搓逆波兰表达式、flex&amp;bison里，选了用antlr校验、解析DSL（用AST校验原理可靠，Java上手难度低）。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">antlr visitor解释执行：</span></strong><span leaf="">依靠AST解析计算是一种可靠的计算逻辑。我们需要稳定靠谱的计算引擎，因为算法同学大规模使用后、会出现大量千变万化的公式组合——依靠AST解析计算是一种可靠的计算逻辑。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">类SIMD设计使性能可接受：</span></strong><span leaf="">antlr解析AST非常耗时，必须一次parse多次复用，不能在item维度重复parse。一般用antlr visitor做线上实时计算，性能是不可接受的。我们采用了一种类SIMD的代码写法，使落地性能可接受——类SIMD的设计，一次antlr visitor算一批item。最终落地的性能、没有因为antlr visitor拖过多后腿，性能比旧版硬代码融合公式还要好。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7896253602305475" data-s="300,640" data-type="png" data-w="694" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059714" src="https://wechat2rss.xlab.app/img-proxy/?k=a0208c5c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtaj8qGZteEdZ7WiaqZHC96ZOhKN6bX4lmLdBjl4aQRLHIb3sVMEhxwhlsMVqF5hk4K51HjyVCSpeSicJQicaY1NYLWBonmootsfM%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="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="">antlr语法定义文件</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2764786795048143" data-s="300,640" data-type="png" data-w="1454" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059718" src="https://wechat2rss.xlab.app/img-proxy/?k=4470cc31&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsNDPIlVqF2tw9B55eFugto4TqvOZibN25ZokvpiafWGVUqd0RxicyuLicdqQUgfmXxUytRibNXjmkzFIo05WwNpHhtlegutFgCPoI0%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="">antlr visitor如何通过访问AST计算1行公式</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="">加乘树2.0</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="">解决：抽象成SDK；执行计划自动识别请求维度公式、便于序融合等逻辑写UDF。缺陷：受限于解释执行，仍然比较耗线程。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">加乘树2.0于2025年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="">配置json结构简化，只需要配递归的一组公式即可（砍掉了consts、paramBranch）。if()的配法简化：旧版编译器设计的简单，将 “logic表达式”与“math表达式”分别放在2个编译器里，使用者不允许if里嵌套函数，加乘树2.0合并了编译器，if()里可以嵌套函数。支持“隐式item正排”。</span></p></li></ul></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2219020172910663" data-s="300,640" data-type="png" data-w="1388" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059719" src="https://wechat2rss.xlab.app/img-proxy/?k=3cb4eff1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv8xE2KL9QuO7AT0icGt7x0BRPYEPAhPhUUE1nPsBkcfOj7zL22SyalibeP62MayHmxTsIljcFUVnryLE2HuQMIqcMdt4LRhKu8U%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><strong style="box-sizing: border-box;"><span leaf="">性能：</span></strong><span leaf="">框架自动识别Req维度的公式，全局只计算1次。执行计划加缓存，砍掉“每次请求都重新build执行计划”，平响降低。</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="">Java版加乘树抽象为SDK，方便扩场景直接引用。</span></p></li></ul></p><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.48419540229885055" data-s="300,640" data-type="png" data-w="1392" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059720" src="https://wechat2rss.xlab.app/img-proxy/?k=4e44aae3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv8ZAkZTmhzKtMyh8ESY9cpZQiaX9hQfN5BnPicKJkyYro9icfTbiawVu2nIjI7cAP7UfneVz1hibiccX7eGaLaWzNia7HyS4M5AWiboTo%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="">加乘树3.0</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="">加乘树3.0于2026年1月在社区搜索落地。之前“核心攻坚”模块有提到，高并发&amp;计算量大的情况下，暴露出加乘树耗CPU、耗线程的弱点（类SIMD设计虽然能让性能可接受，但毕竟antlr visitor计算方式需要升级）。</span></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="">加乘树3.0替换了执行引擎。我们观察火焰图发现“按公式逻辑直接裸写的java代码”性能最高效，但是迭代效率最低。加乘树为了即配即用公式，性能却打了折扣。为了平衡“即配即用”的迭代效率问题和“性能”，我们“将配置公式直接翻译成可执行代码，用字节码技术加载到JVM中直接计算”，这让加乘树从解释执行升级为编译执行。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.8502747252747253" data-s="300,640" data-type="png" data-w="1456" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059723" src="https://wechat2rss.xlab.app/img-proxy/?k=8c5fb4b2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtRQqr08NE8PHgg0fN756gRmhU7B3PHCW4vkBRfXvH4lSfK5r1kQLba6bejrlddHkDiccoYySSM8W0g96K0DTxJMibvdkHh3LIwY%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.55" data-s="300,640" data-type="png" data-w="1440" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059722" src="https://wechat2rss.xlab.app/img-proxy/?k=1b4a902d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHv7ibCAWCdfppvS52bvpAUOlviaDGpLnBco85mcc34WXSpuHghq1x0RB3j4gHR6n7ibXqSLQ5oFibjlDR4NRhRyR8kFF8TwBoWPnzw%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><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;"><strong style="box-sizing: border-box;"><span leaf="">多语言 &amp; 模块化：</span></strong><span leaf="">加乘树有Java版，同时有C++版，是引擎同学创新实现的另一个高性能版本。支持多种业务场景及模块（如粗排、精排），可灵活接入 Java 业务引擎或 C++ 高性能引擎。欢迎其他场景和模块接入。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><strong style="box-sizing: border-box;"><span leaf="">稳定性 &amp; 产品化：</span></strong><span leaf="">重点打磨“加乘树管理平台沙箱拦截 -&gt; 线上容错降级 -&gt; 失败监控告警发现 -&gt; 解释执行托底” 的有效性，定期演练降级、验证算法效果。增强“加乘树管理平台”DIFF能力，扩展展示“调试DAG”、“可DIFF动态生成的代码”，打通实时debug平台，可以“DAG展开看计算的中间结果”。</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;font-family: PingFangSC-light;font-size: 15px;box-sizing: border-box;"><p style="text-align: center;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img js_insertlocalimg" data-ratio="0.8" data-s="300,640" data-type="gif" data-w="800" type="block" data-imgfileid="100059786" src="https://wechat2rss.xlab.app/img-proxy/?k=5ef958a0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_gif%2FFMFU1P6sHHsWlEl3J0RKdIrYTEOmcyp7Ax8f19qUIuutJw2Jy9zPJHo3MZUeV7Hk50dbwibv47UUibbq90DsOxF3YkCNYHNRQNqCMXRnjjEDU%2F640%3Fwx_fmt%3Dgif%26from%3Dappmsg"/></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">多层公式组成DAG（打磨中）</span></p></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: 100%;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3959608323133415" 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="100059725" src="https://wechat2rss.xlab.app/img-proxy/?k=3958a237&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvhDkAqQPsVJMUUliaj3qJfOgrSqfauqPkfKX96fOnae2ruoQkl8HfIc3rVVEy8VLt4kMLZBSU2SAnibYCYnic1C0woMLQ8Jhb3uA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></p></div><div style="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="">配置生成的可执行代码做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=""> 在加乘树这里打通精排模型调用，对精排模型的调用也高度抽象，一配即用、一配即可加入公式融合。</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=2247543318&amp;idx=1&amp;sn=ddb8f1a7acae9ee4b4f25c392c527eb4&amp;scene=21#wechat_redirect" textvalue="深入剖析Spark UI界面：参数与界面详解|得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">深入剖析Spark 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" target="_blank" style="" href="https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543276&amp;idx=1&amp;sn=afc76725398e7dc2f36e27473bc18832&amp;scene=21#wechat_redirect" textvalue="Sentinel Java客户端限流原理解析｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Sentinel Java客户端限流原理解析｜得物技术</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=2247543235&amp;idx=1&amp;sn=25a92af422dc6cbf55e1be290dbb8cc3&amp;scene=21#wechat_redirect" textvalue="社区推荐重排技术：双阶段框架的实践与演进｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">社区推荐重排技术：双阶段框架的实践与演进｜得物技术</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=2247542990&amp;idx=1&amp;sn=95c80d04da0238e8e16312f48c1a1f5f&amp;scene=21#wechat_redirect" textvalue="Flink ClickHouse Sink：生产级高可用写入方案｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Flink ClickHouse Sink：生产级高可用写入方案｜得物技术</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=2247542863&amp;idx=1&amp;sn=9b77527c41bd1d769af424ef20b5a658&amp;scene=21#wechat_redirect" textvalue="服务拆分之旅：测试过程全揭秘｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">服务拆分之旅：测试过程全揭秘｜得物技术</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="100059724" src="https://wechat2rss.xlab.app/img-proxy/?k=c2c04772&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FFMFU1P6sHHuLdyIbqt21fMJibSNicuickNPiaDkR7MGhMibLzrp4UBYG758WONIsRzpjakoUeMMZhDsEglfFycd3ic2uo7xuY5iag3iaCRpPt3EO1Tk%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=a719f028&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543475%26idx%3D1%26sn%3D6b31e2ad029864ede35100b16ce20606">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 04 Mar 2026 18:30:00 +0800</pubDate>
    </item>
    <item>
      <title>深入剖析Spark UI界面：参数与界面详解|得物技术</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkxNTE3ODU0NA==&amp;mid=2247543318&amp;idx=1&amp;sn=ddb8f1a7acae9ee4b4f25c392c527eb4</link>
      <description>围绕 Spark UI 监控模块，解析 Executors、SQL、Stages 等核心入口与关键指标，结合表扫描慢、Shuffle 并行度不足等典型场景，给出基于内存、并行度及 AQE 参数的调优方案，为 Spark 性能诊断与优化提供严谨实践思路。</description>
      <content:encoded><![CDATA[<p>原创 <span>硕</span> <span>2026-03-02 18:31</span> <span style="display: inline-block;">上海</span></p>






  
  <p><img src="https://wechat2rss.xlab.app/img-proxy/?k=ee1ec115&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHuCj5vbJCpN5LZtmwFHhX99qg6Y11QAkibrrkoPnUjGbSZ7tpYCgPzoGZsdIEB1Dvz3rlqdDyFQ6IpUhQxAk22Fm7Ufhq7qnVI8%2F0%3Fwx_fmt%3Djpeg"/></p>
  <p>围绕 Spark UI 监控模块，解析 Executors、SQL、Stages 等核心入口与关键指标，结合表扫描慢、Shuffle 并行度不足等典型场景，给出基于内存、并行度及 AQE 参数的调优方案，为 Spark 性能诊断与优化提供严谨实践思路。</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="">二、Spark UI 一级入口</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; position: static; 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; position: static; 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.Executors</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; position: static; 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; position: static; 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.Environment</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; position: static; 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; position: static; 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;}]">    3.Storage</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; position: static; 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; position: static; 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;}]">    4.SQL</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; position: static; 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; position: static; 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;}]">    5.Stages</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; position: static; 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; position: static; 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;}]">    6</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;margin-top: 10px; margin-bottom: 10px; position: static; 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; position: static; 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;}]">.Jobs</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">三、Spark UI 二级入口</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    1.SQL</span><strong><span leaf=""><span textstyle="" style="font-weight: normal;">详情页</span></span></strong></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><strong><span leaf=""><span textstyle="" style="font-weight: normal;">    2.Stages详情页</span></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;"><span leaf="">    1.案例一（scan表慢和内存问题）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">    2.案例二（shuffle之后并行度不足）</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">五、总结</span></p></div></div></div></div></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-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="">Spark UI是Apache Spark内置的Web监控界面，为开发者和运维人员提供对Spark应用程序执行过程的实时、可视化洞察。它以直观的方式展示作业（Jobs）、阶段（Stages）、任务（Tasks）、SQL执行计划、Executor资源使用、存储状态及运行时环境等关键信息。通过Spark UI，用户可以快速定位性能瓶颈（如数据倾斜、Shuffle 开销、调度延迟）、分析执行计划、监控资源利用率，并进行有效的调优与故障排查。无论是开发调试还是生产运维，Spark UI都是理解和优化Spark应用不可或缺的核心工具。</span></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;"><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="">Spark UI 一级入口</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="">打开Spark UI，就会看到当前的一个Jobs页面，这个页面会记录当前作业中数据的移动，读取等相关动作，除此之外，一级入口还会包括作业运行时的其他属性与指标，主要包括：Stages、Storage、Environment、Executors、SQL 。</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7911832946635731" data-s="300,640" data-type="png" data-w="1724" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059633" src="https://wechat2rss.xlab.app/img-proxy/?k=f95b8aa7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtotTNrcp1AqoVk23YUicq7rics3baNHcTUKqHNCqKiaEhnHF42LZea079TXPciaSdgnWybNEtEiaTLNrPiaaJC05qUyI5B10BVKuQIM%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="">首先，我们由简入繁，从衡量任务的整体指标依次介绍各个入口的的功能与作用，首先我们先看Executors，先对作业整体的一个计算负载进行了解。</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="">Executors</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="">Executors Tab主要包括两部分，Summary和Executors两部分，其中Summary是所有的Executors度量指标的加和，而Executors则是描述每一个Executor的详细信息，粒度会更细，方便对每个Executor的情况进行了解：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.27206418672501825" data-s="300,640" data-type="png" data-w="2742" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059632" src="https://wechat2rss.xlab.app/img-proxy/?k=499c94cf&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsiaeAibsuE6odNlIYr0Aw8dXD9oiaIaHVDDPDdUbtqicg2jd0HOsXicgABSukf0ggur9Zf1q0ibxGpQCMQLXB7etD72y7Y5CUuxic7rY%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="">下面我们对Spark UI对Executors提供的Metrics进行介绍，方便我们对每个Executor节点的运行情况有更好的了解：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.49578820697954273" data-s="300,640" data-type="png" data-w="1662" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059631" src="https://wechat2rss.xlab.app/img-proxy/?k=67fe2fc5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuop1JHWU6ibF1Lje3u9TssfJBKqiac8ibr5J7UpVicibZHDn78NXJk1YONLAn4S2icPFWNhVib0nr91Ymx0DdQzQZibgHA8OZpIiasKlCg%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="">Spark UI中的Executors界面是监控和诊断Spark应用运行状态的核心窗口之一，它从执行器（Executor）粒度展示了整个集群的资源使用、任务负载和数据分布情况，以及它们对CPU、内存与磁盘等硬件资源的消耗。基于这些信息，我们可以看到不同的Executor的状态，是否有个别的Executor存在负载不均衡的情况，从而快速的定位问题，例如数据倾斜等。</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="">Environment</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="">这里说一下Environment，显而易见，这里主要展示我们的任务的一些配置项，它主要包括五大环境信息：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.46424242424242423" data-s="300,640" data-type="png" data-w="1650" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059629" src="https://wechat2rss.xlab.app/img-proxy/?k=ca5975df&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHv9RKgkM7mL5Z6bU8IfSic8YDyHNT2sXAxy0If0ZTEeYDjr49OOh1O2YTHuXA8arkD6oicoqGNvJ9iciaOR2Y9Oft3WefmZgIbYJRk%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="">通过查看Environment的信息，我们可以快速获取当前任务的配置信息，这里主要查看Spark Properties信息，来去判断当前任务的配置项是否符合我们的预期，从而作出适当的调整，优化任务的性能。</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="">Storage</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="">Spark UI中的Storage界面 是用于监控和管理 缓存数据（Persisted/Cached Data）的核心窗口。它直观展示了哪些RDD或DataFrame被缓存、缓存在哪里、占用了多少资源，是优化内存使用和避免OOM（Out of Memory）的关键工具。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3281061519903498" data-s="300,640" data-type="png" data-w="1658" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059630" src="https://wechat2rss.xlab.app/img-proxy/?k=07b10b4d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtNCrNEPUqOmeb2MLTH9G2kmeib6tM9RUzImDI1AlSqZr7j8XPwgJTrVvQqxtob5JrPdKbS0BoS6LBHibAIp4x7oPWo3xiaK4cic74%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="">Cached Partitions与Fraction Cached分别记录着数据集成功缓存的分区数量，以及这些缓存的分区占所有分区的比例。而当Fraction Cached没有达到100%时，说明该数据集未能完全缓存在内存，参照spark内存管理可知，此时会出现数据换入换出的情况，显性的说明此时需要参与的计算量大，执行内存会占用缓存内存Size in Memory与Size in Disk，则更加直观地展示了数据集缓存在内存与硬盘中的分布。</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="">SQL</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="">Spark UI中的SQL页面（SQL Tab）是Spark SQL / DataFrame作业的核心监控与优化入口。它专为结构化查询设计，将逻辑执行计划、物理执行过程、性能瓶颈和数据流动以可视化方式呈现，是诊断慢查询、验证优化策略、理解AQE行为的“驾驶舱”。</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-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.225" 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="100059669" src="https://wechat2rss.xlab.app/img-proxy/?k=69b66783&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHtF76Rn0OAfyBH8v3F4d29FdP8oFEiaLnLUibzdHj7icPEBRzsDHoUPAlh8ajwIcy34pEB7AG7cOcGBea9hnkdWqNqc4RvA92OtEE%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="">Stages</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="">Spark UI的Stages界面 是性能调优和故障诊断的核心入口。它从Stage（阶段）粒度展示了Spark作业的执行细节，帮助你精准定位慢任务、数据倾斜、资源瓶颈等问题。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3223924142961342" data-s="300,640" data-type="png" data-w="2742" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059635" src="https://wechat2rss.xlab.app/img-proxy/?k=dc576838&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvZCWldPRV6HEVAg0fbIrLkDO7XSE0BJMzFhuSDrCOHPXTwVJYZJPTwX493AyAI3t2Rs6Kggl0cQIPXc6R2gOV0OWrcQyLmySA%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.49150485436893204" data-s="300,640" data-type="png" data-w="1648" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059634" src="https://wechat2rss.xlab.app/img-proxy/?k=0d88441d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtlSmLVUBtZVE3tmiaNVsiczULc4q8ULiaeZWnx1wtibrsqiayetGKSsLFwGGI607VRGmW4dL2nmZaVzLqv9Sxd8icgia04OY0Wy9mEicM%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="">Jobs</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="">Spark UI的Jobs界面 是整个Spark应用监控体系的顶层入口，它以Job（作业）为单位，提供全局视角的执行概览，帮助你快速判断应用整体健康状况、识别失败作业、定位性能瓶颈起点。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.34719183078045224" data-s="300,640" data-type="png" data-w="2742" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059638" src="https://wechat2rss.xlab.app/img-proxy/?k=4b691216&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsN08x0eOrTNqPF9kpSSuvwOicfyeJpRIP45LyOlBJFgzr53G0Mtf74cQp6cOqDA3Cwk5n1h8rwSZTxsmuw1K6o4sV4xngmCZr4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.42493946731234866" data-s="300,640" data-type="png" data-w="1652" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059637" src="https://wechat2rss.xlab.app/img-proxy/?k=94233f61&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHu8qCesCalBiaytIS8XrUQFoENajMtHJLlgbnaZmdic7m1SZ2ibXQ3Vpa1aP25thblIHrDr3YEKaSBibibPPDrdOrtibO57HUJrMMFuc%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="">至此，我们已对Spark UI导航栏中的各个页面进行了不同程度的解析。整体来看，这些页面可分为两类：</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="">“详情型”页面：包括Executors、Environment和 Storage：</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="">“概览 + 下钻型”页面：包括SQL、Jobs 和 Stages:</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: 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="">Spark UI 二级入口</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="">SQL</span></strong><span leaf="">、</span><strong style="box-sizing: border-box;"><span leaf="">Jobs</span></strong><span leaf="">和</span><strong style="box-sizing: border-box;"><span leaf="">Stages</span></strong><span leaf="">这三个主入口而言，其对应的二级页面通常已包含极为丰富的诊断信息——涵盖查询执行计划、作业生命周期、任务级性能指标等，基本构成了Spark应用的“健康体检报告”核心内容。</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="">SQL → Jobs → Stages</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;"><span leaf="">全局DAG执行结构（来自SQL页面）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">作业的完整执行流程与依赖关系（来自Jobs页面）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">以及各计算阶段（Stage）的资源使用与运行细节（来自Stages页面）。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过这一层层递进的分析路径，我们将获得对Spark应用执行行为更全面、更深入的洞察。</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="">SQL详情页</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.22538293216630198" data-s="300,640" data-type="png" data-w="2742" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059642" src="https://wechat2rss.xlab.app/img-proxy/?k=abaa2793&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvXrLcicxv87nXkyK6nNeKHv5s47Twp34W4nXiaMCiaOMp1viaakahoZ2T8gpsPdAQ0Wwrqibgu8ZOe8RibBxBdM5S1jia3rYkE0LI8eg%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="">通过点击图中的with...可以进入到该作业的详细执行界面：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.6" data-s="300,640" data-type="png" data-w="680" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059641" src="https://wechat2rss.xlab.app/img-proxy/?k=a5ab6a47&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHtB7zyttej07j1vvzNntB20CFibcNMhKCXgp9sgU1Cb8LezUVjbc5DQ1RJo0Rkcol27mNicHKbJZ4FVmUiakHk08Mp9Eic7HVicTQiag%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="">在数据分析场景中，大部分的操作包括过滤、分组、聚合、关联、排序。所对应的执行计划图中Exchange：代表的是Shuffle操作，Sort：代表的是排序，Aggregate：代表的是数据聚合。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这三类操作是硬件资源（如 CPU、内存、磁盘和网络）的主要消耗者。与此同时，Spark UI也为它们分别提供了丰富的细粒度指标（Metrics），用以精确刻画各类资源的使用情况。接下来，我们将聚焦于这三类操作，深入解析其对应的度量指标，以更好地理解资源消耗模式并指导性能调优。</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="">Exchange</span></strong></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.1733021077283372" data-s="300,640" data-type="png" data-w="854" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059644" src="https://wechat2rss.xlab.app/img-proxy/?k=ceab4065&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsdbFyfqh0tkibX95PTVdpFL6d9wRWibfjwuhOxe6YUt4gwI6PcBUMQ9JiaibHEIsVlqqWHzS91SyDykscYxQTSiaX7vQeJF9GQT98U%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="">可以看到，针对每一个Exchange操作，Spark UI都提供了全面而细致的指标（Metrics），完整覆盖了Shuffle的整个生命周期——从Shuffle Write到Shuffle Read，从数据规模到处理耗时，关键维度一应俱全。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">为了便于理解和参考，我将这些Metrics的含义和作用整理成表格形式：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5486631016042781" data-s="300,640" data-type="png" data-w="1870" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059643" src="https://wechat2rss.xlab.app/img-proxy/?k=993a7139&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvA3y9vGoSN5ViczialbD5B8LpKB7XtMxGwmicgMjsn6rhPwjB8Le0ru27Zzx2oicKN684iaQakcpoVgKrjU9v8qvJPia2LcUaaOy3mk%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="">Sort</span></strong></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.1733477789815818" data-s="300,640" data-type="png" data-w="1846" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059640" src="https://wechat2rss.xlab.app/img-proxy/?k=005b6f7f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvNw12OR0YaFvl1l8ybVwmh8WwLh0nKsmx5SChGvE68wNaXXcwL4syAe0L7UtyvTZKw6fyNZGUSQv50SfrP47y7icSh9qHgJ7Qc%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="">可以看到，“Peak memory total”和“Spill size total”这两个数值，足以指导我们更有针对性地去设置spark.executor.memory、spark.memory.fraction、spark.memory.storageFraction，从而使得Execution 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="">Aggregat</span></strong><strong style="box-sizing: border-box;"><span leaf="">e</span></strong></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.17316017316017315" data-s="300,640" data-type="png" data-w="1848" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059645" src="https://wechat2rss.xlab.app/img-proxy/?k=42963875&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHsUwL8muC04ed6aevmBvYzTHuC6uG2yhTicJpwWaaVk3fkKb5ckXbazsfJbQp1zLzFI68pszlFW97LXf7fkJN9Cd0bvvun7nE7M%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="">对于Aggregate操作，Spark UI也记录着磁盘溢出与峰值消耗，即Spill size和Peak memory total。这两个数值也为内存的调整提供了依据。</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="">Stages详情页</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.474835886214442" data-s="300,640" data-type="png" data-w="2742" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059649" src="https://wechat2rss.xlab.app/img-proxy/?k=e60732f6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvBHMibBHyIdq3UOBFhibZtnnTh1o43MGtZV2Vs7fJIL9fdybXuA4AD9icH0qYQA3QQed9V4P0MUnb8V97EZDme8A5ibAjialnUqKDY%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="">在所有二级入口中，Stage详情页的信息量可以说是最大的。点进Stage详情页，可以看到它主要包含3大类信息，分别是Stage DAG、Event Timeline与Task Metrics。其中，Task Metrics又分为“Summary”与“Entry details”两部分，提供不同。</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="">Stage DAG</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="">我们首先来看最简单的Stage DAG，如下图所示：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="1.4875346260387812" data-s="300,640" data-type="png" data-w="722" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059646" src="https://wechat2rss.xlab.app/img-proxy/?k=42f83fa9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHszDGjhm2yjBdE0YRricU5XlPHhSyQozv2baJyFU1DCa4ZG6YfpEibRKd7avDBibppVpLOMz8EdOyXna9OTjZhJtOE0DlyBUexR2c%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="">之所以说Stage的DAG相对简单，是因为我们已在SQL页面的二级详情中对完整的执行DAG进行了深入解析。而Stage级别的DAG本质上只是该作业（Job）整体DAG的一个局部片段——它仅对应其中某一个计算阶段。因此，一旦你理解了SQL页面中面向整个Job的完整DAG结构，Stage 层面的DAG自然也就一目了然、无需重复深究了。</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="">Event Timeline</span></strong></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5139393939393939" data-s="300,640" data-type="png" data-w="1650" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059648" src="https://wechat2rss.xlab.app/img-proxy/?k=4cb06ce2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHve2bk3EW2j61o6kWopv2zcuCTlEJPU7q3NnvXuZSx9qswqWkTBYARMleTyxeIiareCfJX7tlwvRTSdSSc9mdVc0icM6K1hA7Hmo%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="">Event Timeline，记录着分布式任务调度与执行的过程中，不同计算环节主要的时间花销。图中的每一个条带，都代表着一个分布式任务，条带由不同的颜色构成。其中不同颜色的矩形，代表不同环节的计算时间。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3125" data-s="300,640" data-type="png" data-w="2048" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059647" src="https://wechat2rss.xlab.app/img-proxy/?k=a6dd6fa7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuKoqibpWibQYHLdeEGg2ia1IibrqIvIAzjzAekdqQkxy95hj6MgiasH8z5ILibPAY4E6aicwgxg5xiazsyhE4mJmvUje3BFmP60WUIwto%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="">在理想情况下，Spark任务的时间条带（Timeline）应以绿色部分（Executor Computing Time）为主，这表明大部分时间都用于执行实际的计算逻辑，而系统开销（如调度、I/O、Shuffle 等）被有效控制在较低水平。</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;"><span leaf="">深蓝色部分（Scheduler Delay）占比过高：说明任务在等待资源调度上耗费了大量时间；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">黄色（Shuffle Write Time）和橙色（Shuffle Read Time）显著膨胀：表明 Shuffle 阶段成为性能瓶颈。</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;"><strong style="box-sizing: border-box;"><span leaf=""><span textstyle="" style="font-weight: normal;">1. 针对调度延迟高（Scheduler Delay 大）</span></span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">可参考以下经验公式进行资源配置调整：DP∼MCPD∼CM</span></p><p style="text-align: left;white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span style="text-align: justify;box-sizing: border-box;"><span leaf="">其中：</span></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="">DD ：数据集大小；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">PP ：并行度（Partition 数量）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">MM ：每个Executor 的内存；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">CC ：每个Executor的CPU核数；</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">公式含义：每个任务处理的数据量（ D/PD/P ）应与单个任务可使用的计算资源（ M/CM/C，即单位CPU核对应的内存）处于同一数量级。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">若D/PD/P远大于M/CM/C，说明任务过重或资源不足，容易导致调度排队；反之则可能资源浪费。通过合理调整并行度PP 、Executor 内存MM和CPU核数CC可有效降低调度开销。</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 textstyle="" style="font-weight: normal;">2. 针对 Shuffle 负载重（Shuffle Read/Write 时间长）</span></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;"><span leaf="">是否可以使用Broadcast Join？</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">若其中一张表较小（通常&lt;100MB），可将其广播到各节点，从而完全避免Shuffle。</span></p></li><li style="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><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">spark.sql.adaptive.enabled</span></span><span leaf="">启用AQE自动合并小分区；</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">调整</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">spark.sql.shuffle.partitions</span></span><span leaf="">避免过多小文件；</span></p><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">使用</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">repartition</span></span><span leaf="">或</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">coalesce</span></span><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="">Task Metrics</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="">Task Metrics（任务指标）是Spark在每个Task执行完成后收集的一组细粒度性能与资源使用数据，全面刻画了该Task的执行行为。这些指标构成了Spark UI（尤其是 Stages 页面）中各类可视化分析（如时间条带、Shuffle 统计、内存使用等）的底层数据基础，也是进行性能调优、故障排查和资源规划的核心依据。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">在分析时，通常先从粗粒度的“Summary Metrics”入手——它是对所有Tasks执行指标的统计汇总，能够快速反映整个Stage的整体表现，随后再深入到细粒度的“Tasks”列表，逐个排查异常或低效的Task，实现精准定位与优化。</span></p></div><div style="margin: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">Summary Metrics</span></strong></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.29913473423980225" data-s="300,640" data-type="png" data-w="1618" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059652" src="https://wechat2rss.xlab.app/img-proxy/?k=dce4933c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHss4EmSo4tUSkQMtqoTU6pkkictWNZ0K4QAIU5A00Z9ZibWdibSRNGWLIxEKqbJGhQcFqZvyTRJ9rmBhWmJlvwqcIKGIXTiccdBwIE%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="">点击Select All，使当前所有度量值都生效，首先把Metrics整理到表格中：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.5206073752711496" data-s="300,640" data-type="png" data-w="1844" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059651" src="https://wechat2rss.xlab.app/img-proxy/?k=ac78534c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHujgs8YyUCL1RQ62KDnvDKh1g1FQJG6y724VHMlBglo86xSXLxJFI5cTYXKOwcegeesy2KTRV9FCCic0FyX8RoSp9TvsHn8a64k%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="">特别值得关注的是Spill (Memory) 和Spill (Disk) 这两个指标。在Spark执行过程中当用于缓存中间数据的内存结构（如</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">PartitionedPairBuffer</span></span><span leaf="">或</span><span style="background-color: rgb(218, 218, 218);box-sizing: border-box;"><span leaf="">AppendOnlyMap</span></span><span leaf="">）达到容量上限时，系统会将部分数据“溢出”（spill）到磁盘以释放内存空间。</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="">Spill (Memory) 表示这些被溢出的数据在内存中的原始大小（即未落盘前的字节数）；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Spill (Disk) 则表示这些数据实际写入磁盘后的大小（通常经过序列化和压缩）。</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 textstyle="" style="font-weight: normal;">通过计算两者的比值：</span></span></strong></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Explosion Ratio≈Spill (Memory)Spill (Disk)Explosion Ratio≈Spill (Disk)Spill (Memory)</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们可以得到一个近似的 “数据膨胀系数”（Explosion Ratio）。该系数反映了：单位磁盘存储所对应的实际内存占用。有了这个比率，当我们知道某份中间数据在磁盘上占用了多少空间时，就能反推出它在内存中大概会消耗多少资源。这为精准评估内存需求、预判OOM风险、合理配置Executor内存提供了重要依据。</span></p><p style="white-space: normal;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></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="">若Explosion Ratio = 3.0，意味着磁盘上1GB的spill数据，在内存中实际占用了约3GB；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">若该值远大于1，说明数据在内存中高度“膨胀”，需警惕内存压力；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">若接近1，则表明序列化/压缩效率高，内存与磁盘占用接近。</span></p></li></ul></div><div style="margin: 5px 0px;box-sizing: border-box;"><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="text-decoration: underline;text-decoration-style: dotted;text-decoration-color: rgb(105,242,244);text-decoration-thickness: 6px;"><strong style="box-sizing: border-box;"><span leaf="">Tasks</span></strong></span></p></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="">在介绍完粗粒度的Summary Metrics后，我们进一步深入到更细粒度的Tasks列表。实际上，Tasks表格中展示的许多指标（如 Duration、Shuffle Read Size、GC Time 等）与Summary Metrics中的内容高度一致，其含义完全相同，因此无需重复解释——你可以直接参照前文对Summary Metrics的说明来理解这些字段。</span></p><p style="white-space: normal;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></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="">Summary Metrics提供的是对所有Tasks的聚合统计（例如最小值、中位数、最大值等），用于把握整体趋势；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Tasks列表 则逐行展示每个Task的具体指标值，呈现个体行为。</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 textstyle="" style="font-weight: normal;">这种细粒度视图特别适用于定位异常任务，例如：</span></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="">执行时间显著偏长的Task;</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Shuffle 读取数据量异常高的Task;</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">发生磁盘 Spill 或 GC 耗时过长的Task。</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">通过对比单个Task与整体统计的偏差，可以快速识别性能瓶颈或数据倾斜问题，从而实现精准的故障排查与调优。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3977832512315271" data-s="300,640" data-type="png" data-w="1624" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059654" src="https://wechat2rss.xlab.app/img-proxy/?k=11b292d5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHsRD34rEKocQRs9SHYKEpm5T0vacn4a2sl6bvpZz9aUIKLE4jALwDm5BP7D7Px6ARlvI8537AYNpq5WZOywgicTyXGWTL0hHmoA%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="">Locality Level（本地性级别）</span></strong><span leaf="">。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">正如调度机制中所讨论的，每个Task在提交时都会携带一个</span><strong style="box-sizing: border-box;"><span leaf="">本地性偏好（locality preference）</span></strong><span leaf="">，用于指示它希望在哪个层级上访问其输入数据——例如是否优先在数据所在的节点、机架或任意节点上执行。Spark调度器会尽可能依据这一偏好，将 Task 分配到靠近其所需数据的 Executor上。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">这一机制的核心目标，正是践行Spark的核心设计原则：</span><strong style="box-sizing: border-box;"><span leaf="">“数据不动，代码动”</span></strong><span leaf="">。通过将轻量级的计算逻辑移动到数据所在的位置，而非将大量数据跨网络传输到计算节点，从而</span><strong style="box-sizing: border-box;"><span leaf="">显著减少网络 I/O 开销，提升任务执行效率</span></strong><span leaf="">。因此，Locality Level不仅反映了任务调度的亲和性，也是评估数据局部性优化效果的重要依据。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.17424242424242425" data-s="300,640" data-type="png" data-w="1848" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059650" src="https://wechat2rss.xlab.app/img-proxy/?k=b3eea883&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHuMZpltjL8wxiaWRickWjWlibvLxdcznawh42RSmUVUMCuibodNIg0wWfxBeX81XTB9fXae7sfOKm2C8YPibfJbibaZ2o0EnOvY1Afds%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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;"><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="">案例一（scan表慢和内存问题）</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.42961342086068566" data-s="300,640" data-type="png" data-w="2742" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059653" src="https://wechat2rss.xlab.app/img-proxy/?k=519ce423&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHs7UtQicfPqjl3aUiccoJT5Bc8RgxwFQdApZW4S25CCBcbPyfS9MN3kAwxsGP7LeqQsVDQOsRKg4gVLG8aGF3YxGcYwVLZLcXlOg%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="">如上图所示，我们选择运行时间最长的一个Stage进行具体分析调优，点进去进入该Stage内部，如下所示：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.10421286031042129" data-s="300,640" data-type="png" data-w="2706" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059655" src="https://wechat2rss.xlab.app/img-proxy/?k=180baaab&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvk8FLhZgaIfSW3ia5OjrxibzDBiaiasSLULQ9FUzheLmHwQnJwr3G7n5vfNGabia41FkNH0BevbukDoibULhyAgREGfHONvU6A1AaB4%2F640%3Fwx_fmt%3Dpng%26from%3Dappmsg"/></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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.39460247994164843" data-s="300,640" data-type="png" data-w="2742" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059659" src="https://wechat2rss.xlab.app/img-proxy/?k=6d3af8ec&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHuF6cw6yPpsYAMU2713bLYMFL1icibNyEuqB6zicpYqBwvtbAGIGZuviaTWWaibAiaTfibaHbqE6zzgv9uoZRcyvElmsBRcmSpe2NGiaqU%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><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">1.这里单个Task处理的数据量为25MB左右，正常来说，一个Task处理的数据量为128-256MB较为合理，这是由于原始表的数据量大，小文件太多，导致分配的Task数据量过大。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">2.并且由第二个图可知失败重试的Task的调度等待时间过长，这是由于Task数据量过多，而实际并发只有1000，导致部分Task调度时间太长导致。</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="">set spark.sql.odps.split.size.du_shucang.dws_traffic_algo_search_keyword_stats_di=512MB添加如上参数后观察效果：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3413566739606127" data-s="300,640" data-type="png" data-w="2742" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059657" src="https://wechat2rss.xlab.app/img-proxy/?k=53db72a8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHvjiaxnkvtoSebIK8bJmzlUvXibPMR1oJicaM2ZCibFWS8W0HVR1HFZolPaXAFPqsibb4tp2UOSITibHY5sN1794rZZh8Xk2d4vw6ic9I%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="">我们第一次将切片大小控制到512MB来减小实际Task数，可以看到相对于上次该Stage会快20min，这里我们还可以继续增大表的切片来迭代看效果，感兴趣的可以自己尝试。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">我们在从另外一个角度看待问题，当我们试图减小分配给Stage的Task数量时，那么Task的实际处理数据量就会增大，这里我们可以通过减小&#34;spark.executor.cores&#34;的核数来隐形的增大Task的内存或者调大spark.executor.memory的内存来显性的增大Task的内存，这里由于Task的量级太多，我们选择增大spark.executor.memory来进行优化，效果如下所示：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.3435448577680525" data-s="300,640" data-type="png" data-w="2742" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059658" src="https://wechat2rss.xlab.app/img-proxy/?k=8667baf2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHth04oT8iaicQWU1ZvrOGfPV5EAdo9yt5EKK9szjwv61Uic2swUzVWp0Gr4fuqPMibyfoibH18ACqWBJiaRMV87k5jqQFuKRg8dd3RDE%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="">这里由于本身Task处理的数据量是很小的，所以无法很显著的看到效果，若是出现下图所示的情况，调大内存效果会更显著些：</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.29304029304029305" data-s="300,640" data-type="png" data-w="2730" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059656" src="https://wechat2rss.xlab.app/img-proxy/?k=13c2f747&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHv2ktjx4WQbFdWpcPWL5GKLrFI0JuVibyYz0EZS0p0mRwCXAsvtfsZ0bzpHFyNGibfgy3nbsaF3hYbLB4kdQskjJ8nFfmI4KWicRc%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="">总结：在Spark中，当读表时由于数据量大，而此时Task处理的数据量又过小时，可以通过set spark.sql.odps. split.size.xxx=xxMB来减小task数量，而通过Spill和Spill Memory Disk来观察其是否需要增大内存或者实际并发量。</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="">案例二（shuffle之后并行度不足）</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;width: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.516260162601626" data-s="300,640" data-type="png" data-w="984" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059661" src="https://wechat2rss.xlab.app/img-proxy/?k=0f986cd9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHseSIBkJEp2J1aYOgFSIiazBGKn9t24Zibanaf8Azx8TdErZOFl9wTiaibg5sugUwJjFsLzGBF9gibW1z0opZepHqTibBSkYIJJGvOwM%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="">该case打不开了之前记录的，随便拿了一个还是老样子降序查看最大的。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.7313915857605178" data-s="300,640" data-type="png" data-w="618" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059662" src="https://wechat2rss.xlab.app/img-proxy/?k=d85d5942&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2FFMFU1P6sHHt3fdrEBmwEhk45EvUCpr4xKGFL77ql6yfP0BqiaVxz1BFTibmLRxG5n7WpFYCBTicyibXvQKAff101WWbUIuKRj0WwROcmnYucJkE%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="">分析是在Shuffle阶段并行度提升不了。</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="">总结：在Spark中，Join、Group都会在Shuffle阶段产生并行度，这个Shuffle是一个很大的池子，可以利用万能参数进行增加并行度。</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="">读取Shuffle数据的目标大小 ；</span></p></li><li style="box-sizing: border-box;"><p style="margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">提高AQE shuffle默认分区数；</span></p></li></ul><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">&#34;spark.sql.adaptive.advisoryPartitionSizeInBytes&#34;:</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;}]">&#34;64MB&#34;; </span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">&#34;spark.sql.adaptive.coalescePartitions.initialPartition</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;}]">Num&#34;:&#34;1000&#34;.</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">注意：有些时候会发现增加了还是没变，那是因为切分还是太大。1,2切分，3调整限制。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">&#34;spark.sql.adaptive.advisoryPartitionSizeInBytes&#34;:&#34;8KB&#34;,</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">&#34;spark.sql.adaptive.coalescePartitions.minPartitionSize&#34;:&#34;8KB&#34;</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">&#34;spark.sql.adaptive.coalescePartitions.initialPartitionNum&#34;:&#34;3000&#34;.</span></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-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="">总的来说，我们通过Spark UI界面去优化亦或者去定位错误，都离不开内存与并行度这两个大的维度，通过相应的Summary Metrics，我们可以很好的定位到问题所在，是内存过小，还是并行度不够，事实上，内存与并行度并不是独立的，而是相互影响，相互制约的一种关系，并行度决定了“有多少个Task同时运行”，而内存决定了“每个 Task能分到多少资源”。</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: 90%;height: auto;box-sizing: border-box;" nodeleaf=""><img data-aistatus="1" class="rich_pages wxw-img" data-ratio="0.2748917748917749" data-s="300,640" data-type="png" data-w="1848" style="vertical-align: middle;max-width: 100%;width: 100%;box-sizing: border-box;" data-imgfileid="100059663" src="https://wechat2rss.xlab.app/img-proxy/?k=535cca18&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_png%2FFMFU1P6sHHvhBMNTiaYfIyp1ESOMmCk1SibeugytOh4xM9RkdlsyB0MjWTTXydibUAibDptCC3o0NjJ8HYsozCO4CcFXKCaJfWhibngJSPH4KLN4%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="">当并行度一定的时候，当我们试图通过调大内存来解决问题而问题并未得到解决的时候，实际上，当内存变大而实际并行度固定时，每个Task所分配的内存就会增大，所带来的额外开销就是做内存穿透的时间增加，从而GC时间增大。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">当内存一定时，我们去调大并行度或者增大核数时，每个Task所分配的内存就会变小，就会容易出现内存溢出的风险。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">对于一个任务，那我们如何去合理的配置其并行度和内存，这里我们可以看一个任务耗时最长的的几个Stage，假设某个Stage的并行度为5000，而此时所给的参数为executor.memory=12g,executor.cores=4,spark.dynamic</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">Allocation.maxExecutors=250，此时集群最大并行度250*4=1000，也就是说当前任务需要分5批执行，此时集群中一个Task内存为3g，按照经验论，每Core对应4～8GB内存是合理的，而处理的总并发度通常会是实际并发度的2~3倍为合理，因此，我们将参数设定为 executor.memory=16g, executor.cores=6来进行一个迭代优化。</span></p><p style="white-space: normal;margin: 0px;padding: 0px;box-sizing: border-box;"><span leaf="">一个好的Spark作业，Task均衡、无Spill、CPU打满、内存够用，这是我们去做优化的一个理想状态！</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=2247543276&amp;idx=1&amp;sn=afc76725398e7dc2f36e27473bc18832&amp;scene=21#wechat_redirect" textvalue="Sentinel Java客户端限流原理解析｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Sentinel Java客户端限流原理解析｜得物技术</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=2247543235&amp;idx=1&amp;sn=25a92af422dc6cbf55e1be290dbb8cc3&amp;scene=21#wechat_redirect" textvalue="社区推荐重排技术：双阶段框架的实践与演进｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">社区推荐重排技术：双阶段框架的实践与演进｜得物技术</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=2247542990&amp;idx=1&amp;sn=95c80d04da0238e8e16312f48c1a1f5f&amp;scene=21#wechat_redirect" textvalue="Flink ClickHouse Sink：生产级高可用写入方案｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">Flink ClickHouse Sink：生产级高可用写入方案｜得物技术</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=2247542863&amp;idx=1&amp;sn=9b77527c41bd1d769af424ef20b5a658&amp;scene=21#wechat_redirect" textvalue="服务拆分之旅：测试过程全揭秘｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">服务拆分之旅：测试过程全揭秘｜得物技术</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=2247542831&amp;idx=1&amp;sn=bdeb52cfadee2da4c47ce9e9fc3df7bc&amp;scene=21#wechat_redirect" textvalue="大模型网关：大模型时代的智能交通枢纽｜得物技术" data-itemshowtype="0" linktype="text" data-linktype="2">大模型网关：大模型时代的智能交通枢纽｜得物技术</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="100059660" src="https://wechat2rss.xlab.app/img-proxy/?k=e25b9f42&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FFMFU1P6sHHtticD7msVaHD6osTZXKWezLy4oVlUA7uuz1FGBenMeEdvLAFGSNh7V7A7pqHZYH7lb1gntUz6nBSiaCz0Ob6SaicuHzibib6cd9Z6k%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=cbc176cf&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkxNTE3ODU0NA%3D%3D%26mid%3D2247543318%26idx%3D1%26sn%3Dddb8f1a7acae9ee4b4f25c392c527eb4">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 02 Mar 2026 18:31:00 +0800</pubDate>
    </item>
  </channel>
</rss>