当前位置: 首页 > news >正文

用户会撒谎,但是过去的行为不会

大家好,我是老马。

你做了一个产品,战战兢兢问用户:

「如果有个知识库,支持 AI、图谱、自动整理,你愿意用吗?」

用户两眼放光:

「当然愿意!太需要了!」

你激动得睡不着,开发半年,上线。

没人用。


这个坑,《The Mom Test》里反复出现。作者一句话戳穿:

用户不是故意骗你,是他们自己也不知道自己会怎么做。

你问的是"未来"。用户回答的是"理想中的自己"。

而未来和理想,是两样最不值得信任的东西。

这本书其实只有一句话:

用户关于未来的话不值钱,用户过去的行为值钱。

未来会撒谎,过去不会。


程序员的反击

大多数人读完,写读书笔记。

我做了一件不一样的事——

既然"行为 > 意见",那我干嘛还靠问卷?既然"过去不会撒谎",那我的应用本身不就是最诚实的观察者吗?

于是我在自己写的知识库工具 Monolith 里,新建了一个文件:

src-tauri/src/feedback_center/mom_test.rs

对,就叫 mom_test.rs

我把一本书的名字,编译进了代码里。


一个 .rs 文件,印着书的名言

这个文件做一件事:一键导出反馈包。用户点了"导出反馈",生成一个 zip,里面装着错误日志、行为事件流、搜索记录……

但最让我得意的,是 manifest.json 的最后一段:

"momTest": {"principle": "Behavior > opinion. The future lies; the past doesn't.","source": "design-docs/04-reading-books/02-the-mom-test.md"
}

一个 Rust 文件,导出的 JSON 里,印着一本商业书的核心原则,还标注了设计文档路径

每次用户导出反馈包,自动生成的 README.md 末尾都有:

用户行为 > 用户意见。未来会撒谎,过去不会。
—— 《The Mom Test》Rob Fitzpatrick

我觉得这是程序员能给出的、最浪漫的读书笔记——

不是写在文档里,而是编译进二进制里,跟着每一次导出,送给下一个读它的人。


两条主线,没有一条是问卷

这本书让我重做了整个反馈系统。挑两条最锋利的讲。

一、搜索"零结果",才是真实的需求信号

普通产品想挖掘需求,会做问卷:"你还希望我们做什么?"

我不要问卷。我看另一个数据:用户搜了,但什么都没搜到

搜索词: "微信读书导入"
结果数: 0

这一条记录的价值 = 一百份问卷。

因为用户真的去搜了,真的没找到。这不是"理想中的自己",这是"过去的事实"。

代码里有个专门的事件类型 search_zero_hit,用户每次搜空都被忠实记下。导出反馈包时按搜索词聚合 Top N——

这就是下一版该做什么功能,最真实的答案。


二、错误,是最高价值的行为信号

src/main.ts 挂了三个全局兜底,注释里我写了一句话:

错误是最高价值的行为信号。

因为用户报错的时候,他一定在做某件事。他不是在表达观点,他是在真实地撞墙

每一次崩溃,都是用户最真实的使用路径。错误不是 bug,错误是用户用脚投票


一个反直觉的细节

虽然做了这么多采集能力,但默认它是关的

feedback.behaviorCollect = '0'

因为这本书的另一句潜台词:信任,比数据更重要。

反馈包导出时,默认排除笔记正文、AI 对话、明文路径,全部本地生成,不上传任何服务器。用户自己点导出、自己预览、自己决定发不发我。

用户主动给你的数据,才是真数据。偷来的数据,连 Mom Test 都过不了。


反思

当然,目前因为缺少服务端的支撑,反应问题还是不够方便。

可以作为后续一个优化点。


本内容统一由 永恒之石个人知识库 Monolith 发布。
官网:https://houbb.github.io/monolith-landpage/
开源:https://github.com/houbb/monolith-landpage

http://www.jsqmd.com/news/1064365/

相关文章:

  • 深度残差网络有限宽度效应:从块定律到有效场论的分析与实践
  • Dify 第2课:工作流编排实战
  • XSS攻击链路深度解析与企业级纵深防御实战指南
  • 如何快速解密QQ音乐加密音频:qmc-decoder终极指南
  • 如何快速提升API设计:面向开发者的5个终极秘诀
  • PIC16F19197主动时钟调谐实战:告别外部晶振,实现±1%高精度内部时钟
  • Winlator终极输入法指南:5分钟解决Android运行Windows应用的输入难题
  • UA-Net:基于不确定性感知的TRISO燃料颗粒AI视觉分割实战
  • 6.22
  • NS-USBLoader终极指南:免费开源工具一站式解决Switch文件传输难题
  • 2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南
  • 2026年 鸡翅尖厂家推荐榜单:酱香/香辣/盐焗等多味网红休闲小食,高复购真空称重鸡翅尖源头工厂精选! - 品牌发掘
  • DSP56321 EFCOP协处理器实战:从FIR滤波到LMS自适应算法详解
  • TEE-OS学习轨迹第十四篇:OP-TEE OS 源码分析部分(一)整体架构
  • CogAgent
  • 中小团队Playwright自动化测试协作方案:MCP服务器与高层级方案对比
  • DSP56800E内联函数实战:乘法、移位与模寻址三大性能优化秘籍
  • 国产32位MCU微控制器血糖仪应用方案
  • 深入解析NXP Kinetis TSIv4电容触摸驱动:从原理到实战配置
  • 2026年 系统窗厂家/品牌推荐榜单:隔音系统窗+高端系统门窗的核心优势与选购指南 - 品牌发掘
  • AzerothCore ChatCommand框架:如何设计可扩展的魔兽世界GM指令系统?
  • 大模型概念操控:基于线性可及性的层选择策略实践指南
  • NVBench:首个双语非言语发声语音合成评测基准详解与实践
  • AI Agent在客户服务领域的深度应用
  • 星环科技助力研究机构探索“AI+”场景,推动知识库构建与智能助手落地
  • 2026年北京电子沙盘制作公司深度评测:从技术选型到落地效果,谁在真正定义“数字+实体”的融合边界?
  • 本地优先混合检索系统:自适应融合与自监督微调实践
  • AutoHotInterception完整指南:如何实现硬件级键盘鼠标控制
  • 嵌入式调试内存组件实战:从原理到应用,掌握内存查看与观察点技巧
  • 基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析