流量密码：ChatGPT 开源的一些思考

这篇文章我不想牵扯过多的技术描述，后面会专门写技术文章来讲 ChatGPT 这个项目。

背景

我最近大半年一直在研究 Tauri 相关技术，写了一些零散的文章。知道一些功能 API，也读了一些源码（被迫的，因为单纯的文档和 issues 已经不够用），但是并没有做出过一个真实可用的项目。

简单来说 Tauri 就是一个桌面应用跨端打包解决方案（macOS，Window 和 Linux 等）。它的移动端（Android 和 iOS 等）打包也已经发布了 alpha 版本（Announcing the Tauri Mobile Alpha Release），很快就会迎来它的生产版本。

Tauri 是为安全而生的，它的一切架构设计都在围绕着安全这个主题。打包外链在 Tauri 看来是一件不安全的事情，功能会受到诸多限制。所以我最近一直都在研究如何优雅，或者以一种比较好的方式来对远程 URL 链接进行套壳。因为这对于想快速将链接进行桌面化还是有很大意义的。

就是在这种背景下，ChatGPT 突然就在朋友圈刷屏了，我当时并不在意，以为又是出来一个什么聊天工具（毕竟是以 chat 打头的嘛）。后来过了几天，朋友圈发的人越多了，我感觉事情可能没那么简单了。我就去了解了一下，才发现这东西不简单，竟然可以解决一些专业性的问题，比如：写代码，改 BUG，写小说，充当女友聊天，当作第二个搜索引擎等等（准确率还有待加强...）。

这时我就萌生了一个想法，这玩意功能这么强大，却只有网页版，如果和 Tauri 结合起来，会发生什么？正好和我最近研究的方向很吻合，可以让我大展身手，验证我最近的很多研究和想法（这时候的心态还是单纯的，没想着蹭热度）。

干就对了

空想并不能给你带来任何东西。

于是在 2022.12.07 下午五点多创建了仓库，因为各种 Demo，Hello World 写的实在是太多了，所以我这是轻车熟路。大概花了四五个小时就完成了初版功能，将 ChatGPT 的 URL 打包进 Tauri 桌面应用，并且添加了一些菜单项，以及自动更新。然后在画 LOGO 的环节，我差不多又折腾了两三个小时（快赶上写代码的时间了），虽然小，但是却很重要，它是你产品的灵魂所在。

我认为做项目也是需要具有产品化思维的，在这里我想谈谈对产品的理解：

产品闭环：它可以很小，功能可以很简陋，但是必须要形成最小闭环，保证其可用性（产品核心功能可以正常使用）。

速度要快：开发速度，更新速度，问题相应速度都要快，因为它可以帮助你抢占第一波用户（种子用户积累很重要，可以形成口碑，帮助产品二次传播）。

用户体验：这是需要花心思的，虽然你是一名开发者，但是你更是一名使用者。所以没有产品，你就是产品；没有设计，你就是设计（你就是用户，甚至你要比用户更懂用户，学会取舍）。

产品计划：你对产品未来方向的规划，计划加入什么牛逼的功能，需要在文档里写清楚。它就相当于是在给用户画饼，可以打动一些想要长期追随它的用户（注意：画饼不代表天马行空的想法，而是根据实际情况，可实现但因时间原因暂时无法实现的计划）。

差异化：因为当你发现机会的时候，别人可能早已经在里面开始收割了，所以产品功能的差异化，将是你的突破口（人无我有，人有我有优）。

稳定性：产品的初期的架构很重要，它可能会伴随其一生。重构有时候并不现实，因为它需要牵扯到很多的历史包袱，数据兼容，人力成本等等（可扩展性很重要）。

什么是核心功能？

一直在说核心核心，到底什么才是核心呢？其实就是你这个产品的初衷是为了解决什么问题。如果没搞清楚想要解决的问题，很可能会眉毛胡子一把抓，认为什么都重要。拿我的项目来举例，它的核心功能就一点，网站 URL 桌面化。所以我将 URL 打包成跨平台的桌面应用就已经完成了核心功能。把握住了核心，你就可以对功能进行取舍，取舍而来的时间就是速度。

为什么要注重用户体验？

用户体验很重要，在我看来它仅次于核心。它会直接影响到用户使用的感觉，一旦错失第一印象，那么这个用户可能就无法再次挽回了。当我们有了核心目标后，需要考虑的就是如何围绕这个核心去构建符合用户行为的功能。子非鱼的问题无法避免，可先不做的就不要用错误来将就，有时候试错的成本可能会很高。我们自己就是使用者，你可以站在开发者和使用者的双重角度去思考问题。身为程序员，逻辑思维很重要，产品思维也同样重要。

为什么要快速迭代？

快速迭代是为了让用户看到你产品不断演化的方向，也是为了增加与用户的粘性。小步快跑其实也是为了解决核心功能取舍掉的那一部分东西，它们在开荒阶段，不是那么重要（生死面前，钱财都是身外之物）。但是一旦有了核心功能这个载体，它们就是血肉，可以让产品一步步丰满起来。

为什么要快速响应？

产品开发过程中，各种 BUG 很难避免。你对用户的响应速度，直接决定了用户的去留。能解决的问题最好可以短时间内解决，解决不了的也要说明原因。

为什么要稳定性？

这个问题也是老生常谈的问题，说的时候都信手拈来。但是真正做的时候，在速度面前，就会舍弃很多东西（我就是暂时那样处理，回头就改，结果代码越写越多，改不了了...）。我这次就犯了这个致命的错误，因为前期并不需要很复杂的功能，就未过多考虑数据的结构问题，结果在最近一次版本升级中，修改了一些字段未做数据兼容的异常处理。导致很多用户在升级后，程序直接崩溃，无法启动。我花费了很多时间在 issues 里解释这个问题，后来我在项目的 README.md 里给出了解决问题的办法，但不一定所有的用户都会看到。如果他们因我的失误而离开，确实有点小遗憾。

小结

以上这些都是环环相扣，层层递进的。步子迈得大，不见得就是快，所以稳扎稳打，走好每一步才是最重要的。

蹭流不可耻

在风口浪尖，会有无形之手推着你前行。机会是需要把握的，它会让你事半功倍。

ChatGPT 是一个热点，可以说是引爆全球程序员圈子的热点。当然它也延伸到了各个领域，导致 OpenAI 的服务器经常崩溃。作为一个网红项目，如果可以基于它而衍生出来的一些项目，关注度也自然会高很多。所以这就是势。当这个势和开源结合之后，就可以收获一波满满的 ⭐️ Star。Star 对于开源程序员还是很有吸引力的，因为它很难也很容易获得（因为项目并不一定有技术含量就会被人所熟知）。

我是从 2015 年开始入行前端，学习编程。当时就注册了 GitHub 账号。然后断断续续开始了自己的开源生涯。从 0 - 18 个 followers 我花费了五年时间。以及 2021.6.29 第一个 100 star 项目，我花费了将近 6 年时间。但是这次这个项目 5 天时间，我获得了 300 多 star。我前五年的所有项目总和还不及它一个零头。我想说的的是蹭流不可耻，但坚持更珍贵。因为 量变到质变需要的时间是巨大的，黎明前的黑暗没有人知道会持续多久。

蹭流小技巧

所有的社交类内容传播都类似，包括做开源项目。前期的种子用户很重要，他们可以把默默无闻的你推到聚光灯下。一旦成为焦点，自然流量就会像你倾斜。对应到开源项目，就是 GitHub Trending，这个趋势榜单会成为你的一个重要支点，它会撬动自然流量（自带流量的请忽略，粉丝的力量过于强大）。根据我的经验来看，项目的新鲜度，以及短时间内吸引到的关注度（star）是上榜的指标。所以很多人会去刷 star，但是我觉得开源需要的是被认可的感觉，刷来的 star 并不能带来发自内心的快乐。所以风暴的产生可能就只是一次蝴蝶的振翅。这也是撬动地球的支点。虽然新鲜度，关注度等等都很重要，但是打铁还得自身硬，用实力说话。

总结

身为一名程序员我很自豪，虽然足不出户，但是你有着可以用双手去改变世界的力量。即使不能实现，也可以将其定为一个努力奋斗的目标。

结尾

在最后的收尾，我想放几张截图，作为我写这篇文章的一个佐证。坚持的力量不可想象。所以永远不要尝试去定义自己，你就是无限的可能。

开源 5 年收获了 18 个 followers，和几乎没有的 star

开源 6 年收获的第一个百星项目

ChatGPT 项目开源 5 天破 300 star

最后两张是我当前的 github 首页截图，这将是我下一次起航的起点