# Clover 通关路线图(think 全流程产出) > 产出日期:2026-06-09 > 方法:/think-router 复杂度评估 + 第一性原理倒推 + 坑点深挖(2个Explore agent审真实代码)+ 多视角校准 > 唯一标尺:`验收清单.md`——勾上某项才算完成(G2);端到端一条龙跑通是闸门(G1) > 状态图例:✅已勾(真验证) / 🔧进行中 / ⬜未开始 / 🔴致命坑 / 🟡阻塞坑 / 🟢风险 --- ## 一、复杂度判断(Cynefin) 这是一件 **两段性质不同** 的事,不能用一个方法论盖全程: | 段 | 性质 | 方法 | 对应验收 | |----|------|------|---------| | 第一段 生产链跑通 | **Complicated**(繁但确定) | 纵切片、逐接缝亲手验 | 第一道线 1A/1B/安全 | | 第二段 过北哥抽检 | **Complex**(真探索) | 做真东西→北哥看→喂飞轮→迭代逼近 | 第二道线 | 五维:因果确定性🟡分裂(链清晰/质量探索) · 利益方🟢单(北哥) · 信息🟡中(质量标准缺) · 先例🟢高(产品包) · 约束🔴高(12红线) ## 二、方向收敛(项目真实方向) 1. **我之前的根本错误**:把"两段"当"一段",用 Complicated 打法(修零件报完成)对待最终要 Complex 迭代的目标,所以越修越漂。 2. **不可逾越的闸门**:第二段(北哥抽检)无法启动,除非北哥能真的从登录走到下载、拿到真素材包。**"端到端一条龙跑通"=从 Complicated 跨进 Complex 的唯一闸门**。它之前,质量/多轨/飞轮/美化全是空中楼阁——这是 G1 的深层原因。 3. **飞轮(1B)不是收尾装饰,是第二段的发动机**:闸门撞开→北哥看真东西→飞轮喂料→逼近"过抽检、完整可用"。 ## 三、残酷真相(坑点深挖结论) "零件齐全"是假象。真串起来,从地基到下载 **连环死 9 处**(详见第四节)。这恰恰印证 G1:横向铺满零件,纵向接缝一次没对过。 --- ## 四、全部坑点(基于真实代码深挖,按死亡顺序) ### A. 地基坑(服务起不来,整条龙=0) | # | 坑 | 严重 | 位置 | |---|----|------|------| | D1 | backend/.env 不存在;根.env缺 JWT_SECRET/DATABASE_URL/MONGO_URI/REDIS_URL,FERNET_KEY是占位符 | 🔴 | config.py:15-19 | | D2 | docker-compose 路径错位:nginx.conf 引用路径不存在,nginx必崩;compose只能从Clover根跑 | 🔴 | docker-compose.yml:94 | | D3 | alembic迁移不自动跑,起来是空库,首请求即500;003/004 downgrade有PG语法(MySQL炸) | 🔴 | Dockerfile/main.py | | D4 | 无种子脚本:无账号(登录必败)、无预置素颜霜(无可选)、无违禁词 | 🔴 | scripts/ 空 | ### B. 生成棒接缝坑(worker真跑必死) | # | 坑 | 严重 | 位置 | |---|----|------|------| | G1坑 | text_variants 调 client.chat.completions.create,但AIClients无此方法→AttributeError,LLM文案永远出不来,只能退化本地草稿 | 🔴 | text_variants.py:20-33 | | G2坑 | Gemini fallback 无key(gemini_key=None)→主通道挂必炸,图全失败 | 🔴 | pipeline_steps.py:49 | | G3坑 | SSE error事件 workspace_id写死0→被前端过滤丢弃,失败时前端永久loading | 🔴 | tasks.py:138 | | G4坑 | 图存相对路径,但main.py没挂StaticFiles→前端全404 | 🔴 | pipeline_io.py:120 | | G5坑 | storyboard角色名(pain_scene等)与ImageRole枚举(pain等)对不上→7/8角色fallback成MAIN,信息全丢 | 🔴 | constants.py:39 vs enums.py:89 | | G6坑 | provider不匹配:预检查不验provider,worker硬查"openai",存"apiports"则白跑 | 🟡 | task_service.py:18 | | G7坑 | Celery retry重复写候选(最多4倍脏数据) | 🟡 | tasks.py:81 | | G8坑 | httpx.AsyncClient不close,每任务泄露连接 | 🟡 | gemini_factory.py:106 | ### C. 交付端坑 | # | 坑 | 严重 | 位置 | |---|----|------|------| | C1 | download-file带auth,但前端window.open无法附带token→401,下不了 | 🔴 | delivery.py:95 / components.tsx:36 | | C2 | 打包硬判 url.startswith("uploads/"),改绝对路径则zip图为空 | 🟡 | packaging_task.py:55 | | C3 | 前端缺postcss.config.js→样式全失效(已修✅) | 已修 | 已补 | | C4 | 去水印Pillow未装则静默退化(不炸但功能失效) | 🟢 | image_postprocessor.py:39 | **致命坑合计:D1-D4 + G1-G5坑 + C1 = 10个🔴**(撞闸门前必须全清) --- ## 五、策略(怎么打) **核心策略:纵切片撞闸门,一次只通一棒,撞死就地修,禁止往下铺。** - 打法不是"按坑点列表逐个修"(那是横向思维回潮),而是**沿一条龙从头走,走到哪棒死就修哪棒,修通立刻往下走**。坑点表是"预警地图",不是"施工顺序"。 - 每修通一棒 → 按 G2 报"勾上1A第X项,证据=可验证事实"。 - 同一接缝连续2次修不通 → 按§3撞墙规则 Pivot,报你介入。 - **最小一条龙的"最丑"标准**:1产品·1条文案·1张图·1次审核·1个包。多轨/8图/美化/飞轮全部押后。 ## 六、全方位行动方案(三层) ### 目标层(O) 北哥1名熟手,浏览器里独立走完[登录→选素颜霜→传图→生成→选稿→组长审→下载素材包],不靠开发,产出过北哥抽检。 ### 阶段层(里程碑 = 验收线) ``` M0 地基通 → 服务起来+有账号+有素颜霜 → 勾 1A-1 M1 一条龙通→ 最丑端到端跑通(撞开闸门) → 勾 1A-2/3/7/8/9/10/11/12/13 (9项) ━━━━━━━━━ 闸门:北哥能看真东西了 ━━━━━━━━━ M2 飞轮通 → 1B四点+第一道线补全(多轨/违禁词/N图) → 勾完1A剩余+1B四点+安全 M3 抽检通 → 北哥真看真喂料,质量迭代逼近 → 第二道线(Complex,迭代非规划) M4 上线 → 飞轮启动+独立AI审核 → 第三道线 ``` ### 执行层(M0+M1 = 撞闸门,当前唯一战场,逐棒) | 棒 | 动作 | 清掉的坑 | 勾上 | |----|------|---------|------| | 0a | 修docker-compose路径+补backend/.env全变量 | D1 D2 | — | | 0b | 写种子脚本(3账号+素颜霜+5违禁词)+迁移自动跑 | D3 D4 | — | | 0c | docker起全栈,熟手登录看到素颜霜 | — | **1A-1** | | 1 | 选素颜霜+传图+建任务,抓包验无明文key | — | **1A-2,1A-3** | | 2a | 修文案鸭子类型(G1坑)→真出1条文案 | G1坑 | 1A-5(部分) | | 2b | 修生图provider/fallback(G2,G6坑)→真出1张图 | G2 G6坑 | **1A-7** | | 2c | 修图片StaticFiles(G4坑)+角色枚举(G5坑) | G4 G5坑 | — | | 2d | 修SSE error事件(G3坑)→进度+失败可见 | G3坑 | **1A-8** | | 2e | 验去水印过流水线(C4) | C4 | **1A-11** | | 3 | 挑这条文案+这张图 | — | **1A-9** | | 4 | 组长登录看队列→通过 | — | **1A-10** | | 5a | 修下载401(C1坑)→fetch+blob下载 | C1坑 | — | | 5b | 打包→熟手下载→打开zip确认能用 | C2 | **1A-12,1A-13** | **撞闸门验收**:M1走完,1A 13项勾上9项(1A-1/2/3/7/8/9/10/11/12/13),北哥能看真东西→闸门开。 剩4项(1A-4标杆8特征/1A-5文案双轨/1A-6违禁词三级/部分)归M2加深。 --- ## 七、多视角校准(自检盲点) **视角1·北哥实用主义**:"我要的是能用,不是你内部跑通。" - ⚠️盲点:M1用我(开发)跑通≠北哥熟手能跑通。M1验收必须**北哥本人或我模拟纯小白点**,不能我用脚本验通就算。→ 修正:M1验收标准加一条"非开发视角点完全程"。 - ⚠️真出图烧北哥key额度。→ M2前每次真跑都提前报你,你授权再跑。 **视角2·QA挑刺**:"你怎么保证这次不又是假跑通?" - ⚠️盲点:坑点是静态读码挖的,真跑可能冒新坑(尤其异步/Celery/Redis时序)。→ 修正:M1每棒"真点真看真下载",不接受单元测试代替;冒新坑就地加入坑表。 - ⚠️10个🔴是"已知致命",可能有"未知致命"。→ 接受,纵切片的意义就是用真跑把未知逼出来。 **视角3·倩倩姐战略**:"方向对不对,节奏谁定?" - ✅两段论+闸门+飞轮发动机=方向收敛清晰。 - ⚠️节奏判断权在你:M0→M1是否一口气推?还是M0先给你验一次再推M1?→ 待你拍。 - ⚠️Lead这次还用不用?它之前空转。→ 建议M0/M1我亲自逐棒干(链路串通需要全局视野,不适合派),M2加深再用团队并行。待你拍。 ## 八、待你拍板(3个判断点) 1. **方向收敛**(两段论/闸门/飞轮发动机)校准了吗? 2. **节奏**:M0通了先停给你验,还是M0+M1一口气撞到闸门? 3. **谁干**:M0/M1我亲自逐棒(推荐),还是仍走Lead团队? 闸门撞开前,这份图就是唯一作战地图。每勾一项我按G2报证据。 --- ## 九、【归一·补漏】质量内核坑(之前漏挖,北哥方法论只落地25-30%) > 教训:我把"已回填的质量标准"误判成"以后迭代的质量探索",整段漏挖。北哥最值钱的方法论(北哥回填解读与落点.md §3/§4)现在就该在代码里。 > 铁律A守住了✅:无硬编码"倍分子"/89元/玻尿酸,方法层数据层隔离干净。 | # | 北哥要的(方法层,全品类共用) | 现状 | 性质 | |---|------------------------------|------|------| | Q1 | 随机变量池ABC:身份场景×起因情绪×小缺点 各随机抽1,N条不撞,池可扩展 | **0行** | 🔴反同质化命脉 | | Q2 | 5步框架:Hook暴击低价→痛点共鸣→救星登场→卖点罗列(✅小标题)→逼单 | 旧7步SOP,逻辑全错 | 🔴 | | Q3 | 正文四段(痛点→实测→种草→引导)+350-400字+3-5段空行 | 180-260字,无四段 | 🔴 | | Q4 | 佛系反推销人设("东西放这了买不买跟我没关系")+70%场景30%产品 | **0行** | 🔴 | | Q5 | 违禁词:negative类(神器/福音/救急单品/遮羞布/日常维稳/精简底妆/不仅而且/焕发/守护/尽享)**prompt负向约束不准写进正文**,非auto_fix事后替换;遮羞布漏收 | 走auto_fix替换+漏遮羞布 | 🟡机制错 | | Q6 | 6图顺序:封面痛点大字→单品特写+品牌词→成分→质地→上脸对比→促单;品牌词2/6张·转化句6·对比5 | 顺序3/6不匹配 | 🟡 | | Q7 | 反AI味+防人群重叠+防场景重复(北哥最大痛点) | 仅相似度去重,无源头prompt约束 | 🟡 | | Q8 | 标题公式(肤质/价格/功效/夸张/标题党各5词例) | 笼统一句 | 🟢 | ## 十、撞闸门新定义(工程+质量合一) **闸门 = 跑通 AND 产出合格。** 只通工程→跑通但AI味垃圾,北哥毙;只改质量→跑不起来,等于没改。M1每棒"修工程接缝 + 落北哥方法论"一次到位: | 棒 | 工程(清坑) | 质量(落方法论) | 勾验收 | |----|-----------|---------------|--------| | 2a 出文案 | 修鸭子类型G1坑 | 落Q1变量池+Q2 5步+Q3四段350字+Q4佛系人设+Q7反AI味+Q8标题 | 1A-5 | | 2b 出图 | 修provider/fallback G2/G6坑 | 落Q6 6图顺序对齐 | 1A-7 | | 2c 图可见 | 修StaticFiles G4+角色枚举G5坑 | Q6角色名统一 | — | | 2d 进度 | 修SSE G3坑 | — | 1A-8 | | 2e 去水印 | 验C4 | — | 1A-11 | | (违禁词) | — | 落Q5 negative改prompt负向约束+补遮羞布 | 1A-6部分 | **M1验收(双标准)**:①北哥/纯小白视角点完全程能下载 ②产出3条文案"像素人不同质化",北哥认可。机器测试过不算过。 ## 十一、节奏(按推荐) M0通了先停给倩倩姐验一次(看到登录+素颜霜)→再推M1。M0/M1我亲自逐棒(链路串通+方法论落地需全局视野),M2加深再用团队并行。