Simon Willison 发布了 datasette-agent-edit 0.1a0。版本号里的 0.1a0 已经把话说得很清楚:这是早期发布,不是稳定成品。
有意思的地方也在这里。它不是在宣布 Datasette Agent 已经有了完整协同编辑器,而是在做一件更小、更工程化的事:把 LLM 编辑文本时反复用到的几类动作,先抽成插件底座。
我更在意的是这个判断:LLM 改文本的关键,不只是“能生成一段新文字”,而是能不能知道自己在改哪里、怎么改、改失败时怎么停下来。
它要解决的不是一个编辑器,而是一批插件的重复劳动
Willison 提到,他计划为 Datasette Agent 做几个能修改既有文本的插件。例子包括协作式 Markdown 编辑、更新大型 SQL 查询,以及编辑 SVG 文件。
这些场景看起来差别很大。Markdown 关心段落和结构,SQL 关心查询逻辑,SVG 关心标签、坐标和属性。
但落到 LLM 工具调用上,它们会先遇到同一类问题:模型需要查看一段文本,找到要改的位置,再执行替换或插入。
如果每个插件都自己实现一遍,成本不只是多写代码。更麻烦的是失败规则会变散,调试体验也会不一致。
所以 datasette-agent-edit 的价值,不在于它单独能完成多少编辑任务,而在于它把共性动作固定下来,供后面的插件适配。
| 问题 | datasette-agent-edit 的位置 | 对开发者的影响 |
|---|---|---|
| 版本状态 | 0.1a0,早期发布 | 适合试验,不宜直接当成熟能力押注 |
| 产品定位 | Datasette Agent 的基础插件 | 不是完整 IDE,也不是协同编辑产品 |
| 服务对象 | 后续多个可编辑文本插件 | Markdown、SQL、SVG 等场景可复用底层动作 |
| 设计来源 | 参考 Claude text editor | 借鉴公开工具设计,不是 Datasette 的官方通用标准 |
这对普通 Datasette 用户未必马上有感。更直接受影响的是插件开发者。
如果你正在给 Datasette Agent 写编辑类插件,接下来更现实的动作不是立刻宣传“智能编辑上线”,而是先评估:自己的插件能不能把查看、替换、插入这三件事交给 datasette-agent-edit,剩下的业务规则放在上层处理。
三个工具的重点,是让 LLM 编辑有边界
datasette-agent-edit 参考的是 Claude text editor 的工具设计。核心是三类操作:view、str_replace、insert。
这套设计不复杂,但很克制。
| 工具 | 做什么 | 关键限制或意义 |
|---|---|---|
| view | 查看文件片段,并给每行加行号 | 让模型先定位,再决定怎么改 |
| str_replace | 用 new_str 替换 exact old_str | old_str 必须唯一,否则失败 |
| insert | 在指定行号后插入文本 | 把“插到哪里”变成明确参数 |
其中最该看的是 str_replace。
它要求 old_str 必须唯一。也就是说,如果原文里有多处相同片段,替换会失败,而不是随便改一处。
这条规则看起来保守,实际很有用。大型 SQL、长 Markdown 文档、SVG 文件里,重复片段并不少见。模型如果只凭自然语言说“把这一段改掉”,很容易改错位置。
传统 IDE 会用语法树、项目索引、重构规则来处理复杂编辑。datasette-agent-edit 不是这个路线。
它更像给 LLM 几把窄工具:先看,再精确替换,必要时按行插入。能力少一些,但动作更可审计。
这也是它和聊天式编辑的区别。聊天式编辑常见的问题是结果看着像改好了,过程却不可追踪。工具调用把过程拆开,至少能让上层插件知道每一步做了什么。
现在该怎么判断:能试,但别高估
对关注 LLM tool use 的开发者,这个发布值得看。不是因为它已经覆盖了所有文件类型,而是因为它把一个常见模式落到了 Datasette Agent 插件体系里。
更具体一点,相关开发者可以做三件事。
- 如果你在写 Datasette Agent 插件,先看 datasette-agent-edit 的 release 和仓库,判断自己的编辑流程能否复用 view、str_replace、insert。
- 如果你的场景依赖复杂语义,比如 SQL 重写、SVG 结构调整,不要指望底座替你理解业务含义。它解决的是文本操作边界,不是领域正确性。
- 如果你维护的是面向普通用户的编辑体验,暂时不要把它包装成完整协同编辑能力。0.1a0 还不足以支撑这种预期。
这里有一个现实约束:不同文本类型的复杂性,最终还是会回到上层插件。
Markdown 的问题可能是标题层级和链接引用。SQL 的问题可能是查询是否仍然可执行。SVG 的问题可能是标签闭合、坐标关系和视觉结果。
view、str_replace、insert 能提供共同底座,但不会自动解决这些领域问题。小器物有小器物的边界。
接下来最该观察的,不是下载量,也不是用户规模。原始信息没有提供这些数据,硬猜没有意义。
更有判断价值的是两件事:后续 Markdown、SQL、SVG 插件是否真的采用这套底座;当重复片段、格式约束和编辑冲突出现时,datasette-agent-edit 的失败规则是否足够清楚。
如果答案是肯定的,它的意义会超过一个小版本号。它会说明 Datasette Agent 的插件生态开始把“LLM 怎么安全改文本”当成基础设施来处理。
如果没有后续插件跟上,它也仍然留下了一个清醒的工程取舍:先让模型学会不乱改,再谈更聪明的编辑。
