[{"data":1,"prerenderedAt":1793},["ShallowReactive",2],{"post-ai-requirement-landing":3,"post-nav-posts":1434,"post-project-ai-requirement-landing":1458},{"id":4,"title":5,"body":6,"cover":1419,"date":1420,"description":1392,"extension":1421,"links":1419,"meta":1422,"navigation":1423,"path":1424,"project":95,"seo":1425,"slug":1426,"stem":1427,"summary":1428,"tags":1429,"visible":1423,"__hash__":1433},"posts\u002Fposts\u002Fai-requirement-landing.md","AI 时代，如何把一个需求真正落地成应用？——一条\"文档驱动 + 实测修订\"的实战路径",{"type":7,"value":8,"toc":1391},"minimark",[9,16,21,24,37,45,66,69,76,79,82,86,91,97,103,110,116,122,128,133,137,140,160,172,178,183,187,190,242,246,324,328,331,352,356,359,366,451,458,462,468,484,487,493,512,519,525,529,540,544,547,651,658,662,665,672,675,680,687,694,698,701,766,769,772,786,790,793,801,804,808,811,816,819,831,838,841,859,862,868,872,883,886,892,898,904,910,949,968,978,982,988,1076,1079,1088,1097,1103,1107,1110,1125,1128,1154,1160,1164,1171,1209,1215,1219,1222,1228,1233,1236,1343,1346,1369,1372,1375,1382],[10,11,12],"blockquote",{},[13,14,15],"p",{},"本文素材全部来自一个真实项目：ecom-detail-ai——上传 1 张商品图，约 10 分钟得到一整套带真实感光影渲染的淘宝详情页。项目 2026-09-12 起步，到本文写作时刚满一个月，M1-M4 里程碑已全部完成。文中所有数据、版本记录、决策原文均为生产仓库实录。",[17,18,20],"h2",{"id":19},"一ai-时代最大的悖论代码变便宜了想清楚变贵了","一、AI 时代最大的悖论：代码变便宜了，\"想清楚\"变贵了",[13,22,23],{},"2026 年做一个 AI 应用，技术门槛已经低到离谱：",[25,26,27,31,34],"ul",{},[28,29,30],"li",{},"模型？国产 API 全部兼容 OpenAI 协议，换个 base_url 就能切；",[28,32,33],{},"代码？AI 编码工具一小时能给你撸出一个完整脚手架；",[28,35,36],{},"Demo？一个周末能搭三个。",[13,38,39,40,44],{},"但打开任何一个 AI 产品社区，你会看到另一番景象：Demo 满天飞，能用的产品很少。大量项目死在同一个位置——",[41,42,43],"strong",{},"从\"需求\"到\"落地\"之间的那条沟","：",[25,46,47,50,53,56,59],{},[28,48,49],{},"需求没拍板就动手，做到一半发现方向错了；",[28,51,52],{},"模型选型拍脑袋，上线才发现成本结构根本不成立；",[28,54,55],{},"关键决策不留痕，三个月后没人说得清当时为什么这么设计，重构时反复翻烧饼；",[28,57,58],{},"实施靠感觉，没有\"问题在哪、改哪里、怎么验证\"的闭环；",[28,60,61,62,65],{},"最要命的：",[41,63,64],{},"文档写完就束之高阁，代码和文档各跑各的","。",[13,67,68],{},"这篇不讲具体某个技术点，讲一条我们用一个月时间、从一句产品构想到跑通全链路的方法论。概括成一句话：",[10,70,71],{},[13,72,73],{},[41,74,75],{},"文档驱动开发，实测修订文档。",[13,77,78],{},"需求、选型、决策、实施、验收，每一步都先落成文档；每一次实测得到的结论，回头修订文档。文档不是汇报材料，是开发的\"单一真相源\"和\"驾驶仪表\"。",[13,80,81],{},"下面按实战顺序拆开讲。为了照顾不了解案例背景的读者，第二节先把项目交代清楚，后面所有举例都基于它。",[17,83,85],{"id":84},"二先交代案例这个项目是什么","二、先交代案例：这个项目是什么",[87,88,90],"h3",{"id":89},"_21-一句话与核心链路","2.1 一句话与核心链路",[13,92,93,96],{},[41,94,95],{},"ecom-detail-ai","：一个 Wails v2（Go + Vue3）桌面应用，面向淘宝\u002F天猫中小卖家——上传 1 张商品图，约 10 分钟拿到一整套详情页（主图 + 长图切片 + 文案），全程不用选品类、不用选风格。替代的是\"外包 300-1500 元\u002F套、3-7 天交付\"的传统做法。",[13,98,99,100,44],{},"它的核心是一条",[41,101,102],{},"全自动 Agent 流水线",[13,104,105],{},[106,107],"img",{"alt":108,"src":109},"全自动 Agent 流水线：从上传商品图到淘宝规格导出的九个环节","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fai-requirement-landing\u002Fagent-pipeline.svg",[13,111,112],{},[113,114,115],"em",{},"图 1：全自动 Agent 流水线。左列自上而下是预处理与规划，右列自下而上是生成与交付；红色回环是自检不达标时的自动重渲染。",[13,117,118,119,65],{},"四个 LLM\u002F视觉服务商分工协作，用户自带密钥（BYOK），单套 API 成本约 1-3 元。实测单套（5 图）",[41,120,121],{},"8 分 27 秒",[13,123,124],{},[106,125],{"alt":126,"src":127},"生成过程实录：左侧 AI 识别结果与生成计划，右侧渲染出图墙","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fai-requirement-landing\u002Fsop-process.png?imageMogr2\u002Fthumbnail\u002F1132x\u002Fformat\u002Fwebp\u002Fquality\u002F88",[13,129,130],{},[113,131,132],{},"图 2：生成过程实录。左侧是 AI 识别结果与自主规划（本任务规划了 6 张图），右侧是渲染出图墙，顶部是流水线步骤进度，左下角是自检报告。",[87,134,136],{"id":135},"_22-成品长什么样","2.2 成品长什么样",[13,138,139],{},"一次真实任务（任务 #4，露肩碎花连衣裙）的导出产物：",[141,142,151,152],"a",{"className":143,"href":145,"target":146,"rel":147,"title":150},[144],"shot-zoom","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fai-requirement-landing\u002Fsop-long-image.png","_blank",[148,149],"noopener","noreferrer","点击查看完整长图","\n  ",[106,153],{"className":154,"src":156,"alt":157,"loading":158,"decoding":159},[155],"tall-shot","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fai-requirement-landing\u002Fsop-long-image.png?imageMogr2\u002Fformat\u002Fwebp\u002Fquality\u002F88","750px 详情长图：首屏、卖点、参数、场景、售后模块由 Agent 自主规划","lazy","async",[13,161,162,165,166,171],{},[113,163,164],{},"图 3：750px 详情长图。首屏、卖点、参数、场景、售后等模块由 Agent 自主规划，排版合成本机完成。","\n（原图 750×5586 过长，此处限高展示，",[141,167,170],{"href":145,"rel":168},[169],"nofollow","点开看完整长图 ↗","）",[13,173,174],{},[106,175],{"alt":176,"src":177},"800×800 白底主图：淘宝规格硬性要求","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fai-requirement-landing\u002Fmain-white.jpg",[13,179,180],{},[113,181,182],{},"图 4：同一任务的主图包产物之一——800×800 白底图。淘宝规格要求 5 张主图里至少有一张纯白背景，这张由阿里云商品分割直接输出，不经过生成模型重绘。",[87,184,186],{"id":185},"_23-四个关键事实","2.3 四个关键事实",[13,188,189],{},"先记住这四个事实，后面的例子都挂在它们上面：",[191,192,193,206],"table",{},[194,195,196],"thead",{},[197,198,199,203],"tr",{},[200,201,202],"th",{},"事实",[200,204,205],{},"内容",[207,208,209,218,226,234],"tbody",{},[197,210,211,215],{},[212,213,214],"td",{},"① 多模型协作",[212,216,217],{},"四家服务商四个岗位：智谱（读图+自检）、DeepSeek（规划+文案）、火山方舟（出图）、阿里云（抠图）",[197,219,220,223],{},[212,221,222],{},"② BYOK 模式",[212,224,225],{},"用户自带模型密钥，商品图只发到用户自己账户下的模型服务，产品方不经手不存储；每个任务的消耗金额明示给用户",[197,227,228,231],{},[212,229,230],{},"③ 成本敏感",[212,232,233],{},"单套 API 成本 1-3 元，其中图像生成占 95% 以上——成本结构直接决定商业模式",[197,235,236,239],{},[212,237,238],{},"④ 桌面客户端",[212,240,241],{},"Wails（Go + Vue3），排版合成本机完成，批量任务走本地队列调度",[87,243,245],{"id":244},"_24-术语卡后文不再解释","2.4 术语卡（后文不再解释）",[191,247,248,258],{},[194,249,250],{},[197,251,252,255],{},[200,253,254],{},"术语",[200,256,257],{},"一句话解释",[207,259,260,268,276,284,292,300,308,316],{},[197,261,262,265],{},[212,263,264],{},"详情页",[212,266,267],{},"淘宝商品页里那套决定转化的长图 + 图文组合",[197,269,270,273],{},[212,271,272],{},"主图 \u002F 白底图",[212,274,275],{},"商品列表页 800×800 方图，平台强制至少一张纯白背景",[197,277,278,281],{},[212,279,280],{},"切片",[212,282,283],{},"长图按平台高度限制切成多张上传",[197,285,286,289],{},[212,287,288],{},"BYOK",[212,290,291],{},"Bring Your Own Key，用户自带模型密钥，费用走自己账户",[197,293,294,297],{},[212,295,296],{},"模型位",[212,298,299],{},"流水线里某个环节对模型的\"岗位\"，一个岗位一个选型",[197,301,302,305],{},[212,303,304],{},"VLM",[212,306,307],{},"视觉语言模型，能\"看图\"的大模型",[197,309,310,313],{},[212,311,312],{},"盲测",[212,314,315],{},"同一商品图喂给多个候选模型，人工对比选优",[197,317,318,321],{},[212,319,320],{},"限流（RPM）",[212,322,323],{},"模型 API 的调用速率配额，超了返回 429",[87,325,327],{"id":326},"_25-为什么拿它当案例","2.5 为什么拿它当案例",[13,329,330],{},"三个原因：",[332,333,334,340,346],"ol",{},[28,335,336,339],{},[41,337,338],{},"链路完整","：从一句产品构想到 M1-M4 里程碑跑完，每个阶段都有文档产物，是\"需求落地方法论\"的完整观察样本；",[28,341,342,345],{},[41,343,344],{},"AI 原生成分高","：概率性依赖（模型输出不稳定）、多模型协作、成本敏感、需要自检闭环——传统软件的坑它一个不少，还多一层\"依赖是租来的\"；",[28,347,348,351],{},[41,349,350],{},"坑都落在文档里","：盲测反转、限流约束、联调数据全部有记录——这正是方法论最好的验证材料。",[17,353,355],{"id":354},"三第一步prd-是拍板记录不是需求散文","三、第一步：PRD 是\"拍板记录\"，不是\"需求散文\"",[13,357,358],{},"先看一个反面样本：大多数项目的 PRD 是一篇散文——背景、目标、功能列表，写完评审完就躺进硬盘，直到项目结束没人再打开。",[13,360,361,362,365],{},"我们的做法：",[41,363,364],{},"PRD 是一份带修订记录的活文档，每个版本解决一类问题","。看它的版本演变：",[191,367,368,381],{},[194,369,370],{},[197,371,372,375,378],{},[200,373,374],{},"版本",[200,376,377],{},"日期",[200,379,380],{},"这个版本在记什么",[207,382,383,394,404,414,427,441],{},[197,384,385,388,391],{},[212,386,387],{},"v0.9",[212,389,390],{},"09-12",[212,392,393],{},"需求探索：8 个模块全景 + 5 个待拍板问题（Q1-Q5）",[197,395,396,399,401],{},[212,397,398],{},"v1.0",[212,400,390],{},[212,402,403],{},"Q1-Q5 全部拍板，升级为正式 PRD；补业界对标、平台规格、FR 编号与优先级",[197,405,406,409,411],{},[212,407,408],{},"v1.1",[212,410,390],{},[212,412,413],{},"内部评审修订：修掉隐私口径矛盾、AI 标识合规、TaskStep 粒度等一串问题",[197,415,416,419,421],{},[212,417,418],{},"v1.3",[212,420,390],{},[212,422,423,426],{},[41,424,425],{},"真实 key 全流程联调通过","：联调数据、踩坑、结论回写（第八节细讲）",[197,428,429,432,435],{},[212,430,431],{},"v1.5",[212,433,434],{},"09-13",[212,436,437,440],{},[41,438,439],{},"盲测结果导致选型反转","：渲染主选更换（第四节细讲）",[197,442,443,446,448],{},[212,444,445],{},"v1.7",[212,447,434],{},[212,449,450],{},"平台水印可控性 + 标识分层的实测结论",[13,452,453,454,457],{},"注意 v1.3、v1.5、v1.7 的特殊性：它们都不是\"需求变更\"，而是",[41,455,456],{},"实测结论倒逼文档修订","。PRD 在这里不是立项时写一次的石碑，而是跟着项目一起生长的账本。",[87,459,461],{"id":460},"_31-三个可以直接抄走的写法","3.1 三个可以直接抄走的写法",[13,463,464,467],{},[41,465,466],{},"第一，用户故事用标准三段式，一个故事一个验收点。"," \"批量生成\"功能（一次导入 100 个 SKU 挂机跑完，补的是稿定 CSV 批量套版的能力缺口）的需求是这么写的：",[10,469,470],{},[13,471,472,475,476,479,480,483],{},[41,473,474],{},"As a"," 新注册低 RPM 配额的卖家，",[41,477,478],{},"I want"," 批量任务按全局并发上限（默认 1，可配 1-3）排队逐个执行，",[41,481,482],{},"so that"," 不会因为多任务并行撞 API 限流导致整批失败。",[13,485,486],{},"一句话里包含：角色、动作、可量化的参数（并发 1-3）、要防的风险（限流）。评审时哪个参数有问题，当场就能吵清楚。",[13,488,489,492],{},[41,490,491],{},"第二，\"明确不做\u002F边界\"比\"要做什么\"更重要。"," 同一份批量 PRD 里专门有一节：",[25,494,495,498,506,509],{},[28,496,497],{},"不动渲染管线内部：感知\u002F规划\u002F渲染\u002F文案\u002F排版各环节零改动，批处理只是调度层；",[28,499,500,501,505],{},"零新增依赖：CSV 解析用标准库 ",[502,503,504],"code",{},"encoding\u002Fcsv","，不引 Excel 转码库；",[28,507,508],{},"不做批量专属管理页：复用现有任务列表；",[28,510,511],{},"留 P2：夜间定时批跑、断点续跑、Excel 直接解析。",[13,513,514,515,518],{},"这一节是 MVP 的护栏。AI 编码时代\"顺手多做一个功能\"的边际成本极低，",[41,516,517],{},"不做清单是防止范围失控的唯一物理阻断","——和上一篇讲的架构护栏一个道理：约定必须变成某种形式的\"断言\"。",[13,520,521,524],{},[41,522,523],{},"第三，待确认问题单独成节，允许带着问题上会。"," Q1-Q6 每个问题给一个\"建议答案 + 理由\"，评审的工作从\"讨论\"降级为\"确认或否决建议\"。小团队这个写法能把评审会从两小时压到二十分钟。",[17,526,528],{"id":527},"四第二步选型先于编码且必须拆位-实测","四、第二步：选型先于编码，且必须\"拆位 + 实测\"",[13,530,531,532,535,536,539],{},"AI 应用和传统软件最大的不同：",[41,533,534],{},"你的核心能力是租来的","。租什么、怎么租、租金多少，直接决定产品成不成立。所以我们的顺序是：产品构想 → PRD 拍板 → ",[41,537,538],{},"选型验证"," → 才写第一行业务代码。",[87,541,543],{"id":542},"_41-拆模型位不要指望一个模型全包","4.1 拆模型位：不要指望一个模型全包",[13,545,546],{},"选型文档的第一件事，是把流水线拆成 6 个\"模型位\"（对应 2.1 节链路图的各个环节）：",[191,548,549,564],{},[194,550,551],{},[197,552,553,555,558,561],{},[200,554,296],{},[200,556,557],{},"任务",[200,559,560],{},"关键要求",[200,562,563],{},"类型",[207,565,566,580,594,607,621,634],{},[197,567,568,571,574,577],{},[212,569,570],{},"① 感知 VLM",[212,572,573],{},"读商品图 → 结构化 JSON",[212,575,576],{},"读图准、JSON 稳、便宜（高频）",[212,578,579],{},"多模态",[197,581,582,585,588,591],{},[212,583,584],{},"② Agent 大脑",[212,586,587],{},"推理规划：选管线、定张数、排模块",[212,589,590],{},"指令遵循、结构化输出",[212,592,593],{},"文本 LLM",[197,595,596,599,602,605],{},[212,597,598],{},"③ 文案",[212,600,601],{},"卖点文案、参数介绍",[212,603,604],{},"中文电商语感、性价比",[212,606,593],{},[197,608,609,612,615,618],{},[212,610,611],{},"④ 抠图",[212,613,614],{},"提取透明产品 PNG",[212,616,617],{},"边缘精细度",[212,619,620],{},"视觉模型",[197,622,623,626,629,632],{},[212,624,625],{},"⑤ 视觉重建",[212,627,628],{},"深度图、法线图",[212,630,631],{},"几何准确性",[212,633,620],{},[197,635,636,639,645,648],{},[212,637,638],{},"⑥ 图像生成",[212,640,641,642,171],{},"统一光影出图（",[41,643,644],{},"成本大头",[212,646,647],{},"光影真实感、商品一致性",[212,649,650],{},"生成模型",[13,652,653,654,657],{},"拆完位，结论自然浮出水面：",[41,655,656],{},"这 6 个位对模型的要求完全不同，必须多模型分层路由","——这是 2026 年 Agent 工程的第一共识。感知位要\"便宜大碗\"（单次读图不到 1 分钱），大脑位要\"指令遵循和 JSON 稳定性\"，出图位要\"商品一致性\"。用一个旗舰模型全包？钱包先死。",[87,659,661],{"id":660},"_42-一次真实的盲测反转价格不是选型的唯一标准","4.2 一次真实的\"盲测反转\"：价格不是选型的唯一标准",[13,663,664],{},"这是整个选型阶段最值钱的一课。",[13,666,667,668,671],{},"初版选型，出图位主推 GLM-Image：",[41,669,670],{},"0.1 元\u002F张，MIT 开源，指令遵循和文字渲染突出","，账面成本碾压 Seedream 4.5（0.25 元\u002F张）。文档里连降级顺位都排好了。",[13,673,674],{},"结果用真实商品（折叠手机支架）盲测，结论当场反转：",[10,676,677],{},[13,678,679],{},"Seedream 4.5 商品一致性接近完美——铰链、折叠臂、挂钩、底座全保留，甚至延续原图场景；GLM-Image 是\"同类不同款\"的重绘。",[13,681,682,683,686],{},"对电商详情页这个场景，",[41,684,685],{},"商品一致性是生死线","：支架的铰链结构变了，消费者收到货和详情页两回事，这是假图，是平台合规红线。0.15 元\u002F张的差价，在\"能不能用\"面前不值一提。选型文档随即修订：Seedream 4.5 升为主选，GLM-Image 降为低成本备选。",[13,688,689,690,693],{},"这个案例的方法论价值：",[41,691,692],{},"选型文档不是调研报告，是待验证的假设清单","。每个\"主推\"都要标注验证方式和验证成本。盲测三个候选，成本是几十块钱加半天——这点成本在\"上线后返工\"面前等于零。AI 时代试错变便宜了，\"先实测再拍板\"从奢侈品变成了基本操作。",[87,695,697],{"id":696},"_43-成本测算先算账再动手","4.3 成本测算：先算账，再动手",[13,699,700],{},"选型文档按最终组合重算了单套成本（10 张图口径）：",[191,702,703,713],{},[194,704,705],{},[197,706,707,710],{},[200,708,709],{},"环节",[200,711,712],{},"成本",[207,714,715,723,731,738,746,754],{},[197,716,717,720],{},[212,718,719],{},"感知（GLM-4.6V，~5K in \u002F 1K out）",[212,721,722],{},"~0.01 元",[197,724,725,728],{},[212,726,727],{},"大脑规划（DeepSeek Flash）",[212,729,730],{},"~0.05 元",[197,732,733,736],{},[212,734,735],{},"文案（同上）",[212,737,730],{},[197,739,740,743],{},[212,741,742],{},"出图 10 张（GLM-Image @0.1）",[212,744,745],{},"1.0 元",[197,747,748,751],{},[212,749,750],{},"自检（GLM-4.6V）",[212,752,753],{},"~0.02 元",[197,755,756,761],{},[212,757,758],{},[41,759,760],{},"合计（GLM-Image 低成本方案）",[212,762,763],{},[41,764,765],{},"≈ 1.1 元\u002F套",[13,767,768],{},"（盲测反转后若全程用 Seedream 4.5 主选出图，单套约 2.6 元；产品定价按 2-8 元\u002F套的 API 成本核算，空间立得住。）",[13,770,771],{},"两个关键认知：",[332,773,774,780],{},[28,775,776,779],{},[41,777,778],{},"LLM 环节合计不到 1 毛钱，可以随便用；成本几乎全在出图","（占 95% 以上）——所以优化成本要盯着出图位打，在感知\u002F文案上抠性价比是捡芝麻；",[28,781,782,785],{},[41,783,784],{},"成本结构决定商业模式","：单套 1-3 元的边际成本，让\"BYOK + 成本透明展示\"成立——我们敢把每个任务的消耗金额明示给用户看，就是因为算得过这笔账。",[87,787,789],{"id":788},"_44-一个坑位预警模型能力边界要写进落地清单","4.4 一个坑位预警：模型能力边界要写进落地清单",[13,791,792],{},"选型文档专门记了落地注意点，其中一条救了后面无数时间：",[10,794,795],{},[13,796,797,800],{},[41,798,799],{},"DeepSeek V4.1-Flash 是纯文本模型","——读图和自检全部走 GLM-4.6V，大脑只消费结构化 JSON 文本，编排层注意不要给 DeepSeek 传图。",[13,802,803],{},"这类\"能力边界 + 编排纪律\"，在选型阶段写下来，实现阶段就是 checklist；不写，就是某个深夜的一次玄学 bug。",[17,805,807],{"id":806},"五第三步决策留痕用-adr-把为什么钉住","五、第三步：决策留痕，用 ADR 把\"为什么\"钉住",[13,809,810],{},"代码回答\"怎么做\"，文档回答\"为什么\"。大多数项目只记前者，于是三个月后的重构会议上，大家对着一段\"看不懂但不敢删\"的代码面面相觑。",[13,812,361,813,65],{},[41,814,815],{},"关键决策一人一篇 ADR（架构决策记录），固定三段式：背景 → 决策 → 后果",[13,817,818],{},"以 ADR-0007 为例，它在解决一个真实的两难：",[25,820,821,828],{},[28,822,823,824,827],{},"上一轮刚把\"商品类目\"（如\"羽绒服\"\"零食\"）升级为可配置实体，但类目的备注里反复写着\"尺码表\u002F配料\u002F资质数据",[41,825,826],{},"必须来自用户输入","\"——羽绒服的面料成分、零食的保质期，AI 从商品图里根本看不出来，只能编；而编造参数在电商场景是假图红线。可系统里当时根本没有\"用户结构化输入\"的通道，参数全靠 AI 猜；",[28,829,830],{},"同时卡片视觉模板系统已跑起来，但没有任何东西替不同品类\"选一个合适的默认模板\"。",[13,832,833,834,837],{},"决策部分干净利落：纳入 A（结构化参数表单）\u002F C（类目默认模板）\u002F D（生成默认开关）三个方向，",[41,835,836],{},"B（合规红线结构化校验）明确不做","，留待后续。",[13,839,840],{},"而全文最值得学的是**\"后果\"一节——主动写下代价和要守住的东西**：",[25,842,843,850,853],{},[28,844,845,846,849],{},"人像硬约束引入\"敏感类目\"标志（如内衣\u002F泳装强制关闭人像场景），必须用显式 id 集合判定，",[41,847,848],{},"不得依赖关键词模糊匹配","（安全项要确定性）；",[28,851,852],{},"C 让全局默认从\"最终决定\"退为\"兜底\"，设置页文案必须说清，避免用户困惑\"我设的没生效\"；",[28,854,855,856,65],{},"优先级链统一遵循：",[41,857,858],{},"显式用户选择 > 类目默认 > 全局\u002FAI 兜底",[13,860,861],{},"一段决策，附带三条\"未来可能踩的坑\"和一条统一的优先级哲学。后来者（包括三个月后的你自己）读到这篇，五分钟后就能获得作者当时三天的上下文。",[13,863,864,867],{},[41,865,866],{},"ADR 的写作要领：决策部分可以很短，但\"后果 + 代价\"不能省。"," 只写\"我们决定用 X\"的 ADR 是半成品；写出\"选了 X，我们付出了 Y，未来要守住 Z\"才是完整品。",[17,869,871],{"id":870},"六第四步需求到任务的翻译层openspec-规格治理","六、第四步：需求到任务的\"翻译层\"——OpenSpec 规格治理",[13,873,874,875,878,879,882],{},"PRD 说的是\"产品要什么\"，ADR 说的是\"为什么这么设计\"，还差一层：",[41,876,877],{},"这个变更具体改哪些文件、动哪些能力、怎么验收","。这一层我们交给 OpenSpec 管，流程是 ",[502,880,881],{},"proposal → design → specs → tasks","，落地后归档留痕。",[13,884,885],{},"看一个真实提案的骨架——\"首次启动配置向导\"（BYOK 产品的第一道门槛：新用户打开应用后，四步引导配好模型密钥，否则连工作台都进不去）：",[13,887,888,891],{},[41,889,890],{},"Why","：首次使用门槛是最大流失点——用户要自己判断四把 key 哪两把必需、找到设置页、逐张展开指引，配完面对空工作台。",[13,893,894,897],{},[41,895,896],{},"What Changes","：五条变更，每条一句话，包括\"首次启动以本地不存在配置文件为唯一信号\"\"隐私承诺前移到任何真实调用与扣费之前\"。",[13,899,900,903],{},[41,901,902],{},"Capabilities","：新建 \u002F 修改哪些能力规格。",[13,905,906,909],{},[41,907,908],{},"Impact","：落到文件级——",[25,911,912,926,936,942],{},[28,913,914,917,918,921,922,925],{},[502,915,916],{},"internal\u002Fconfig\u002Fconfig.go","：新增 ",[502,919,920],{},"OnboardingDone"," \u002F ",[502,923,924],{},"OnboardingSkipped"," 持久化字段；",[28,927,928,931,932,935],{},[502,929,930],{},"app.go"," + ",[502,933,934],{},"frontend\u002Fwailsjs\u002F","：新增绑定方法，需重新生成；",[28,937,938,941],{},[502,939,940],{},"frontend\u002Fsrc\u002Fcomponents\u002FOnboardingWizard.vue","（新）：四步覆层；",[28,943,944,945,948],{},"零新依赖（",[502,946,947],{},"deps.yaml"," 不动）；样式一律走既有设计 tokens。",[13,950,951,952,955,956,959,960,963,964,967],{},"为什么 Impact 要写到文件名？这是 ",[41,953,954],{},"AI 时代的新变化","：文档的第一读者已经从人变成了 AI 编码 agent。agent 没有你大脑里的项目上下文，\"改 ",[502,957,958],{},"onboarding.go","、在 ",[502,961,962],{},"App.vue"," 加引导闸门、复用 ",[502,965,966],{},"ProviderGuidePanel.vue","\"这种粒度，恰好是 agent 能直接执行、人也能 review 的甜点。写得粗（\"做个向导\"），agent 自由发挥，产出随机；写得细（到文件和复用组件），产出稳定。",[13,969,970,971,974,975,65],{},"顺带说 Capabilities 的规格库：项目把能力按域维护在 ",[502,972,973],{},"openspec\u002Fspecs\u002F"," 下（onboarding-wizard、architecture-guardrails、dependency-registry 等二十多个），新变更提案必须声明新建\u002F修改哪些能力——这和上一篇的护栏是同一套哲学：",[41,976,977],{},"约定要变成可校验的结构，而不是散落的散文",[17,979,981],{"id":980},"七第五步实施用问题定位表驱动而不是感觉驱动","七、第五步：实施用\"问题定位表\"驱动，而不是感觉驱动",[13,983,984,985,44],{},"到了写代码阶段，最常见的失败模式是\"重构一时爽，改完到处火\"。我们的做法来自一份真实优化方案：初版流水线跑通后，产出的详情页\"效果一般\"，这份方案的任务就是定位\"一般在哪\"——它的核心是一张",[41,986,987],{},"问题定位表",[191,989,990,1006],{},[194,991,992],{},[197,993,994,997,1000,1003],{},[200,995,996],{},"#",[200,998,999],{},"病灶",[200,1001,1002],{},"代码位置",[200,1004,1005],{},"后果",[207,1007,1008,1024,1040,1060],{},[197,1009,1010,1013,1016,1021],{},[212,1011,1012],{},"1",[212,1014,1015],{},"感知仅 7 字段，无细节特征、无可见参数",[212,1017,1018],{},[502,1019,1020],{},"internal\u002Fagent\u002Fagent.go:72-73",[212,1022,1023],{},"下游规划\u002F渲染\u002F文案全部泛化；参数表无数据源只能编造",[197,1025,1026,1029,1032,1037],{},[212,1027,1028],{},"2",[212,1030,1031],{},"规划是\"伪规划\"：模块固定 5 个写死、prompt ≤60 字",[212,1033,1034],{},[502,1035,1036],{},"agent.go:93-95",[212,1038,1039],{},"出图缺乏摄影语义；模块结构千篇一律",[197,1041,1042,1045,1048,1057],{},[212,1043,1044],{},"3",[212,1046,1047],{},"自检是\"盲检\"：只传生成图，不给原图与场景描述",[212,1049,1050,1053,1054],{},[502,1051,1052],{},"agent.go:161-167","、",[502,1055,1056],{},"pipeline.go:421-425",[212,1058,1059],{},"自检形同虚设；同参数重跑无意义",[197,1061,1062,1065,1068,1073],{},[212,1063,1064],{},"4",[212,1066,1067],{},"文案模型看不到图，输入只有 7 字段",[212,1069,1070],{},[502,1071,1072],{},"agent.go:140-149",[212,1074,1075],{},"套话文案，图文不对齐",[13,1077,1078],{},"三个设计要点：",[13,1080,1081,1084,1085,1087],{},[41,1082,1083],{},"第一，病灶必须锚定到代码行号。"," \"效果一般\"不是问题，\"",[502,1086,1036],{}," 模块写死\"才是问题。前者只能开会，后者可以直接改。这一条是 AI 编码时代的放大器：你把带行号的问题表丢给 AI，它改得比谁都准；只丢一句\"优化下效果\"，它只能瞎猜。",[13,1089,1090,1093,1094],{},[41,1091,1092],{},"第二，优先搬\"已验证的设计\"，别发明轮子。"," 方案里专门列了姊妹项目（同脚手架的闲鱼素材生成器）的借鉴清单：粘贴电商详情作为核心输入（≤4000 字）、按角色差异化文案 + 跨卡不重复铁律、图片完整显示不裁切（原话：\"卖货最忌讳图切没了\"）——每条都标注了\"已验证结论\"再落入本期方案。",[41,1095,1096],{},"别的项目踩过的坑，是你最便宜的选型依据。",[13,1098,1099,1102],{},[41,1100,1101],{},"第三，P0-P2 分级 + 设计原则前置。"," 方案开头五条设计原则：\"商品像素尽量不过生成器\"\"prompt 分层\"\"编造即违规：参数\u002F资质类信息只允许来自图中可见转写或用户输入，缺失就降级占位\"——原则是排序工具，P0\u002FP1 打架时按原则裁断。其中\"编造即违规\"直接对着电商假图红线：参数卡的数据源只有两个——图中转写，或用户输入，AI 猜的不算数。",[17,1104,1106],{"id":1105},"八第六步实测数据回写文档形成闭环","八、第六步：实测数据回写文档，形成闭环",[13,1108,1109],{},"这是整套方法论里最容易被跳过、但 ROI 最高的一步。看 PRD v1.3 的真实联调记录（节选）：",[10,1111,1112],{},[13,1113,1114,1117,1118,1121,1122,1124],{},[41,1115,1116],{},"M1\u002FM2 开发完成并真实 key 全流程联调通过","：三把密钥连通（GLM-4.6V 需关思考模式，640ms）；GLM-Image 图生图参数形状实测可用；新账户 glm-image 限流严格，",[41,1119,1120],{},"渲染并发降为 1 + 指数退避重试（10\u002F20\u002F40\u002F60s）","；单套（5 图）实测 ",[41,1123,121],{},"，符合 ≤10 分钟目标。",[13,1126,1127],{},"一段话，四类信息：",[332,1129,1130,1136,1142,1148],{},[28,1131,1132,1135],{},[41,1133,1134],{},"踩坑","：GLM-4.6V 要关思考模式——不记下来，下次配环境再踩一遍；",[28,1137,1138,1141],{},[41,1139,1140],{},"约束","：新账户限流（RPM）严格，出图并发一高就撞 429——所以渲染并发从设计值降为 1（一张一张来），退避序列定为 10\u002F20\u002F40\u002F60 秒。这个约束后来直接影响了批量调度的并发上限设计（默认 1、可配 1-3）；",[28,1143,1144,1147],{},[41,1145,1146],{},"验收","：8 分 27 秒 vs ≤10 分钟目标——价值主张\"约 10 分钟得到整套详情页\"从此是实测背书，不是营销话术；",[28,1149,1150,1153],{},[41,1151,1152],{},"修订","：渲染并发、重试策略、批量并发默认值，全部因为这段实测回写而改变。",[13,1155,1156,1159],{},[41,1157,1158],{},"文档的尊严是这么来的：它的每个数字都有人在现场为其负责。"," 反观大多数项目，PRD 里的\"支持高并发\"直到上线都没人验证过。",[17,1161,1163],{"id":1162},"九第七步质量兜底把稳定性当需求做","九、第七步：质量兜底——把\"稳定性\"当需求做",[13,1165,1166,1167,1170],{},"AI 应用和传统软件还有个区别：",[41,1168,1169],{},"你的依赖是概率性的","。同一个 prompt，这次返回合法 JSON，下次裹一层 markdown 围栏；这次商品一致，下次铰链漂移。所以\"质量控制\"不是测试阶段的事，是架构阶段的事。我们把四道闸做进了流水线：",[332,1172,1173,1187,1197,1203],{},[28,1174,1175,1178,1179,1182,1183,1186],{},[41,1176,1177],{},"结构化输出校验","：所有模型输出强制 JSON，解析前剥围栏；字段级容错（模型输出 ",[502,1180,1181],{},"key","\u002F",[502,1184,1185],{},"label"," 都能认）；失败自动重试——选型文档原话：\"这是 Agent 稳定性的第一道闸\"。",[28,1188,1189,1192,1193,1196],{},[41,1190,1191],{},"自检门限","：自检环节双图对比（原图 vs 生成图），商品保持度 fidelity \u003C 0.95 直接 fail（对齐 OpenAI Image Evals 门限），不通过自动重渲染，",[41,1194,1195],{},"且诊断 tags 回灌下一次重试","——\"同参数重跑无意义\"是业内用教训换来的结论。",[28,1198,1199,1202],{},[41,1200,1201],{},"编造拦截","：前面说的\"参数只来自图中转写或用户输入\"，落到代码就是 KV 权威合并规则：用户填的 > AI 猜的，AI 只补空。",[28,1204,1205,1208],{},[41,1206,1207],{},"架构护栏","：约定即测试——app.go 不许 import gorm、新模型必须登记 AllModels、新增依赖必须登记 deps.yaml。上一篇专门讲过，不展开。",[13,1210,1211,1212],{},"四道闸的共同哲学：",[41,1213,1214],{},"概率性依赖，要用确定性工程兜底。",[17,1216,1218],{"id":1217},"十总结一条可复制的落地路径","十、总结：一条可复制的落地路径",[13,1220,1221],{},"整个路径画出来是这样：",[13,1223,1224],{},[106,1225],{"alt":1226,"src":1227},"需求落地七步路径：①-④ 规划期，⑤-⑦ 执行期，实测结论回写形成闭环","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fai-requirement-landing\u002Fseven-steps-path.svg",[13,1229,1230],{},[113,1231,1232],{},"图 5：七步路径。①-④ 是规划期，想清楚再动手；⑤-⑦ 是执行期，用确定性工程兜住概率性依赖；红色回环是这套方法的心脏——实测结论回头修订文档。",[13,1234,1235],{},"把整个实战过程压缩成一张表：",[191,1237,1238,1251],{},[194,1239,1240],{},[197,1241,1242,1245,1248],{},[200,1243,1244],{},"阶段",[200,1246,1247],{},"产出物",[200,1249,1250],{},"核心动作",[207,1252,1253,1267,1282,1296,1310,1321,1332],{},[197,1254,1255,1258,1261],{},[212,1256,1257],{},"① 需求",[212,1259,1260],{},"活 PRD（带修订记录）",[212,1262,1263,1264],{},"拍板问题清单；用户故事三段式；",[41,1265,1266],{},"明确不做清单",[197,1268,1269,1272,1275],{},[212,1270,1271],{},"② 选型",[212,1273,1274],{},"选型对比 + 假设清单",[212,1276,1277,1278,1281],{},"拆模型位；多模型分层路由；",[41,1279,1280],{},"盲测验证后再定主推","；成本测算",[197,1283,1284,1287,1290],{},[212,1285,1286],{},"③ 决策",[212,1288,1289],{},"ADR",[212,1291,1292,1293],{},"背景\u002F决策\u002F后果三段式；",[41,1294,1295],{},"后果里写代价和要守住的线",[197,1297,1298,1301,1304],{},[212,1299,1300],{},"④ 翻译",[212,1302,1303],{},"变更提案（Impact 到文件级）",[212,1305,1306,1307],{},"能力规格声明；零新增依赖声明；",[41,1308,1309],{},"写给 AI agent 也能执行的粒度",[197,1311,1312,1315,1318],{},[212,1313,1314],{},"⑤ 实施",[212,1316,1317],{},"问题定位表 + 分级方案",[212,1319,1320],{},"病灶锚定代码行号；搬已验证设计；P0-P2 + 设计原则",[197,1322,1323,1326,1329],{},[212,1324,1325],{},"⑥ 验收",[212,1327,1328],{},"实测数据回写",[212,1330,1331],{},"联调记录进 PRD 版本；踩坑\u002F约束\u002F验收三类信息",[197,1333,1334,1337,1340],{},[212,1335,1336],{},"⑦ 兜底",[212,1338,1339],{},"四道闸",[212,1341,1342],{},"结构化校验；自检门限 + tags 回灌；编造拦截；架构护栏",[13,1344,1345],{},"最后说三条 AI 时代特有的体会，也是这篇最想传递的东西：",[332,1347,1348,1357,1363],{},[28,1349,1350,1353,1354],{},[41,1351,1352],{},"文档的读者变了。"," 以前文档写给人看，现在第一读者是 AI 编码 agent——Impact 要写到文件名，约定要变成护栏断言，问题要锚定到代码行号。",[41,1355,1356],{},"文档质量的下限，就是 AI 产出的上限。",[28,1358,1359,1362],{},[41,1360,1361],{},"试错变便宜了，\"先验证再拍板\"从美德变成了本分。"," 盲测三个模型几十块钱，联调一次半天。因为便宜，所以必须做——省下的小钱，都会在上线后变成大坑。",[28,1364,1365,1368],{},[41,1366,1367],{},"代码是最便宜的部分，\"想清楚\"最贵。"," 这个项目真正的资产不是那几万行 Go 和 Vue，是那份被实测反复修订过、每个数字都有人负责的文档体系。它保证了：三个月后的任何人（和任何 AI）接手这个项目，都能在半小时内获得作者当时三天的上下文。",[13,1370,1371],{},"需求落地没有银弹，但这条\"文档驱动 + 实测修订\"的路径，是我们用一个月真实项目从构想到跑通验证过的实战。坑都替你们踩完了。",[1373,1374],"hr",{},[13,1376,1377,1378,1381],{},"如果这篇对你有启发，点赞收藏关注三连。下一篇进硬货：",[41,1379,1380],{},"多模型 Agent 流水线实战","——四家服务商、六个模型位，\"读图 → 规划 → 出图 → 文案 → 排版 → 自检\"怎么用 Go 串成全自动闭环，单套 8 分半背后的调度、降级与重试设计。",[13,1383,1384],{},[113,1385,1386,1387,1390],{},"作者按：文中所有版本记录、盲测结论、联调数据均取自生产仓库 ",[502,1388,1389],{},"docs\u002F"," 目录实录，未做演绎。",{"title":1392,"searchDepth":1393,"depth":1393,"links":1394},"",2,[1395,1396,1404,1407,1413,1414,1415,1416,1417,1418],{"id":19,"depth":1393,"text":20},{"id":84,"depth":1393,"text":85,"children":1397},[1398,1400,1401,1402,1403],{"id":89,"depth":1399,"text":90},3,{"id":135,"depth":1399,"text":136},{"id":185,"depth":1399,"text":186},{"id":244,"depth":1399,"text":245},{"id":326,"depth":1399,"text":327},{"id":354,"depth":1393,"text":355,"children":1405},[1406],{"id":460,"depth":1399,"text":461},{"id":527,"depth":1393,"text":528,"children":1408},[1409,1410,1411,1412],{"id":542,"depth":1399,"text":543},{"id":660,"depth":1399,"text":661},{"id":696,"depth":1399,"text":697},{"id":788,"depth":1399,"text":789},{"id":806,"depth":1393,"text":807},{"id":870,"depth":1393,"text":871},{"id":980,"depth":1393,"text":981},{"id":1105,"depth":1393,"text":1106},{"id":1162,"depth":1393,"text":1163},{"id":1217,"depth":1393,"text":1218},null,"2026-10-13","md",{},true,"\u002Fposts\u002Fai-requirement-landing",{"title":5,"description":1392},"ai-requirement-landing","posts\u002Fai-requirement-landing","代码变便宜了，「想清楚」反而变贵了。一条来自真实项目、跑满一个月的落地路径：PRD → 选型 → ADR → 规格 → 实施 → 实测回写 → 质量兜底，每一步先落成文档，再用实测回头修订文档。",[1430,1431,1432],"工程实践","AI 应用","方法论","R6cZGZLVFGW9BSIXYKbbLvSyoietb3gMoYq6yp8xMyc",[1435,1439,1443,1447,1451,1454,1457],{"title":1436,"slug":1437,"date":1438},"不引 Ghostscript：我用纯 Go 给 PDF 做了一场「压缩手术」","pure-go-pdf-compression","2026-10-24",{"title":1440,"slug":1441,"date":1442},"Wails v3 升级实战：桌面提醒客户端从 v2 升到 v3，踩了 10 个不报错的坑","wails-v3-upgrade","2026-10-23",{"title":1444,"slug":1445,"date":1446},"用 RAG + FAISS 构建古诗词 AI 取名系统：从向量检索到六层质量过滤","chinese-poetry-rag","2026-10-15",{"title":1448,"slug":1449,"date":1450},"一个人做 AI 产品，我踩过的 9 个真实的坑","ecom-detail-ai-part3-pitfalls","2026-10-14",{"title":1452,"slug":1453,"date":1450},"Wails v2 实战：用 Go + Vue3 做一个真正能用的 AI 桌面应用","ecom-detail-ai-part2-wails",{"title":1455,"slug":1456,"date":1450},"我用 Go 搭了一条 AI Agent 流水线：从 1 张商品图到一整套淘宝详情页","ecom-detail-ai-part1-architecture",{"title":5,"slug":1426,"date":1420},{"id":1459,"title":1460,"architecture":1461,"body":1462,"category":1702,"client":1703,"cover":1704,"date":1705,"demo":1419,"demoMobile":1419,"description":1392,"extension":1421,"featured":1423,"features":1706,"github":1419,"manual":1723,"meta":1776,"modules":1419,"navigation":1423,"order":1777,"path":1778,"seo":1779,"slug":95,"stem":1780,"summary":1781,"techStack":1782,"visible":1423,"year":1791,"__hash__":1792},"projects\u002Fprojects\u002Fecom-detail-ai.md","电商详情页 AI 生成客户端","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fecom-detail-ai\u002Fecom-detail-architecture.svg",{"type":7,"value":1463,"toc":1694},[1464,1467,1470,1473,1476,1479,1482,1485,1541,1544,1614,1625,1634,1642,1645,1684,1687],[17,1465,1466],{"id":1466},"缘起",[13,1468,1469],{},"帮人上过一款连衣裙的详情页。找外包要等好几天，自己上手就得同时会 PS、会布光、还会写文案，我三样都不精。第一版做出来光影像贴上去的，商品边缘还走了形。",[13,1471,1472],{},"当时想要的东西其实很朴素：扔一张挂拍图进去，别问我品类、别问我风格，直接出一套能用的。",[17,1474,1475],{"id":1475},"背景",[13,1477,1478],{},"现成的 AI 工具大多停在模板拼贴：光影有贴图感、商品容易变形，号称一键生成，实际仍要用户逐项选品类、选风格、选模板，等于把设计判断又还给了不会设计的人。而详情页本身是一整套东西——主图、场景图、白底图、详情长图、切片、文案，每一样尺寸和规则都不一样，分开做就要分开对齐。要压缩的是这一整段决策：上传一张商品图，不选品类、不选风格，直接得到一整套带真实感光影渲染的详情页。",[17,1480,1481],{"id":1481},"方案",[13,1483,1484],{},"一个装在电脑上、双击就能用的客户端，核心是一条会自己拿主意的生成流水线：",[25,1486,1487,1493,1499,1505,1511,1517,1523,1529,1535],{},[28,1488,1489,1492],{},[41,1490,1491],{},"十步全自动，中途不用管","：抠图 → 读图理解 → 自主规划（出几张图、每张什么场景与光影、页面分几块）→ 逐张渲染 → 画面描述 → 文案 → 本机排版合成 → 标准卡片 → 自检 → 完成。每一步的状态和中间产物都会落盘，界面上按时间线看得见进度，任务可以取消、关掉再开还能接着跑",[28,1494,1495,1498],{},[41,1496,1497],{},"真实感出图","：基于原图做编辑式生成，而不是把商品抠出来贴进模板；多张参考图输入保住商品一致性。出图引擎可在 Seedream \u002F GLM-Image 之间切换，主选是拿真实商品盲测定的",[28,1500,1501,1504],{},[41,1502,1503],{},"关键文字交给本机，不交给模型","：卖点、参数这类文字由本机排版引擎叠加（内置可免费商用的中文字体，不消耗模型额度，可编辑、可导出），生成模型不承担关键文字的渲染",[28,1506,1507,1510],{},[41,1508,1509],{},"自检闭环","：出完自动拿成品跟原图比——查商品有没有走形、光影是否违和、图内有没有错字；没过就带着诊断重做，还是没过就标成「待人工确认」并在结果页置顶提示",[28,1512,1513,1516],{},[41,1514,1515],{},"标准卡片产线","：主图卡 + 参数卡 × 3 规格。取色优先级为 单张卡手动改色 > 任务级模板 > 类目默认模板 > 全局默认 > 按商品图派生的配色——模板只管结构，颜色默认跟着商品走",[28,1518,1519,1522],{},[41,1520,1521],{},"商品类目可以自己管","：内置 11 组，能增、能删、能改，改完直接保存下来。类目还额外带着这个类目的参数项提示、默认卡片样式，以及敏感类目下强制关闭人像场景的硬规则（无条件压过全局的人像开关）",[28,1524,1525,1528],{},[41,1526,1527],{},"批量生成","：表格文件或整个文件夹一次导入、整批排队，共用同一套队列按设定的并发数（1-3）跑；单条失败不影响其它，同一批连续 3 条失败会自动停下并提示排查",[28,1530,1531,1534],{},[41,1532,1533],{},"密钥自带，成本透明","：智谱 \u002F DeepSeek \u002F 火山方舟 \u002F 阿里云四家各一把密钥，都是必需的；费用直接结算在用户自己的模型账号上，每个任务开跑前明示预估金额",[28,1536,1537,1540],{},[41,1538,1539],{},"导出即合规","：主图 800×800（含白底图）+ 详情 750px 切片（单张目标不超过 500KB）+ 文案 + 压缩包，导出前先预检尺寸和体积；生成来源的标记在切片、压缩全过程都不会被剥离，另在图上用角标显式标出",[17,1542,1543],{"id":1543},"技术架构",[191,1545,1546,1556],{},[194,1547,1548],{},[197,1549,1550,1553],{},[200,1551,1552],{},"模块",[200,1554,1555],{},"技术选型",[207,1557,1558,1566,1574,1582,1590,1598,1606],{},[197,1559,1560,1563],{},[212,1561,1562],{},"后端",[212,1564,1565],{},"Go + GORM + SQLite（纯 Go 驱动，交叉编译无 CGO）",[197,1567,1568,1571],{},[212,1569,1570],{},"桌面运行时",[212,1572,1573],{},"Wails v2（WebView2 \u002F WKWebView），无边框窗口 + 托盘 + 崩溃落盘",[197,1575,1576,1579],{},[212,1577,1578],{},"前端",[212,1580,1581],{},"Vue3 + Vite + Element Plus + Pinia，暗色优先设计令牌",[197,1583,1584,1587],{},[212,1585,1586],{},"模型网关",[212,1588,1589],{},"OpenAI 兼容协议统一接入（chat + 图像生成），模型位\u002F降级顺位\u002F价格表全部配置化",[197,1591,1592,1595],{},[212,1593,1594],{},"抠图",[212,1596,1597],{},"阿里云商品分割 API（≈0.002 元\u002F次，直出白底图）",[197,1599,1600,1603],{},[212,1601,1602],{},"排版",[212,1604,1605],{},"Go 侧 750px 位图合成 + CJK 字体渲染",[197,1607,1608,1611],{},[212,1609,1610],{},"工程化",[212,1612,1613],{},"架构护栏（AST 断言）+ 依赖登记制 + golden 像素基线测试 + OpenSpec 治理",[13,1615,1616,1617,1620,1621,1624],{},"数据侧 6 张表（Product \u002F GenerationTask \u002F GenerationBatch \u002F TaskStep \u002F GeneratedAsset \u002F ExportRecord），其中 ",[502,1618,1619],{},"TaskStep"," 按",[41,1622,1623],{},"图片实例","多行存储，各自携带状态与产物引用——图级断点续跑和\"已完成部分不重复计费\"都依赖这个粒度。",[13,1626,1627,1628,1630,1631,1633],{},"工程约定编译成了会红的检查：分层越界（",[502,1629,930],{}," 不直接 import gorm）、模型注册双向校验、新增依赖必须登记 ",[502,1632,947],{},"、渲染层禁 import node 能力、禁硬编码色值，且护栏解析到 0 个结果会 Fatal 而非静默放行。冒烟测试定位为本地验证——三平台 CI 只做静态检查与编译，不启动图形界面。",[13,1635,1636,1637,1641],{},"本项目由 ",[141,1638,1640],{"href":1639},"\u002Fprojects\u002Fwails-bailer-starter","Wails 桌面端脚手架基座"," 实例化而来——运行时能力与管道契约直接复用，业务面全部在此长出。",[17,1643,1644],{"id":1644},"成果",[25,1646,1647,1656,1666,1672,1678],{},[28,1648,1649,1652,1653,1655],{},[41,1650,1651],{},"从 3-7 天到 8 分半","：单套（5 图）真实密钥全流程实测 ",[41,1654,121],{},"，落在「≤10 分钟出整套详情页」的目标内",[28,1657,1658,1661,1662,1665],{},[41,1659,1660],{},"它要替换掉的那件事","：外包一套 300-1500 元、3-7 天交付；这里单套模型消耗理想值约 ",[41,1663,1664],{},"1 元","，算上 1-3 次单张重做的真实预期 1-2 元——费用结算在用户自己的模型账号上，中间不过手",[28,1667,1668,1671],{},[41,1669,1670],{},"出图主选是盲测翻盘定的","：Seedream 4.5 把商品结构复刻到近乎完美，GLM-Image 重绘成\"同类不同款\"——据此调换了出图位顺位",[28,1673,1674,1677],{},[41,1675,1676],{},"自检不是摆设","：成品自检比对原图查商品走形、光影违和与图内错字，未通过带诊断重做；仍不通过就置顶标记「待人工确认」，而不是悄悄交付",[28,1679,1680,1683],{},[41,1681,1682],{},"拿到手就是装完能用的安装包","：Mac 出带拖拽引导的安装包、Windows 出安装器，目标机器不需要 Go \u002F Node.js 运行时",[17,1685,1686],{"id":1686},"体验",[13,1688,1689,1690,1693],{},"内测阶段的桌面客户端，目前主要是我自己在用——",[41,1691,1692],{},"暂无公开下载与在线演示，源码也未公开","。想先看它是怎么搭起来的，可以读本页下方列出的相关技术文章——架构、工程化与踩坑各有落笔。",{"title":1392,"searchDepth":1393,"depth":1393,"links":1695},[1696,1697,1698,1699,1700,1701],{"id":1466,"depth":1393,"text":1466},{"id":1475,"depth":1393,"text":1475},{"id":1481,"depth":1393,"text":1481},{"id":1543,"depth":1393,"text":1543},{"id":1644,"depth":1393,"text":1644},{"id":1686,"depth":1393,"text":1686},"ai","个人项目","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fecom-detail-ai\u002Fecom-detail-hero.webp","2026-09-29",[1707,1711,1715,1719],{"title":1708,"description":1709,"image":1710},"1 张挂拍图 → 一整套场景渲染","左侧用户上传的挂拍原图，右侧由程序自己规划并渲染的逆光石墙与窗边场景，商品结构保持一致","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fecom-detail-ai\u002Fecom-detail-input2out.webp",{"title":1712,"description":1713,"image":1714},"详情长图 · 750px 本机排版合成","关键文字在出图后由本机排版叠加，生成模型不承担文字渲染；按平台高度限制自动切片","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fecom-detail-ai\u002Fecom-detail-longpage.webp",{"title":1716,"description":1717,"image":1718},"主图导出 · 场景图与白底图","阿里云商品分割直出白底图，800×800 主图 + AI 标识角标 + ZIP 打包","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fecom-detail-ai\u002Fecom-detail-mainimgs.webp",{"title":1720,"description":1721,"image":1722},"首次启动向导 · 四把密钥各司其职","感知自检 \u002F 规划文案 \u002F 图像生成 \u002F 抠图四家服务商均为必需，内置注册指引与一键跳转控制台","https:\u002F\u002Fname.os.bennywen.xyz\u002Fbennywen.xyz\u002Fassets\u002Fecom-detail-ai\u002Fecom-detail-wizard.webp",{"specs":1724,"modules":1743,"deploy":1767,"limits":1771},[1725,1728,1731,1734,1737,1740],{"label":1726,"value":1727},"交付形态","Windows \u002F macOS 桌面客户端，装完即用，目标机器不需要另装运行环境",{"label":1729,"value":1730},"单套产出","主图 + 白底图 + 详情长图切片 + 文案，一套实测约 8 分半",{"label":1732,"value":1733},"使用成本","一套约 1-2 元，结算在你自己名下的模型账号，开跑前先给预估金额",{"label":1735,"value":1736},"风格决策","不用选品类、不用选风格——程序读图后自己定，也可在看图后手动指定",{"label":1738,"value":1739},"批量能力","表格或文件夹一次导入一整批商品排队生成，单批上限 200 条",{"label":1741,"value":1742},"隐私","商品图只发往你自己账号下的模型服务；长图排版与打包在本机完成",[1744,1747,1750,1753,1756,1759,1762,1764],{"name":1745,"desc":1746},"读图","拿到商品图先看懂它是什么——品类、材质、结构，以及有哪些值得讲的点",{"name":1748,"desc":1749},"自主规划","自己决定这套详情页要出几张图、每张配什么场景与光影、页面分几块",{"name":1751,"desc":1752},"场景渲染","按规划逐张生成，商品结构保持一致，不是把商品抠出来贴进模板",{"name":1754,"desc":1755},"文字排版","卖点与参数文字在本机排版合成，不吃模型的额度，也可以自己改",{"name":1757,"desc":1758},"成品自检","出完自动跟原图比对，发现商品走形、光影违和或图内错字就带诊断重做",{"name":1760,"desc":1761},"导出打包","一次拿到主图、白底图、详情长图切片与文案，尺寸体积先自检再打包",{"name":1527,"desc":1763},"整批商品排队跑，单条失败不影响其它；连环失败自动停下提示排查",{"name":1765,"desc":1766},"成本预估","开跑前估算这一套要花多少钱，钱花在哪一步看得见",[1768,1769,1770],"内测阶段的桌面客户端：装包后双击即用，不需要装数据库，也不需要自己的服务器","首次启动有一个配置向导，带你领四家模型服务的密钥（读图、规划、出图、抠图各一把）","生成在云端跑，不吃本机算力；长图排版与打包在本机完成",[1772,1773,1774,1775],"Mac 上关掉窗口即退出，没有常驻托盘（Windows 上可以收进托盘后台继续生成）","编辑只到「模块」这一层——增删、排序、换图可以，没有元素级的拖拽排版","商品模特图暂时没有：真人像生成涉及合规，留到下一版评估","在设置页手动换过模型服务商之后，成本估算仍按原来的价格显示，需要重过一遍向导才会同步",{},16,"\u002Fprojects\u002Fecom-detail-ai",{"title":1460,"description":1392},"projects\u002Fecom-detail-ai","面向淘宝\u002F天猫中小卖家与美工——1 张商品图进，不选品类不选风格，8 分半出一整套详情页，单套模型消耗约 1-2 元",[1783,1784,1785,1786,1787,1788,1789,1790],"Go","GORM","SQLite","Wails","Vue3","Element Plus","Vite","Pinia","2026","gD63yNSExkuy6opU0htv0KjL2bv-jAcGuYWjwHk1L7w",1792857942464]