过去 18 个月,DHH 和 37signals 团队做了一个大多数软件公司不太敢公开承认的决定——不发。他们在 Basecamp 和新产品 Fizzy 里塞过一大堆 AI 功能,Fizzy 那边试了各种花样,Basecamp 也一样。DHH 的结论,和微软、和其他一票公司撞到的是同一堵墙:要做出一个真正好用、用户真心欢迎的 AI 功能,没那么容易。所以他们没发。对一家靠 Basecamp 吃了二十年饭的公司,「我们没发」这三个字本身就是一种立场。

但他没有停在观望。DHH 判断,这一轮 AI 真正跑出来的杀手级应用,不是某个内嵌的智能功能,而是 agent。理由他讲得很具体:LLM 一旦能用工具检查自己的思考,就聪明得多;文件系统又给了它跨 prompt 学习所需要的那块「记忆植入体」;于是它终于能真的动手做事了。方向变了,产品的做法就得跟着变。

于是 37signals 今天上线的,不是又一个 AI 功能,而是一个「对 agent 完全可访问」的 Basecamp。他们重写了 API,做了一个全新的 CLI,再把这一整套包进一个 skill,专门教 agent 怎么把它们用好。DHH 说效果出奇地好,而且很快。这里的关键动作要看清楚:他们没有往产品里塞智能,而是把产品本身改造成一个 agent 能操作的界面。

值得把这层顺序说透。DHH 并没有放弃做原生 AI 功能,他明说团队还在继续打磨 Basecamp 里真正有用的那些原生能力。只是在「做一个好用的内嵌功能」和「把产品向 agent 敞开」这两条路里,后者今天就能扎实交付,前者还在灶上炖。一家公司诚实地承认自己暂时做不出足够好的内嵌 AI,转而先把产品变成 agent 的操作台,这个取舍本身就是一条给所有软件团队的信号。

「凡是你能在 Basecamp 里做的事,agent 现在都能做。」

摊开就是——你的 agent 能翻遍 Basecamp 里的一切、按你要的口径做总结,也能建待办清单、发消息更新、和人以及其他机器同类聊天、上传参考文件、排一份项目日程。用户不再是坐在界面前一格一格点的那个人;用户的 agent 成了那个操作的人,人退到后面下指令、看结果。

真正的威力在于叠加。当 Basecamp 和你在用的其他 agent 可访问工具接到一起,事情就串起来了。DHH 举的例子很实在:做软件开发,用 Sentry 的 MCP 去扒主要的 bug 来源,再让 agent 把它总结成一条消息发进 Basecamp;或者给 agent 接上你的客服系统,让它下载、分析、挑出关键的客户投诉。一条工作流横跨几个产品,中间没有人工搬运。

这些事过去也不是不能做。API、手写集成、再雇几个数据科学家,都能拼出来。但 DHH 的原话是,那样又麻烦、又慢、又贵,所以绝大多数人干脆不做。他给了一个扎心的数字:真正直接碰过 Basecamp API 的客户,少到几乎可以忽略。

「过去这些用 API 也做得到,只是又麻烦又慢又贵,于是大多数人根本不做。」

但 agent 会不一样,DHH 赌采用会来得很快。他的逻辑不是「人人都会去跑命令行」——OpenCode、Claude Code、Gemini CLI 这些终究是少数人的工具。真正的通道是,agent 正在被直接塞进 ChatGPT、Gemini、Grok 这些主流入口,这些大厂被 OpenClaw 的蹿红集体尴尬了一把,都在补课。外面对「一个能当私人行政助理的个人 agent」的需求,大得很。当普通用户的 agent 就长在他们已经天天用的聊天框里,Basecamp 对 agent 敞开,就等于对这些用户全体敞开——而这批人里,绝大多数这辈子都不会自己去调一次 API。

DHH 用一句冰球老话收束整个战略:冰球要往哪去,他们就往哪滑。agent 可访问会成为全线标配——Basecamp 打头,Fizzy 接着,HEY 也不会太久。重写的 API、完整的 CLI,加上教 agent 上手的 skill,不管你的 harness 或那副「爪子」长什么样,都能接得上。

「冰球要往哪去,我们就往哪滑。」

写在最后