From Ideas to Action
自己想法总是很多,但每次要去行动的时候,都会卡在初始阶段。觉得自己一定要弄懂每一步才能继续,被某一步卡住了之后就会进入低耗能模式,想了想如果没法解决,过了一周基本就放弃掉了。
Automation Journey
最近这份工作的值班模式有比较大的变化,特别是在值班的场景下,每次都需要频繁地去查 MySQL 和 Hive,解析和提取关键信息提供给上下游,或者是通过接口进行消费。
Initial Workflow: Manual & Repetitive
初始操作流程:
- 登录数据库查询平台(输入 SQL + 点击查询 + 下载文件)
- 手动打开数据文件提取信息
- 调用接口或者提供给上下游消费
Phase 1: ChatBox Mode
ChatBox 模式下会让 AI 部分生成有效数据,例如让其拼接 SQL 条件文件添加引号和逗号;让其生成 HTTP 中的请求 JSON。能部分代替掉原来要在编辑器进行的数据处理,尽管是能实现但是 AI 请求的不确定性情况下,着急的时候还是会去编辑器自己处理。
Phase 2: Terminal Agent
Claude Code 在编写代码之余,自己也把它用来代替 ChatBox。在使用期间自己老是输入重复的提示词,因为解决的是类似的问题,当然有 custom command 的解决方案,也有让其生成 Python/Shell Script 再执行的方案,也就仅此而已了。
26 年年初的时候打算用 Obsidian 来管理自己的工作值班问题处理方案,选用 Obsidian 的原因是其基于 Markdown 且数据私有化可以用 iCloud 来存储。解决思路就是把处理问题的方案保存在一个个的 Markdown 文档,让 Claude Code 在该上下文中处理数据。
此时基本上能解决生成 SQL、提取数据文件信息、自动化调用接口的步骤,但是依然还有很多手动处理的步骤,例如打开浏览器、查询并下载数据文件,再手动粘贴到 Obsidian 的文件夹下。也许比起之前好多了,但频率高的时候,手动处理还是挺麻烦,很费人。
Phase 3: CLI Tool
AI 这波浪潮让全世界每天都不断接触到新的东西,有点类似淘金,信息是很多当时对自己有价值的还是需要筛选。最近留下印象最深的就是 Browser Use、Computer Use、CLI。最早的电脑是没有图形界面的,都通过终端进行使用应用的。而我值班处理问题中有频繁的 GUI 操作步骤,就想用 CLI 来代替数据库查询。
在某个加班的下午用 Claude Code 写了一版基于 BrowserUse 自动化查询 MySQL 的工程,使用方式是让其自己去调用 Python 脚本,看到自动化操作浏览器查询出数据的那一刻还挺开心的。
在后续的使用中发现自己还是有很多的不确定性:
- 手写 SQL 比较麻烦,写了一个 Skill 自动生成(支持配置数据库的 DDL)
- 执行 Browser Use 每次都需要 LLM 调用,LLM 调用带有不确定性且速度不快,即使输入是一样的也没法保证每次的输出是一样,因此查询有时候会失败
整体效果不是很好。想了想核心的问题是解决确定性和降低成本(最好没有 LLM 开销),就稍微深挖了 Browser Use 和之前看到的 Playwright 串起来了:Browser Use 使用 LLM 实时解析生成 Playwright 脚本来进行浏览器自动化操作,那我为什么不直接生成确定性的 Playwright 脚本呢?既提升了执行速度也节省了执行成本。
又在某个加班的下午,实现了一版 Playwright,体验非常惊艳。使用了几天之后就想把它变成 CLI,CLI 既适合人类使用也适合 Agent 使用。
Learning: Solve Key Problem First
在实现 Playwright 的时候,发现之前做事情的"毛病":对工程的脚手架很在意,希望搭建好完善的工程、选对合适的依赖管理器和编译工具,理解其原理和熟悉其使用。但是这些都不是核心的问题——核心是要解决自动化操作的问题,而不是工程规范的问题。
就在那一刻脑中想起之前看到的话 “do hard thing first”,给自己启发:先去解决核心问题吧,其他的后面再改也来得及。当然行动的时候会有心智负担,又想了下有 Claude Code 就消除了自己的心智负担——因为会告诉自己只需要和它聊聊,它自己能搞起来,而自己也知道怎么去验证,就行动起来了。实际过程比想象中要简单。
也让自己重新思考了 “do hard thing first” 这句话,对我自己来说其实是先聚焦于核心问题,先去解决核心问题而不是在外围修修补补。给自己一句新的话:
“Solve the key problem first.”
What’s Next
- 用新的方式读代码,理解代码解决的核心问题是什么,作者的思路是什么,具体是如何解决的,哪些是值得学习的
- 之前蛮多公开课对应的 lab 都做到一半就半途而废了,通过 AI 帮自己解决掉非核心的问题,自己再去解决核心的问题