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