1.4 最小可用目标:MVP 流程图
选型定了,录音规范也立了,接下来是最容易激情犯错的一步:画功能清单。老板拿着白板笔准备大干一场,开口就是要有声纹识别区分谁在说话、要支持中英日多语言、要能实时投影字幕到会议室屏幕上、最好顺便把纪要翻译成英文发给海外同事。我赶紧拦住他:先跑通再迭代,MVP 的第一条纪律就是砍功能。 内部工具最怕的就是版本膨胀。功能堆得越多,每个都做得半吊子,最后同事们嫌难用,统统退回手写纪要。我们的策略是先把主干打通:从录音上传到纪要发到同事手机上,一条链路完整走通,哪怕每个环节都很粗糙。主干通了,后面添枝加叶才有意义。
砍功能的底气来自一个清醒的认知:同事们不会因为功能多而爱用一个工具,只会因为某个功能真好用而离不开它。每个半成品功能都在透支整个工具的信誉度,主干的打磨却需要集中的精力。与其每样都沾一点,不如把最痛的那一环做到极致,再回头谈扩展。这个认知后来被我应用到了之后所有内部项目上。
MVP 流程图:一条链路没有支线
砍完功能之后,MVP 的流程简单到可以在一张餐巾纸上画完。整个系统就是一条单链路,没有任何支线:
会议录音 → 上传存储 → ASR 转写 → 文本清理 → 信息提取 → 纪要页面 → 短信通知参会人
这条链路里每个环节只做一件事,环节与环节之间用存储和回调松耦合地连接:录音落到存储桶里,上传事件触发转写,转写结果再依次进入清理和提取,最后生成纪要并发出短信。任何一环失败都可以重跑,不会影响其他环节。这个设计后来被证明是整个项目最正确的架构决策——在单链路上排查问题,比在一张蜘蛛网里排查容易十倍。
画 MVP 流程图有个诀窍:每画一个节点就问自己一句,这事能不能不做。如果链路断了还能把纪要手动发出去,那这个节点就是支线,砍掉。最后留下的六个环节,每一个都是“不做就走不下去”的必经之路。
MVP 功能表:只留主干
我们把所有想要的功能摊在桌上,按“是否影响主流程”分成两类,最后 MVP 只保留了下面这张表里的六个功能:
| 功能 | 输入 | 输出 | 验收标准 | 优先级 |
|---|---|---|---|---|
| 录音上传 | 会议音频文件 | 存储桶中的对象 | 上传成功可下载,不丢不重 | 必须 |
| 自动转写 | 上传的音频 | 带时间戳的逐字稿 | 一小时音频十分钟内出结果 | 必须 |
| 文本清理 | 逐字稿原文 | 加标点去语气词的正文 | 无大段重复、断句可读 | 必须 |
| 信息提取 | 清洗后正文 | 待办、决议、发言人列表 | 每条待办有责任人与截止日 | 必须 |
| 纪要生成 | 提取的结构化信息 | 一页纸纪要 HTML 页面 | 一屏可读完、可分享链接 | 必须 |
| 短信通知 | 纪要链接与手机号 | 参会人收到的短信 | 散会十分钟内送达 | 必须 |
验收标准里最关键的一条是“每条待办有责任人与截止日”——这不是技术指标,而是业务底线:如果提取出来的待办没有责任人,同事们两分钟内就会退回人工纪要。MVP 的验收标准必须从用户视角写,而不是从技术视角写,这是做内部工具最容易跑偏的地方。
还有一条经验:功能表里的优先级一栏,我当初只允许填“必须”两个字,没有“高、中、低”这种暧昧选项。一旦出现中间档位,必然有一堆功能被标成中优先级,然后顺理成章地挤进 MVP。用二元的“必须 / 暂缓”逼自己表态,是控制范围最有效的手段。
不做清单:这些功能统统暂缓
砍掉的功能比留下的多得多。我把它们也列成一张表,附上暂缓理由——后来每次有人想加功能,我就把这张表翻出来:
| 功能 | 暂缓理由 |
|---|---|
| 说话人分离 | 依赖额外能力,准确率不达预期,先靠人工标注发言人 |
| 多语言识别 | 我们会议全是中文,英文散落在个别术语里 |
| 实时字幕投影 | 需要 WebSocket 常驻链路,会议室没投影接口 |
| 纪要自动翻译 | 没有海外同事,需求为零 |
| 声纹门禁考勤 | 与纪要无关,典型的需求蔓延 |
| 语音命令控制 | 想都不敢想 |
其中说话人分离最可惜。它技术上确实诱人,能自动标注每句话是谁说的,把纪要的可用性再推进一步。但实测下来准确率不够稳定,尤其多人抢话的场景。与其给出一份充满错误的发言人标注,不如先在纪要里留下时间戳和段落结构,让提取环节结合语境做粗粒度归集。先把体验做稳,再谈把体验做炫。
不做清单的维护方式也有讲究:每砍掉一个功能,都在理由栏写清楚什么条件可以重新启用。比如说话人分离的条件是准确率达到可用水平,多语言的条件是有真实的跨国会议需求。这样一来暂缓不等于否定,提出需求的同事也容易接受——他的想法被记住了,只是时机未到。
风险清单:先把可能翻车的地方圈出来
排期之外我还列了一张风险清单。做兼职推进的内部项目,最大的敌人不是技术难点,而是那些“没想到”:
| 风险 | 影响 | 对策 |
|---|---|---|
| 转写接口偶发失败 | 链路中断,纪要出不来 | 失败自动重试,超限转人工告警 |
| 大文件上传超时 | 同事以为传成功其实没传 | 上传完成回执校验文件大小 |
| 提取质量不稳定 | 待办缺失,信任崩塌 | 所有纪要保留人工校对入口 |
| 短信发送频率受限 | 通知发不出 | 分批发送,失败自动补发 |
| 录音忘开 | 无米之炊,整条链路空转 | 规范会议流程,主持人确认 |
其中第三条最值得多说一句:即便自动化做得再好,AI 打草稿、人来定稿这条原则我们一直坚持到项目最后。自动化的目标是把人的时间从两小时压到五分钟,而不是压到零——剩下那五分钟的判断,恰恰是人类不可替代的部分。这个定位决定了我们的纪要工具始终有一个简单的人工校对页面,同事愿意用,很大程度是因为他们知道最终拍板的还是人。
四周时间线:小步快跑
作为一个人兼职推进的项目,我把 MVP 排了四周的工期,每周一个可演示的里程碑:
| 周次 | 目标 | 交付物 | 验收方式 |
|---|---|---|---|
| 第一周 | 上传与存储跑通 | 录音可直传存储桶 | 拿真实会议录音上传成功 |
| 第二周 | 转写接通 | 逐字稿自动生成 | 转写结果可读,错误率可接受 |
| 第三周 | 纪要结构化 | 一页纸纪要页面 | 待办决议齐全,格式整齐 |
| 第四周 | 短信与跑批 | 全流程串通 | 走完一次真实例会并发出短信 |
排期的核心思想是每周交付的东西都能被同事摸到。第一周末我就拉着产品经理传了一份真实录音,虽然那时候还没有转写,但“录音能传上来且保住了”这件事本身已经建立了信任。内部项目最怕的是闭门造车三个月拿出来的完美 Demo——那时候需求早就变了。这套内部小工具的部署方式,可以参考我的轻量建站实战,用的就是同一套思路;涉及到底层云资源的规划,腾讯云五件套实战里有更系统的说明。
排期里还藏着一个小技巧:把最难的一周放在第二周而不是第四周。转写接入是整个链路不确定性最高的一环,早做早暴露问题;如果把它压到最后,前面三周看似顺利,最后一周翻车连缓冲的时间都没有。做工程方案永远要把风险最高的部分往前赶,把可预期的部分留在后面。
另一点是把验收方式写得能用一句话执行。每周验收时我就照着表格最后那一列问一个问题,答案只有通过或者不通过两种。这种二元验收让每周的演示特别高效,也避免了对不合格交付物的含糊容忍。第一个月每个周五下班前,我都会当着老板的面跑一遍这张验收单,从上传到短信,全程不碰开发机,只用平时同事用的入口。这个仪式感的小动作让老板成了我们最忠实的内测用户。
先跑通再迭代
MVP 不是低配版的偷懒,而是一种心理保护机制。四周后我们拿着这套粗糙的工具跑完了第一次真实例会,纪要确实自动发到了每个人手机上——虽然格式还丑,虽然有一两条待办没提取干净,但当短信到达的那一刻,群里炸出的那一排大拇指,让这个项目从此有了自己奔跑的动力。
从那以后,迭代变成了一件自觉的事:每周同事会用,会把不顺手的地方告诉我,我按优先级改。说话人分离后来在第三个月通过提取环节的优化部分解决了,实时字幕也在半年后加进了规划。回顾起来,如果一开始就奔着全功能去,这个项目大概率会死在第二个月的某个深夜——那时候主流程还没通,新功能在堆积,而同事们的耐心已经耗尽。先把主干走通,让工具在真实使用中长大,这是我做这个项目学到的最重要的一课。
后来我们复盘整个 MVP 阶段,发现一个反直觉的规律:同事容忍粗糙,但不能容忍不可靠。一个偶尔少条待办但稳定运行的系统,远比一个功能齐全却隔三差五罢工的系统受欢迎。MVP 想要守住口碑,优先保障的应该是稳定性和速度,而不是功能完备度。这个认知贯穿了后面所有迭代,我们宁愿某个版本砍掉一个功能,也不允许它在同事最需要的时候掉链子。
关于后续一步步的实现细节,比如分片上传怎么处理、转写结果怎么解读,我会在后面的章节里逐个展开。等工具跑稳之后,如果你想给它加上更智能的提取与交互能力,可以参考AI 智能体开发;纪要的长期归档与检索设计,推荐先读笔记知识库实战。
