Ditto Python 的开发笔记

在AI的帮助下, 自己开发了一个剪切板工具, 完全按照自己的设想设计. 没想到还真做成了, 也算得上流畅丝滑. 没想到python和tkinter也是很强悍的. 有了它, 我管理剪贴板也能行云流水了. 以前一直是Ditto的用户, 但是它慢了, ui设计的也很违和. 不过纪念它过去也帮助我很多, 所以我将我的这个新工具也用它的名字.

下面是我开发过程中的一些心得. 记录这里为了以后复用.

AI IDE的一些概念

rules, workflows, skills… 听上去挺玄乎, 但其实本质是用户约束模型的方法, 像是给一匹野马套上缰绳.

在antigravity中, 调用它们的方式形而上的总结, 只有两种: 一种是让AI自行决定何时调用; 另一种是人来决定, 可以确定性的执行.

其实实践用起来, 它们并没有明显的边界, 总的来说, rules类倾向于默认调用(但项目的rules就有更多的启用选择), 而skill则默认调用全部, ai自行判断何时要读取其完整信息. workflow则倾向于手动调用(尽管也有一些ai调用的方式)

AI时代需要转换一下概念, 不再有特别的确定性, 包括这些AI的约束, 没有哪个是确定能导入的, 也不保证导入了就确定能执行的. 比如我设置的rules, 短短5行, 但它还是会经常忽略我的约束.

有用的rules

我了解甚至rules还可以设定sub agent的上下文token. 如: 在调用子代理时,必须严格将上下文窗口限制在 80,000 个 token 以内。

和之前一切设置都有固定的语法不同, AI时代的设置可能就很口语化了.

tkinter 一点也不弱

我只会python, 看到很多资料说tkinter只是玩具. 我第一次用它编自己需要的工具, 开始也不知道如何调优. 但一边写, 一边学, 了解到了它也是挺强大的.

这些优雅的组合起来, 足以制作一个匹配windows原生的GUI界面.

一些我不是很懂, 但是AI却很懂的术语

很多时候描述一堆, 不如精准的给它一个业界术语. 下面是我在开发中用到的一些术语, 我也是边学边查. 当我发现老要啰嗦一堆让它明白某种特定的需求时, 问问AI, 它往往都有对应的高概念的术语.

让AI能懂的布局术语

Ditto Python的逻辑不大一样, 是下面其中之一. 我一直称呼它为第一种.

让小模型稳定

你是一位资深的系统架构师,正在负责一项代码重构任务。在开始修改前,你必须遵循严谨的分析流程,以确保对现有代码有100%的掌控。

请严格按照以下步骤执行:

1.  **全局审视**:首先,全面了解当前功能的全链路代码,从数据输入、处理到输出的每一个环节。
2.  **链路追踪**:深入追踪目标数据的完整生命周期。依次检查并列出涉及的对象或者函数:
    *   **数据写入点**:在哪些地方向系统写入了该数据?
    *   **数据处理点**:在哪些模块中使用和处理了该数据?
    *   **数据读取点**:在哪些地方从系统中读取了该数据?
3.  **掌握全貌**:在完成以上分析后,你必须确认已经完整掌握了该数据的“全生命周期”和“全链路”。
4.  **开始实施**:只有在你明确声明“我已经完全掌握了整个数据链路”之后,才可以开始按照既定的Mini Plan分步实施修改。

现在,请开始第一步,深入理解当前的代码。   

让AI帮助解耦代码

可以先让ai列出代码中的‘大泥球’函数, 或者直白的说将行数超过50的函数和嵌套超过3层的列出来.

然后让它考虑安全性和解耦难易度将解耦过程分为3-5步. 让它同时列出每一步完成后, 需要手动测试的部分.

最后一步一步让它解耦, 并每步结束后按照它的指引手动测试. 没有问题后再进行下一步.

让模型做一些琐事

逆向测试: 给AI的围墙

测试用例直观的是为了保证逻辑无错误. 但也可以逆向测试, 专门测试bug是不是出现了:

之后在任何时候都可以在项目目录中 pytest 运行这些以前导致bug的测试. 看看哪个又复现了.

如果说rules, workflows, skills 是AI的缰绳, 那么测试就是AI的围墙.

规则 和 智慧

AI的智慧来自于压缩, 而AI编程的质量是来自于合理的约束. 得当的约束会产生更高质量的代码. 正所谓:

“文明来自于压抑”