tang-hi

Don't Panic

我的第一款Chrome插件以及AI时代的思考

在这几周的业余时间里,我开发了我人生中的第一个Chrome插件 —— smartTab

这个插件的功能其实很简单:对你的标签页,根据大模型的返回结果进行智能分组。详细功能可以参考这个GitHub 仓库。首先,欢迎大家下载试用!

开发过程

在开发这个插件前,我只是通过 CS142 课程简单学习了前端的基础知识。然而,借助大模型和 GitHub Copilot 的帮助,我只需要能够理解 JavaScript 代码并查阅 Chrome 插件的 API 文档,就能够快速将我的想法实现出来。

整个开发过程与我之前的开发经历有很大不同:

  • 大模型时代之前:开发功能需要官方文档、StackOverflow、Google 三管齐下
  • 大模型时代:只需一个大模型,就能快速实现想要的功能

只有在大模型输出的代码不符合预期时,我才会去查阅官方文档。这种开发方式大大提高了我的效率。

但这也带来了一个有趣的副作用 —— 尽管我开发了一个插件,但对于 Chrome 插件的原理我依旧是一知半解。以前程序员常说,学习新技术最好的方式就是动手实现它。但现在,在大模型的帮助下,即使你实现了功能,对技术的理解可能并不深刻。我认为,这是 AI 时代的一个典型特征。

在开发过程中,我对 LLM(大语言模型)有了两点重要观察:

1️⃣ LLM 需要考虑开发者友好性

起初,smartTab 的大模型选型是 Qwen,一方面是因为听说 Qwen 是开源模型的第一梯队,另一方面是希望国内用户可以直接使用,无需翻墙。

但在开发过程中,我发现 Qwen 的结构化输出并不友好 —— 它无法准确按照我给的 schema 输出对应的 JSON。这个问题导致我不得不不断调整解析代码,严重影响了开发体验。同时,Qwen 的响应速度也十分慢,有一次调试时我等了将近 1 分钟才得到结果。

这些问题最终让我放弃了 Qwen,转而使用 Gemini-2.0-flash。在我的测试中,它的输出始终符合我给的 schema,而且基本都是”秒出”结果。

我认为,如果大模型厂商想要让开发者基于他们的模型进行开发,构建有趣的应用,那么他们应该更多考虑开发者的体验,而不仅仅是去刷榜,追求一些可能无关紧要的分数。

2️⃣ LLM 不擅长处理 “dirty work”

这里的 “dirty work” 指的是那些不复杂也不困难,但琐碎且需要人集中注意力处理的工作。比如经典的”9.11 和 9.9 哪个大?“或者简单的乘法计算。

这类问题的特点是:不需要复杂逻辑,只需要集中注意力按规则处理即可。但 LLM 在这类问题上表现得并不好。

在开发 smartTab 的过程中,我提供给 LLM 的输入是一个数组,每个元素都是一个标签页的 title 及其对应的 ID。LLM 的任务是将这些 title 进行分组,然后按照”组名: [id1, id2, …]”的格式输出。

然而,只要标签页数量超过 30 个,LLM 就会出现问题:要么漏掉一些标签页,要么记错标签页和 ID 的对应关系。这导致组名很合理,但组内的标签页却是错的。

为了避免这个问题,我改变了策略:让 LLM 直接输出 title,然后我自己根据 title 进行 ID 匹配。采用这种方式后,LLM 的输出基本正确了。

打个比方,LLM 就像职场中的 Leader —— 能够高屋建瓴地给出方向或对大项目进行拆分,但当涉及到具体的落地实施,就不那么可靠了。

LLM 的这一特点与编程恰好互补:编程的本质就是通过规则将琐碎工作交给计算机处理。有人说 LLM 会取代程序员,但我认为 LLM 和编程的结合才能产生真正的价值。

AI 时代的思考

技术方面

在 DeepSeek 出现之前,我一直认为 AI 时代只不过是给程序员提供了更好的代码补全工具。我曾拿 LeetCode 周赛题目测试大模型的解题能力,除了 OpenAI 的 o1 模型可以解决一些中等题目外,其他模型基本都不行。

但在 DeepSeek 出现后,我发现已经几乎没有 LeetCode 周赛题目能够难倒大模型了。虽然解题能力与实际工作能力有很大差距,但这表明我们应该思考在 AI 时代如何适应这个新环境

让我们先想想:在大模型出现之前,成为一名优秀的程序员需要具备什么条件?

  1. 能够使用 Google 检索自己想要的信息
  2. 可以在 StackOverflow 寻找答案
  3. 有能力阅读官方文档
  4. 熟练掌握一门编程语言
  5. 了解操作系统、网络、数据结构、算法等基础知识
  6. 熟悉自己所在领域的专业知识

可以看到,成为优秀程序员的门槛相当高,这也许是程序员薪水一直较高的原因。

但在 AI 时代,这些条件似乎被简化为了一条:

  • 能够正确提问,让大模型给出准确答案

因为门槛降低,我们看到许多从未接触过编程的人通过大模型的帮助,也能写出有趣的应用。那这是否意味着程序员的未来会变得暗淡?

我对程序员的未来持乐观态度。这种情况意味着我们获取信息的效率更高了,可以更快地实现想法。同时,好的答案源于好的问题,而提出好问题需要一定的领域知识 —— 你能更清晰准确地提出需求,大模型给出的答案也会更加准确。

这也就意味着,你的技术能力越强,大模型对你的帮助也越大。就像《终极一班》里的龙纹鏊一样:遇强则强

但毕竟大模型是一个跨时代的工具,它确实对程序员带来了影响。例如,在大模型出现前,成为程序员的门槛很高,也许你只要精通其中一两项,就能找到不错的工作,比如成为一名 C++ “语言律师”。

但在大模型出现后,很多技能的边际效益在下降,对编程语言的熟练度就是其中之一。正如 Bjarne Stroustrup 所说:“你不需要了解 C++ 的每一个细节,就能写出优秀的 C++ 代码。“

在大模型时代,相较于成为”语言律师”,问题的拆分和项目的合理组织变得更加重要。只要你能将复杂问题拆分到大模型能处理的粒度,就能创造出优秀的产品。而问题拆分和项目组织,需要的是你对用户需求的理解,以及计算机相关领域的基础知识。

这影响不仅限于程序员,对所有领域都是如此 —— 卷成绩、卷绩点、卷一些数学解题技巧的意义正在降低。

相比于学习新技术,思考如何用这些技术创造有价值的产品更加重要。在 AI 时代,Jonathan Gillette 的名言依然闪耀着光芒,在此与大家共勉:

“When you don’t create things, you become defined by your tastes rather than ability. Your tastes only narrow and exclude people. So create."

"当你不创造东西时,你会被自己的品味而非能力所定义。而品味只会让你变得狭隘,排除他人。所以,去创造吧。“

职场方面

由于我尚未找到合适的创业机会,也没有特别好的想法,所以我仍需要向市场出售我的时间来换取报酬。既然如此,我也不禁思考:AI 对我的职业发展有何影响?

最大的影响应该是:对职业规划可以更加大胆一些。因为有大模型的帮助,你能更快地学习新知识,掌握新技术。这意味着你可以更迅速地切换领域,适应市场需求。我们知道,长远来看,你的薪资水平取决于你在市场上所能提供的价值的稀缺程度。

因为我在毕业后第一家公司的经历,我对所谓的”职场忠诚度”、“与老板的关系”、“绩效/汇报”,以及”做的活是否是老板关注的”、“是否有成长空间”、“是否有学习空间”等问题都持相对淡然的态度。这些因素存在固然很好,但如果没有,我也不会太在意。

因为我看到那些所谓的 leader、老员工,上午还在和大家一起吃饭,下午就被通知收拾东西走人了。我的第一个 Leader 在部门里技术实力很强,其他组的人一提到他都会说:“哦,你们组的 Leader 技术很厉害。“他与老板的关系也不错,毕竟他本身也是把原来的 Leader 挤下去的,并非那种一心搞技术、不懂职场政治的类型。

就是这样的员工,只要组织架构一变,分分钟被裁员走人。临走时,他获得的”优秀员工”奖杯还放在桌子上。

说远了些,我的观点是:在大模型时代,职场中更应该关注的是你想做什么。现在的岗位能否提供你想要的?如果可以,那很好,继续努力。如果不行,是选择跳槽还是去开源社区贡献代码?

我们都知道国内互联网的工作环境 —— 不加班几乎是不可能的。但这不过是一种代价罢了,你是选择牺牲自己未来的可能性来取悦老板,让年度绩效好看一点?还是选择增加自己未来的可能性?至于老板的感受,大多数情况下,你们之间的联系不过是在背调时需要他的联系方式罢了。

如今我们有能力,也有条件快速学习和掌握知识。请充分利用这一优势,让自己真正掌握自己的职业生涯

当然,加班是容易的,从零开始更换职场赛道是困难的。周末加班加点完成老板临时交代的任务是舒适的,而鼓起勇气说”不”,专注于自己的长期目标则更具挑战性。

但有了大模型,不妨再勇敢一点。没有那么多可怕的事情,适度的”任性”也不会带来严重后果。

结语

我无比庆幸生活在这样一个时代。虽然我也曾想过,如果没有大模型,大家一起按部就班,慢慢查阅文档,做做”语言律师”该多好。但大模型毕竟已经诞生,我也有了可以快速学习的工具。

既然如此,我想持续创造,不断变化才是真正让我感到快乐的事情。对于人生,我愿意更加大胆一些!