ESC
开源 1 分钟阅读

开发者工具必须开源

文章论证了开发者工具开源的重要性,结合AI代理后,软件个性化定制的门槛大幅降低,使得单个用户或小团队能轻松修改软件以适应需求,而无需传统的插件系统或配置文件,这可能改变开发者工具生态。

来源:Hacker News

核心在于认识到,代理不仅能为特定用途编写代码,还能自动管理与上游发布同步更改的过程。这意味着代理同时从两个方面改变了定制软件的ROI:入门个性化更容易,持续定制也更容易。

上述两个编辑软件的提示最令人惊讶之处在于,你可以直接将它们内置到代理中。只要代理是开源的,甚至不需要编程。这两个提示可以被加载到技能中(即一些文本指令),放在代理可发现的地方。我们已将此内置到Shelley中,因此现在如果你想编辑Shelley,甚至不需要前言或配置计时器。它会为你处理。你可以输入像“让Shelley的界面高对比度”这样的提示,你就个性化了你的代理。

我有一个个人项目,过去一个月一直在随意摆弄:meat.dev。其原理是,虽然代理编写代码,但在推送到我们的关键系统之前,我仍然会先阅读它。随着底层模型的改进,我关注的内容发生了变化。我花了二十年审查代码的人类同事总是纠结于边缘情况:错误是否报告有用信息;是否处理了空值检查等(我们都这样;写代码时,我是最糟糕的之一)。作为审查者,我的角色之一就是关注这些细节。过去六个月,我发现我不再需要阅读这些边缘情况:模型在机械正确性上远比人类更勤奋。它们的错误局限于架构、意外用例、测试环境未反馈的视觉输出等。这意味着我审查的大多数代码行不太有用。因此,我写了一个工具,它获取差异并使用LLM删除不重要的部分。我几乎不再需要查看导入块、空值检查或错误处理,所以让它们从屏幕上消失,这样我就可以专注于核心内容。

我喜欢这个工具,但它有两个缺点:首先,我喜欢在Shelley中用好的UI读取差异,而不是在终端中;其次,LLM消化和最小化差异需要几分钟,而我不想等待。所以理想情况下,我不会在命令行运行meat,而是将它内置到Shelley中,并在提交创建时立即进行预处理。事实上,我可以用单个提示做到这一点:

请将meat.dev构建到Shelley中。安装最新版本到PATH。当Shelley创建git提交时,在后台启动meat处理提交。在Shelley的Diffs视图中为meat添加一个切换按钮。如果提交仍在处理中,告知用户它正在处理。

这个单一提示不仅将meat添加到Shelley中,还在我回来会话审查差异之前,在后台预处理提交,从而为我节省了等待模型减少差异的时间。模型做出的唯一不幸选择是使用🥩表情符号作为切换按钮。

想象一下,试图将其插入VS Code扩展API的复杂痛苦!或者试图将其放入vimdiff。这当然是可能的,但启动提交出现时立即预处理的机制几乎不可能实现。我最好实现一个带外的meatd,监听文件系统并为meat工具提供缓存,供定制API使用,因为扩展和配置的点形态不对。

这就是经典配置/定制与代理驱动个性化之间的根本区别:你可以做更多。代理将承担理解源代码并根据你心中的特定任务进行更改的艰巨工作。我们使用的软件通过个性化变得更加强大。你只需要源代码。

代理前的开发成本意味着复杂软件附带大型配置文件、扩展系统和插件系统是合理的。即使像Vim这样中等规模项目的核心代码也是庞大而怪异的,需要人类数周才能消化。想到工程师在想要默认打印行号时,会学习代码库并为自己添加,这是不合理的。最好设计为与他人共享,这通过分摊给许多用户来证明实现费用的合理性。随着代码库功能的增长,寻找可以扩展或插件系统的共同抽象是有意义的。

现在,学习代码和进行更改的费用急剧下降。代理承担了繁重的工作。对于单个用户——这意味着程序运行的条件极其有限——顶级代理通常现在可以在一次尝试中添加功能。对于单用户软件,仔细代码审查的需求通常可以替换为“它似乎能工作吗?”

结果是,可以个性化的软件不需要插件系统或配置文件。想在文本编辑器中更改字体大小?给代理源代码并告诉它。如果它是硬编码值,它会找到并编辑它。如果是硬编码的位图字体,它会下载另一个并替换,或者使用Monobit为你制作一个!你拥有令人难以置信的能力。

个人软件也适用于小团队。为什么工程团队会购买一个极其可配置的任务管理器(或CMS或CRM),花时间学习和配置它,并按照其限制扭曲团队,而不是从常见构建块组装他们想要的功能?