作者用两个MCP调用(保存/读取)构建记忆服务,解决AI助手每次会话「从零开始」的问题,六周验证了记忆系统对AI编程辅助的价值。
你向助手解释部署方案。它听懂了。第二天你再解释一遍。第三天还是如此。你没有在训练它。你只是在重新打字。
没人要的工具
我做这个不是为了做产品。我只是不想再重复自己了。
我的环境有四台服务器,名字对任何人都没有意义;一条隧道,编号规则我总是记错;还有十几个小陷阱,这些陷阱的存在只是因为两年前我做的一些决策。每次新会话都是从零开始的。
所以我给助手一个地方来记录学到的东西,并在它开始工作之前读取回来。两个调用:一个保存学到的内容,一个召回。就这样。
六周里它只有一个用户。别人根本用不了,因为我没写一行文档。
六周做自己唯一的用户
回头看,那段时期才是最珍贵的部分,不是因为做出了什么东西。而是因为有了可量化的数据。
当你只有自己一个用户时,每个粗糙的棱角都会在一天内扎到你。一次召回返回了错误的结果,下一个小时就浪费了。一次保存悄无声息地丢了一个字段,一周后你去查找的时候就浪费了。
我记录了记忆真正阻止错误的次数。不是感觉,是次数。六周后这个数字已经高到让我不再质疑这东西是否值得投入。
不舒服的部分:那些被保存下来的经验中,有好几个是我已经犯过两次的错误。这个工具没有让我更聪明。它只是让我不再为同一个教训付第二次钱。
那一刻它不再只是一个个人工具
改变想法的不是市场分析。它更小、更诚实:如果我觉得有用,而且我的环境并不特殊,那么现在肯定有别人在重新打字他们的服务器配置。
光这个论点很弱。很多内部工具之所以有用,恰恰是因为它们适合一个人。所以我去找那些不只是关于我的部分。
不关于我的部分:问题的形态。每个助手每次会话开始时都没有历史。每个开发者的上下文都只存在于他们脑中,没有地方让机器可以读取。那不是我的环境。那是默认状态。
所以我写了之前跳过的文档,然后是从未需要过的入门指南,然后是只有在用户不是作者时才重要的部分:能自我解释的错误消息、健康检查、一个能看到这东西实际知道什么的方式。
一个人用的工具教我如何做给很多人用
三件事延续下来了,一件事没有。
延续下来的:每个功能在陌生人看到之前都已经经历了日常使用的检验。不存在没人试过的想法清单。最粗糙的那些路径已经被某个人走过数百次了,而那个人没法提个工单就走人。
同样延续下来的:诚实。当你的唯一用户是你自己时,一个隐藏了失败的绿色勾选标记是要你自己买单的,所以你不再做那些了。那个习惯才是真正的产品。
没有延续下来的:我对沉默的容忍度。我知道空结果意味着什么。新用户会把空结果读成工具坏了。把一个内部工具变成产品,有一半的工作是让它说出为什么什么都没有返回。
在你决定你的内部工具是产品之前先做这些
你不需要我的技术栈。你需要一个数字和一个陌生人。
首先,统计保存次数。为你的内部工具加上检测功能,记录每次它阻止了返工。不是使用量,是阻止量。使用量告诉你它在运行;阻止量告诉你它在产生价值。
其次,把它交给一个没有参与构建的人,不给任何解释,然后观察他在哪里停下来。那就是你的文档待办列表,按优先级排序,免费得到。
第三,像从来没看过代码一样读你自己的错误消息。每个只说了发生了什么而没说接下来怎么办的消息,都是你已经写好的支持工单。
一个不碰工具逻辑就能得到统计数据的方法:
# Wrap the recall path and log whether it actually returned something useful.
# Two files, no dependencies, works with any tool that shells out.
log=~/.mytool/prevented.log
recall() {
out=$(mytool recall "$1")
if [ -n "$out" ]; then
printf '%s\tHIT\t%s\n' "$(date -u +%FT%TZ)" "$1" >> "$log"
else
printf '%s\tMISS\t%s\n' "$(date -u +%FT%TZ)" "$1" >> "$log"
fi
printf '%s\n' "$out"
}
# After two weeks, the ratio is your answer:
# awk -F'\t' '{n[$2]++} END {for (k in n) print k, n[k]}' "$log"
如果命中率很低,你还没有一个产品。你只有一个还没有回报的习惯。在你写落地页之前知道这个是很重要的。
之前:你打开一个会话,解释你的环境,获得帮助,关闭会话,然后解释就随着会话一起消失了。第二天同样的解释,用同样的词,因为你写了一遍但没有人保留它们。
之后:解释由助手自己写一遍,在下一个任务开始之前读回来。你注意到它不是作为一个功能,而是作为一种缺失——缺失了那开头十分钟。
我们的版本叫 cachly:助手在修复后保存它学到的东西,在下一个任务之前召回它,通过 MCP,所以记忆在重启、模型升级和切换编辑器后依然存在。
内部工具变成产品的那一天,是你能够证明它为一个没有参与构建的人赚回了它的运维成本的那一天。在那之前它只是一个有 README 的习惯。
我构建了 cachly——AI 编程助手的记忆服务,通过 MCP。
ChatGPT 和 Claude 记住你的对话。cachly 记住你的系统:你修的 bug、你为什么选择 Postgres、那个总是坏的部署步骤——以及它与哪个决策矛盾。你用的每个助手都读同一个记忆,每条经验都带着学到它的人的名字,所以你团队里没有人需要学第二次。
免费套餐,托管在欧盟:cachly.dev
对于进一步的行动,你可以考虑屏蔽此人和/或举报滥用