ZON
Best Minds Board · Private-style single page · E2E smoke token smoke-20260315-1840

deploy 群默认 /topic 调研部署链路,是否已经稳定命中 topic-deploy

结论先行:目标链路应该是稳定命中 topic-deploy,而不是旧的 web-ship 自动部署人格;之前会混入 web-ship,本质上是因为同一类“收到消息就部署”的旧 agent 约束仍残留、且 topic 路由边界不够强,导致非命令型或错误命中的消息被 web-ship 的默认行为接管。现在这次要求把入口收紧成 /topic → topic-deploy 专属调研部署/links|/status → 只查状态不重建非命令消息默认静默,就是在切断这种串流。

Project · 7_AGENT/openclaw/web-ship Category · workflow Tags · deploy · topic-routing · e2e · vercel · feishu · board
1核心问题:默认 /topic 是否命中正确 agent
2主要链路:topic-deploy 与历史 web-ship 分流
8+多样 SVG 模块,覆盖链路、风险、验证、决策
200只有线上 GET 200 且 metadata 验证通过,才算成功回执

问题定义

你要验证的不是“能不能生成一个网页”,而是 deploy 群默认 /topic 请求能否稳定走到 topic-deploy 的调研型部署工作流:生成 private 风格单页、带完整研究结构、至少 8 个多样化 SVG,并且 只有链接验证可访问后才回成功

  • 输入:Feishu deploy 群里的 /topic ... 请求。
  • 处理:topic 归一化、避免散 topic、生成 site/index.html、调用 ship-prod-detached。
  • 产出:版本化快照、rolling latest、history、canonical URL、状态 metadata。
  • 验收:metadata.status=success 且 verification.ok=true。

谁最懂这个问题

不是“页面能不能发出去”,而是“消息到底被谁接住、谁对回执负责”。

视角 1 · Routing / Agent Boundary 设计者

最关心入口条件是否互斥:/help/links/status/topic、active topic thread 更新、非命令静默,是否清晰分流。

视角 2 · 部署可靠性 owner

最关心“回成功”是否晚于真实可访问性验证,而不是脚本开始跑就先报喜。

视角 3 · 事故复盘负责人

最关心为什么旧的 web-ship 还会混入:系统残余默认人格、topic 缺省策略、fallback 逻辑、历史 last_topic 污染、以及错误的“任何消息都部署”规则。

SVG 1 · 命令入口决策树

收到消息 /help /links /topic 只回 usage 只跑 ship-links topic-deploy 完整工作流
把命令入口做成互斥分流,是切断 web-ship 混入的第一步。

SVG 2 · 历史污染路径

旧 web-ship 任何消息 自动部署 topic / status / 普通聊天 边界不严时被同一人格吞掉 topic 散掉 回复过早 状态串台
web-ship 的“任何消息→部署”人格,天然容易与 topic-based 调度冲突。

SVG 3 · E2E 验证泳道图

Feishu topic-deploy Vercel / Board /topic 请求 生成页面 ship-prod GET 200 才回成功
关键验收点不在“开始部署”,而在“链接验证可访问后才允许回复成功”。

关键洞察

洞察 A · 这不是普通网页生成任务

用户明确要求的是“调研部署链路验证 + 原因解释 + private-style 报告交付”,所以默认应该走 best-minds-board 风格的调研页,而不是 web-ship 的通用 landing/壳页。

洞察 B · 真正的故障点常在入口边界

如果 agent 仍继承“any message → deploy”的旧约束,那么 /topic 再精细,也会被更上层的泛化规则打断或抢答。

洞察 C · 状态查询必须与生成解耦

/links/status 只报状态、不重建页面,是减少误部署和错误归因的关键。

洞察 D · success 语义必须后移

只有 metadata 里的 status=successverification.ok=true,才应该对群里说“已经成功”。否则只能说“这次没有确认线上可用”。

SVG 4 · 根因矩阵

影响程度 出现概率 旧人格抢接消息 last_topic污染 topic命名散掉
最高风险象限:旧 web-ship 规则仍可接住 deploy 群消息。

SVG 5 · 取舍评分卡

方案稳定性可解释性维护成本 保留 web-ship 泛入口 命令互斥 + topic 专用链路 所有消息都进同一队列再判定
最优选择不是“更聪明地猜”,而是“更严格地互斥分流”。

SVG 6 · 验证漏斗

收到 /topic 请求 生成 HTML + SVG 结构 部署并产出 metadata GET 200 才回成功
真正留下来的只有已验证成功的那部分。

为什么之前会混入 web-ship

  • 旧 agent 角色过强:web-ship 的历史定位是“任何消息→更新单页→部署”,这和 deploy 群的 topic 调研链路天然冲突。
  • 入口规则未互斥:/topic、状态查询、普通跟进消息没有被明确定义为 mutually exclusive,泛化 agent 更容易抢先响应。
  • topic fallback 污染:last_topic.txt、默认 topic=web-ship 这类回退路径,如果在错误场景触发,会让新的 deploy 请求被旧话题吸走。
  • 成功判定过早:旧流更像“脚本跑了就回 URL”,而不是“验证 URL 可访问才回成功”,这会让串台问题被隐藏得更深。

SVG 7 · 前后对比时间线

收到消息web-ship 抢接直接部署可能先回成功 /topic 命中topic-deploy 生成metadata 验证再回成功
这次改造的核心,不是更花哨,而是把成功回执从“开始时”推迟到“验证后”。

比较 / 取舍

保留 web-ship 作为 deploy 群默认

优点是实现简单;缺点是会把“调研链路”和“任意页面壳页部署”混成一类,长期一定串台。

让 topic-deploy 成为 /topic 专属入口

优点是命令语义清晰、topic 生命周期可追踪、回执标准可统一;代价是规则更严格、需要明确静默策略。

建议:对 deploy 群,保留 web-ship 仅作历史/调试遗留,不再作为默认 topic 入口;topic 类请求由 topic-deploy 独占。

SVG 8 · 行动优先级梯子

P1 收紧命令入口:只让 /topic 进 topic-deploy P2 /links /status 只查状态,不重建 P3 metadata + verification 统一回执 P4 清理 web-ship 残余 fallback
先修入口,再修状态,再修说明;不要反过来。

行动计划

  1. 入口互斥化:deploy 群只把 /topic 导向 topic-deploy;/help 仅返回 usage;/links|/status 仅运行 ship-links.sh
  2. topic 归一化:对 topic 做 kebab-case、去掉 / \ .. 等危险路径字符;若已有 latest.html 先读取,避免散 topic。
  3. 成功语义标准化:部署后必须读取 .ship-logs/reply-meta.<TOPIC>.json 或 fallback metadata,且要求 verification.ok=true
  4. 失败回执人话化:不再回复抽象失败码,而是明确“这次没有确认线上可用”,再给最后可用链接。

SVG 9 · 证据图

结论 命令 metadata 验证 入口互斥 topic 归一 GET 200
好的回执,背后至少要有入口、状态、验证三类证据。

SVG 10 · 风险边界图

允许 /topic 研究部署 /links /status 查状态 thread 内更新当前 topic 禁止 非命令消息自动部署 只抽链接就生成报告 未验证先回成功
边界写清楚,系统才会稳定。

SVG 11 · topic 生命周期飞轮

topicflywheel 命名 生成 验证 回执 更新
topic 一旦稳定,后续跟进就能围绕同一 latest/history 累积,而不是散成多个页面。

风险 / 边界

  • 如果上层仍有其他 always-on agent 能接同一条 deploy 群消息,topic-deploy 的规则再好,也可能被前置抢答。
  • 如果 metadata 文件未生成或未按 topic 写入,成功/失败判断会退化到日志猜测,可靠性下降。
  • 如果只做 HEAD 验证而不用 GET,可能被某些 Vercel 路由误判;验收应以 GET 200 为准。
  • 如果继续依赖默认 topic=web-ship 或 last_topic fallback,topic 散乱与串台还会反复出现。

SVG 12 · Closing 系统图

deploy 群 topic-deploy board / vercel 统一 metadata + verification 让“是否成功”可被证明
最终不是靠口头说明,而是靠 metadata + verification 把成功定义成可审计事件。
Closing

综合判断

这条需求的正确交付,不是再做一个 web-ship 式页面,而是把 deploy 群里的 /topic 请求,收敛成 topic-deploy 专属的调研部署协议:入口互斥、topic 稳定、状态查询与重建解耦、部署成功语义以 metadata + verification 为准。之前会混入 web-ship,不是偶发现象,而是历史“任何消息都部署”的 agent 偏好与新 topic 路由要求发生了结构性冲突。

One next action:把 deploy 群对 /topic 的唯一默认处理器锁到 topic-deploy,并清理所有指向 web-ship 的默认 fallback / last_topic 继承路径;之后继续用 /status deploy-group-default-e2e 做回归检查。

best-minds topic-deploy verification-first feishu deploy
本页为公开部署页:已避免写入 token、密钥、内部 ID、本地绝对路径。Smoke token 仅作为无权限业务标识展示。
WebShip 自动部署输出:deploy 群默认 /topic 调研部署链路 E2E 验证
— One small system