闲谈丨一名AI体验者的自述

当年ChatGPT 3横空出世的时候,我对它不屑一顾,心想这不就是超大知识库的复读机么。如今,在现实的"严刑拷打"下,我的态度发生了180度大转弯。

目前,我购买了ChatGPT、Claude和Cursor的会员,另外还用了些Deepseek的API,每月的支出是60美元多点。这笔会员费并不算少,但我觉得它很值。直观上来说,我的生活有了如下改变:

  1. 再也不用在Google和Stack Overflow上查询技术问题了。
  2. 几乎不用请教其他领域的专业人士。
  3. 开发小工具的速度指数级地提升。

可以说AI在各个专业领域里,已经超过了95%的人,而且它还是个通才。举个例子,手机系统是非常复杂的,对于我们这种系统工程师而言,经常一个问题会横跨多个部门。大家有时候会相互扯皮,因为你不懂我的模块,我也不懂你的模块。所以传统的手机厂商里,几乎没人能够从上到下,从camera到audio全都了解。但如今AI可以做到,所以你可以通过它去了解各个模块。而且几乎没有必要去请教所谓的"专家",因为AI会比大部分人回答得更全面,也更有耐心

同时,AI的快速发展也会逐渐挤压传统学习媒介的生存空间,譬如博客、问答社区、书籍及课程。 因为这种主动式的一问一答,可以更快给到我们想要的答案。譬如,有时我们通读一篇博客,可能只是为了解决某个特定的问题。当然,传统媒介也有它的优势,譬如知识可能更成体系。但其实我们也可以通过AI来体系化地学习某块知识,尤其是程序领域内的知识。我一直认为,深刻理解最好的方式就是阅读源码,而非看书或者是博客。因为书和博客本质上是知识的二次加工,其质量也取决于加工者的水平。而AI时代,读代码、理解代码会比以前容易很多,尤其是一些可读性不高的代码,有了AI加持后简直如虎添翼。

当然,目前它也仍然有些缺点,主要在三个地方:

  1. 对于特别细节和多信息联动的推理还不擅长。
  2. 有时候会走进一个死胡同,特别是写代码的时候,给出的结果来回震荡,就是无法收敛到最终的正确答案上。
  3. 偶尔的胡说八道。

这些问题的存在,其实引出了一个更深层次的讨论:我们到底该如何和AI共处?是把AI当先知?当老师?当高维度生物么?如果你过分地依赖AI,把所有的思维、理解过程全都交给它,那么最后的结果一定是被误导、被欺骗。 类比到人类生活的模式,其实最合适的就是将AI当作一个能力很强的助手。一个领导可以把很多事情分派给助手来做,但他必须分辨助手递交上来的结果哪些是真实的,哪些是忽悠人的。这里面依靠两种能力,一是领导对这些事情的运作方式比助手更了解,二是领导有更好的理性思维,能够通过逻辑推断来拆穿谎言。因此,即便在AI时代,扎实的专业知识和理性的思考能力仍旧至关重要。

至于工具开发,上周我试着用cursor开发了一个小agent,耗时半天。这要放在以前,估计几天才能搞定,因为我对前后端都只是略微了解。

这个agent来源于一个实际的需求,就是tombstone分析的时候,经常需要了解崩溃时代码在干嘛。而有时,我们需要根据pc指针附近的内存值来恢复出相应的汇编指令。譬如如下格式的数据,我们希望把它转换为汇编代码。

erlang 复制代码
memory near pc (/system/framework/arm64/boot-framework.oat):
    000000007168d5b0 34000180b947d6e0 b907d6e1b9400c01  ..G....4..@.....
    000000007168d5c0 f9404a7034000081 38316a10530a7ef1  ...4pJ@..~.S.j18
    000000007168d5d0 b948e2e1b9000c1f b908e2e151000421  ......H.!..Q....
    000000007168d5e0 5280000014000002 aa1803e0aa0003f9  .......R........
    000000007168d5f0 d63f03c0f941a67e aa1703e035000359  ~.A...?.Y..5....
    000000007168d600 d63f03c0f940ee7e 90ff2cc1d5033abf  ~.@...?..:...,..
    000000007168d610 b940f837912b8021 34000097b9001417  [email protected]
    000000007168d620 530a7c11f9404a70 b400009638316a10  pJ@..|.S.j18....
    000000007168d630 aa0003f6f9001016 aa0003f614000017  ................
    000000007168d640 d0ff85c052800038 f9400c1e91318000  8..R......1...@.
    000000007168d650 f90012c0d63f03c0 1400000e3900d6d8  ..?........9....
    000000007168d660 3900db3f52800038 f9001336b4000096  8..R?..9....6...
    000000007168d670 140000073900d73f 91318000d0ff85c0  ?..9..........1.
    000000007168d680 d63f03c0f9400c1e 3900d738f9001320  ..@...?. ...8..9
    000000007168d690 aa1603e0aa1903f6 a9427bf9a94163f7  .........cA..{B.
    000000007168d6a0 d65f03c0a8c35bff 003cd50e00000000  .[...._.......<.

以往我都是借助这个网站,手动把数据小端转大端输入进去,然后看结果,遇到不懂的汇编指令还要查看ARM手册了解它的含义,总之费时费力。如今有了AI的助力,我可以开发出一个网页服务,前端界面如下:

后端采用Flask,处理流程如下:

  1. 对数据进行分割提取,并进行大小端转换。
  2. 将处理好的数据送入capstone库中,转换成ARM 64位的汇编指令。
  3. 将汇编指令通过API送入DeepSeek,得到每一条指令的解释。

最终的效果呈现如下:

事实上,AI给出的解决方案考虑得更加全面,它考虑到三点:

  1. 无效输入的处理。如果输入的不是内存数据,那么它会提示"未找到可反汇编的内容";如果输入的数据仅部分有效,那么不可以的数据将会提示"无法反汇编",而有效的数据将继续输出。
  2. 访问DeepSeek时,批量送入指令。因为如果每一条指令发起一次请求,那么无疑会增加token的开销;而如果一次输入过多指令,则会增加AI产生幻觉的可能。因此AI采取8条指令为一批的方式进行访问。
  3. 增加缓存机制。持久化了一个缓存文件,建立汇编指令到解释的映射关系。这样一来,使用的次数越多,需要访问DeepSeek的概率就越低,因为很多指令能直接从缓存文件中找到解释。这一方式极大地降低了AI访问的开销。

这个项目只是我个人电脑上尝鲜的实验,如果真要落地,模型还得换成本地的。整个过程我更多地感触到:AI对于工作效率的革命已经开始。 写代码由于其通用性广,已经被大家广泛地讨论。但各行各业里的工作流,其实都可以通过AI来提效。这个效率,既可以是时间上的节省,也可以是智能上的提升。

我个人是做稳定性工作的,因此日常工作中分析log必不可少。在我们这个领域,智能化地分析问题一直是个前进的目标。但当下的水平只能做到基于文本和规则的"半智能化"。如今有了AI的加持,真正的智能化或许不算遥远。试想当一个智能体可以联动多份log,调用各种工具(e.g. objdump、lldb、crash)加载出想要的数据,结合源码分析出问题的原因,并提出修改建议,那将是多么美好的体验。只是这项工作,单搞AI的搞不定,单搞稳定性的人也搞不定。因此,作为专业领域的人才,是很有必要去学习AI知识的。从原理上去理解它,才能更好地将它和特定的工作流结合。而这,也是我2025年的重要目标。

技术上的牛人往往对新鲜事物的接受度都偏低。所以读到这里的技术大牛们,如果你们还没有频繁地使用AI,那么我诚恳地建议你们快用起来。这无关乎新旧世界的切换,而是技术人理应对世界保持孩童般的好奇。

相关推荐
鸿蒙布道师1 小时前
鸿蒙NEXT开发动画案例2
android·ios·华为·harmonyos·鸿蒙系统·arkui·huawei
androidwork2 小时前
Kotlin Android工程Mock数据方法总结
android·开发语言·kotlin
xiangxiongfly9154 小时前
Android setContentView()源码分析
android·setcontentview
人间有清欢5 小时前
Android开发补充内容
android·okhttp·rxjava·retrofit·hilt·jetpack compose
人间有清欢6 小时前
Android开发报错解决
android
每次的天空7 小时前
Android学习总结之kotlin协程面试篇
android·学习·kotlin
每次的天空9 小时前
Android学习总结之Binder篇
android·学习·binder
峥嵘life9 小时前
Android 有线网开发调试总结
android
是店小二呀10 小时前
【算法-链表】链表操作技巧:常见算法
android·c++·算法·链表
zhifanxu12 小时前
Kotlin 遍历
android·开发语言·kotlin