飞书 WebShip × Best Minds Board:
从「没回 / 404」到「稳定闭环 + 可长期沉淀」
把你当前遇到的体验问题、技术现状、保留策略(历史不 404)、国内可访问性、以及“全局视图/立项图”目标统一成一套可执行路线图。
隐私说明:本报告不记录任何群聊 ID、机器人配置密钥、Token、个人敏感信息;只保留你的诉求、系统结构、可行方案与代价权衡。
0 · 这份报告交付什么
你遇到的问题(Symptoms)
- 你在飞书里发了内容,没有回复,或者回复很慢。
- 机器人给了你链接,但你点击进去是 404 或“不是这次的内容”。
- 同一个“总入口”(比如
/ship或同一个页面)被覆盖,你要的是“每次新的链接”。 - 你在国内访问,有些 Vercel / 某些域名不稳定,想固定到你已有域名(如
board.zondev.top的某个子页面)。 - 你想要“调研能沉淀、可关联、可总览”,但担心部署有上限导致旧内容未来 404,让标签/关联失去意义。
你理想的未来(Target State)
- 你发任何内容,AI 自行分析 → 默认 Prod 部署。
- 每次都返回本次版本化快照链接(不可变)+ 滚动最新 + 历史列表,并且不 404。
- 就算未来要裁剪旧快照,也有常驻总结页(Evergreen)保留关键结论,让“有价值的调研”不丢。
- 有一个全局视图:主题之间如何关联、每个主题的重点是什么、下一步在哪。
- 整个流程不需要你手工 review;最多做“确认/否决”这种轻操作。
1 · 现状快照(本地仓库扫描 · 2026-03-02)
这些数字来自你当前仓库的本地文件统计(不依赖线上状态)。
report-*.html 报告快照数量docs/best-minds-board 的 .html 文件数docs/best-minds-board/board.config.json:maxTotalReports=400(生产部署最多带上 400 份 report 快照) ·
maxReportsPerTopic=30(每个 topic 最多 30 份) ·
keepLatestPerTopic=1(每 topic 至少保留 1 份最新) ·
keepDays=0(不按天裁剪)
1.5 · 已落地的修复(面向“你看到的体验”)
-
回复协议更明确:不再只发
/ship这类滚动入口,而是固定返回 3 个直接文件链接:版本化快照(本次产物)/latest.html(滚动最新)/history.html(快照列表)。 - 避免“发早了就 404”:部署流程改为阻塞等待结果后再回复;如果部署失败,不会给你“新但必 404 的链接”,而是回失败原因 + 上次成功快照作为兜底。
- 状态型问题的快路径:当你只是问“链接呢/结果呢/为什么 404/为什么没回”而没有新内容时,机器人可以直接返回“最后一次已知可用的三连链接”,避免重复部署与不必要等待。
注:这里不展示任何群聊 ID / Token / 内部配置,仅描述“用户可感知的行为变化”。
2 · 用户体验流程:现在 vs 理想
3 · 根因拆解:为什么会出现「没回 / 404 / 链接重复」
(A)回复层:缺少“必回”与“可解释状态”
- 部署是异步的,但对用户表现成“消息发出后就没了”。
- 失败时没有回“失败原因 + 可用替代链接”,导致你只能猜。
(B)链接层:把“滚动入口”当成“本次产物”发给你
latest类入口会被后续覆盖,所以它不等于“这次的结果”。- 如果只给你一个入口,你没法确认“是不是新内容”。
(C)部署层:prod alias 切换需要时间/可能失败
- 如果链接在部署完成前发出,你点开就会是 404。
- 如果本次部署失败,但仍然返回“新链接”,它同样会 404。
(D)可访问性层:国内网络不稳定
- 某些网络对
*.vercel.app不稳定,但自定义域名有时更稳(非 100%)。 - 需要把“回复链接的域名”固定到你可用的 alias(如
board.zondev.top)。
4 · 历史保留策略:你真正关心的是“可长期访问”
你之前看到的两个配置:
maxReportsPerTopic 和 maxTotalReports,本质是在回答一个问题:
“生产环境(你分享出去的域名)要带上多少份历史快照?”
它们决定什么:
maxReportsPerTopic:某一个 topic 下,最多让多少个report-*.html出现在线上 prod。maxTotalReports:所有 topics 加起来,最多让多少个report-*.html出现在线上 prod。- 超过上限的旧快照:本地仍在,但新一次 prod 部署后线上会变 404(因为 prod 指向新快照)。
它们不决定什么:
- 并不是“你的网站只能有 400 个页面”。它只限制
report-*.html这一类“快照报告”。 - 你依然可以有很多 index / tags / projects / evergreen 总结页,它们不必受这个限制。
5 · 解决方案清单(按“简单 → 长期”排序)
| 方案 | 解决什么痛点 | 代价 / 风险 | 推荐使用时机 |
|---|---|---|---|
| 统一 3 链接回复 (快照+latest+history) |
不再“这次到底部署了什么”;每次都有不可变快照,避免重复链接困扰。 | 需要在机器人回复协议中固化;并确保部署流程阻塞等待结果。 | 立即做(这是用户体验“能不能用”的底线)。 |
| 部署完成后才发链接 (失败回可用替代) |
杜绝“发了就 404”。 | 会让回复稍慢,但换来确定性;需要良好日志与超时策略。 | 立即做(比“快”更重要)。 |
| 把上限从 400 提到 1200 | 短期内最大化历史可访问;降低“旧链接未来 404”的概率。 | 部署体积与文件数增加;极端情况下触发 Vercel 限制,需要 slim staging/归档策略。 | 当你确定增长很快、且短期不想做总结/筛选时。 |
| Evergreen 常驻总结页 (每 topic 1 页) |
即便旧快照被裁剪,“高价值结论”仍存在;标签/关联仍有意义。 | 需要一个“自动提炼/更新”的规则;要处理 AI 误差(可用引用/来源片段降低风险)。 | 当你开始在意“沉淀”而不仅是“生成”。 |
| Pin/优先级机制 (重要报告永不裁剪) |
你不用手选:AI 或规则把“关键报告”固定部署,避免重要历史 404。 | 需要对 publish 阶段增加“选择器”;要定义“重要”的准则。 | 当 report 数量接近上限,且出现“被裁剪的正好是重要内容”。 |
| 国内镜像 / 备用域名 | 解决“国内访问不稳定”。 | 额外运维与成本;需要同步策略(镜像更新、缓存、证书)。 | 当你确认某些域名在你的网络长期不稳定(且自定义域名也不稳)。 |
6 · Best Minds 视角:这件事谁最懂?他们会怎么拆
Guillermo Rauch(Vercel 思维)
把“部署”当成不可变快照:每次部署产生一个新的版本;prod alias 只是指向最新版本。你要的“每次新链接”本质上是“每次保存一个快照 URL + 稳定 alias”。因此系统应该强制输出版本化快照链接,而不是只给滚动入口。
Charity Majors(可观测性/可解释性)
你痛的不是失败,而是不可解释:没回、回了但 404、你不知道发生了什么。正确做法是把每次运行都变成可追踪事件:run id、状态、失败原因、产物链接、日志入口。系统的契约是“必回 + 可追溯”。
Andy Matuschak(知识沉淀 / Evergreen)
“大量报告”本身不是沉淀。沉淀发生在可复用的结构化笔记:把关键结论、可复用框架、引用来源、未解问题抽出来,形成常驻页与可链接网络。你的“全局视图”不是额外功能,而是把信息从“堆页面”升级成“可连接图谱”。
合成结论(你这套系统的核心原则)
- 产物优先:每次消息必须生成“本次快照链接”(不可变)。
- 必回优先:成功/失败都要回;失败要回“原因 + 可用替代”。
- 沉淀优先:快照是历史,Evergreen 是知识;图谱/地图来自结构化提取。
7 · 推荐路线图(尽量不需要你人工 review)
Phase 0(立刻):体验闭环
- 飞书里任何消息触发:先 ACK,再阻塞等待部署结果。
- 回复协议固定为“三连”:版本化快照 / latest / history + 1 句摘要。
- 把回复域名优先固定为你最稳的自定义域名(例如
board.zondev.top)。
Phase 1(本周):保留策略与增长
- 把
maxTotalReports调到1200(给你足够缓冲)。 - 保留 slim staging 机制,避免 Vercel 免费配额/上传调用被打爆。
- 在看板首页显式写出“当前部署策略”,减少误解与焦虑。
Phase 2(下周):Evergreen + 全局地图
- 每个 topic 增加 1 个常驻页:
evergreen.html(AI 自动更新)。 - 全局页:
map.html(主题 × 标签 × 关键结论 × 下一步)。 - 只需要你做“确认/否决”,不需要逐篇编辑。
Phase 3(可选):Pin / 镜像 / 归档
- 当 report 接近上限:引入 Pin(重要报告永不裁剪)。
- 若国内仍不稳:做国内镜像或提供备用域名。
- 做“月度/季度总结”,把旧快照压缩成更高维度知识。
8 · 你要的“立项图/思维导图式全局页”怎么落地(最小实现)
你真正需要的是一个“信息提取 → 结构化 → 可视化”的链路,而不是一张漂亮图。最小可行版本可以这样做:
输入(系统已有的)
- 每份报告的
.meta.json:category、tags、summary。 - 报告正文(HTML)可由 AI 再提取:关键结论、证据、未解问题、下一步。
输出(新增两类常驻页)
topics/<topic>/evergreen.html:这个 topic 的“长期有效”总结。topics/_/map.html(或单独 topic):全局图谱/立项总览。
关键点:常驻页不是 “又一份报告”,而是“每次新报告都让 AI 追加/修订一小段”,让信息从“新增”变成“累积变好”。
9 · 代价与风险(你需要提前知道的)
- 把上限调大 会增加线上承载的历史文件数:部署可能更慢,极端情况下触发 Vercel 的限制(文件数、上传体积、每日部署次数等)。 但你目前的数据规模离这些硬限制还很远。
- AI 自动更新 Evergreen 可能写错:建议把“结论”绑定到“来源片段/链接/引用”,以及保留“待确认”标记,让错误可见可修。
- 国内访问 不是 100% 可控:自定义域名通常更好,但如果网络环境本身限制域名/证书链,仍可能不稳;此时才考虑镜像与备用域名。
Closing Summary
你当前的问题不是“不会部署”,而是“部署闭环没有变成稳定契约”:用户侧看不到状态、拿不到本次不可变产物、失败时没有可用替代。长期上,你要的也不是无限堆报告,而是让“高价值信息”以 Evergreen + 全局地图的形式长期可用。
One Next Action
先把“回复协议”固定成三连(快照/最新/历史)+ 失败也必回;然后把 maxTotalReports 调到 1200 作为缓冲。