前言
这才是我真正意义上的第一个自己尝试自己玩所做的项目。之前的开发过程很杂碎,而且当时还没有自己的blog,于是就没有记录。今天开发了之前没做的、搁置了很久的内容。在这个过程中,我发现了一个事情——就像上司要和下属对接一样,在vibecoding的过程中,与ai对接也很重要。
本文将讲述我的部分开发心得,是随记所以也许没什么主旨。
正文
https://github.com/mattpocock/skills
如你所见,这是一个很厉害的项目,是一个大神把自己炼成skill的结果。我使用了其中的grill-me的内容,它可以让ai在了解我的需求之后 向我提出尖锐的问题,与我对接。
第一次使用的时候我真的感觉有点紧张,因为我真的感觉被一个严厉的前辈拷打了TwT
引用我们的对话。
*虽然这里对话的目的是完善另外一个项目(Chronos,我后续的文章会讲):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| 我:"我需要制作一个能记录项目投入时间的vsc插件 我称之为chronos。要达到的目标是完善其功能 让其可以显示待机时长、活跃时长、agent运行时长。"
codex:"1. 定义先卡死: 你说的三个时长,精确定义是什么? - `待机时长`:是“VS Code窗口打开但无键鼠输入”还是“系统级无输入”? - `活跃时长`:是“有编辑行为”还是“窗口聚焦+有操作”? - `agent运行时长`:是“发起到完成的墙钟时间”还是“真正执行中的时间(排队不算)”?
2. 事件来源要落地: 你现在能稳定拿到哪些事件?分别来自哪里? - VS Code API(window focus、文本编辑、命令执行) - 终端事件 - 你自己扩展里对 agent 的调用链 hook 没有事件来源就不要谈统计精度。
3. 状态机先设计,不然统计一定错: 请给出状态转移图(最少这几态):`Idle / Active / AgentRunning`。 我要你回答: - AgentRunning 是否覆盖 Active(互斥)?还是并行维度? - 从 Active 到 Idle 的超时阈值多少秒?为什么? - 锁屏、最小化、切工作区、睡眠唤醒怎么处理?
4. 时间模型: 你打算用哪种计时策略? - `tick累加`(每秒+1)还是`事件边界差值`(推荐)? - 如何避免机器休眠后出现巨额脏时长? - 时区和夏令时变化是否影响日汇总?
5. 持久化与口径: - 数据存哪里:`globalState`、本地文件、sqlite? - 统计按“自然日”还是“会话”切分? - 跨窗口/多工作区是否去重? 如果同时开两个窗口,你会不会把活跃时长重复记两份?
6. UI目标别模糊: 你说“显示”,具体在哪显示? - status bar(实时) - webview/dashboard(明细) - command palette(查询) 每个位置展示哪些字段、刷新频率多少?
7. Agent运行时长的真问题: 你的 `agent` 指的是哪个体系? - 仅 Chronos 内置调用 - 还是要覆盖外部插件/CLI agent 如果不是你自己发起的 agent,你凭什么拿到准确开始/结束信号?
8. 验证方案必须可自动化: 给我最小可执行验证: - 用假时钟/可控事件流回放 - 3个关键用例:持续活跃、长时间无操作、agent中途失败 - 断言输出精确到秒,允许误差范围是多少?
9. 失败与回滚: - 统计错了怎么修复历史数据? - 插件升级后数据结构变更怎么迁移? - 一旦采集逻辑异常,是否降级为“只显示不写入”?
10. 现在给你硬约束: 请你先交一版“V1范围”回答,仅包含: 1) 单窗口 2) 本地统计 3) 三时长实时显示+当天累计 4) 不做跨设备同步 你按这个范围重写你的方案(不超过12行)。"
|
这一下解决了我之前所说“对自己的程序不熟悉”的问题。本来是我这个不懂程序的人“外行指导内行”,现在是ai反过来拷打我逼着我熟悉我的代码,这反而更让我有存在感了,写码更有动力了。还是蛮开心的。
在TradeEye的rss订阅开发过程中我也用到了这个办法。我通过这个方法与codex对接,不是单纯的一个指令“帮我实现什么功能”,而是按照一个格式:“已经做了什么-没有做什么-要改动什么-希望能达到什么目标”,这样我的返工就少了很多。
同时 我顺便解决了一个冗余:将dify的工作流直接集成进了项目。(我很喜欢奥卡姆剃刀的理论“如无必要勿增实体。”)当然,奥卡姆剃刀我在日后会展开谈谈——又给自己挖坑了。
结
很简短的一个心得。
是为结。
26/5/19深夜