用户说一句“I saw 4 pelicans flying over the harbor”,datasette-agent 0.3a0 可以把它变成一条写库操作:向 pelican_sightings 表插入 4 只鹈鹕的目击记录。
有意思的地方不在“自然语言变 SQL”。这件事很多工具已经能做。真正的变化是:LLM 开始碰数据库写入,但默认仍要用户确认,并且会考虑当前用户权限。
这条边界很敏感。查错了,最多是答案错;写错了,数据就变了。对使用 Datasette 的开发者,或者正在评估 AI 数据库助手的工程团队,这个版本最该看的不是炫技,而是确认权放在哪里。
核心变化:LLM 可以提写入,但默认不能直接落库
datasette-agent 0.3a0 新增了 execute_write_sql 工具。它的作用很直接:请求用户批准,然后对数据库执行写 SQL,同时纳入用户权限判断。
发布示例里,用户输入一句自然语言:“I saw 4 pelicans flying over the harbor”。系统生成一条 INSERT,把数量 4 和备注写入 pelican_sightings 表。
确认界面会展示数据库、SQL、参数、涉及的表,以及所需权限。用户看到这些信息后,再决定 Yes 或 No。
这比“模型自动改数据库”克制得多。LLM 在这里更像一个会写 SQL 的操作员,真正的落库按钮还在人手里。
| 变化点 | 0.3a0 的做法 | 对使用者的影响 |
|---|---|---|
| 写库能力 | 新增 execute_write_sql | 可由自然语言触发插入等写操作 |
| 默认边界 | 写入前请求用户确认 | 不等于模型无条件改库 |
| 权限处理 | 写操作会考虑用户权限 | 仍需要配置好权限体系 |
| 示例场景 | 插入 4 只鹈鹕目击记录到 pelican_sightings | 适合小型录入、内部工具、演示流程 |
我更在意的是这个分工:模型负责生成候选操作,人负责确认风险。
这很朴素,但重要。数据库不是聊天记录。它有约束、关联、权限和后续业务流程。一条看似普通的写入,可能会影响后面的查询、报表或自动化任务。
所以,0.3a0 的价值不是让 LLM “更自由”,而是让它在可见、可拒绝、受权限约束的条件下做更多事。
CLI 也能审批,--unsafe 不是默认省事按钮
datasette agent chat 终端模式也被扩展了。它现在可以执行需要用户批准的工具,并新增三个选项:--root、--yes、--unsafe。
这几个参数要分清楚。
| 参数 | 含义 | 风险判断 |
|---|---|---|
--root | 以 root 身份运行 | 权限更大,误操作影响更大 |
--yes | 自动批准所有询问用户的问题 | 省掉确认,也省掉人工刹车 |
--unsafe | 等于 --root 加自动批准 | 便利性最高,风险也最高 |
发布信息给出的命令是:
datasette agent chat content.db -m gpt-5.5 --unsafe
在这个模式下,用户可以直接通过提示词修改指定数据库,比如 “create a notes table”,或者 “add a note about X”。
这对本地开发很顺手。临时整理一个 SQLite 数据库,建个 notes 表,补几条记录,用 CLI 直接聊数据库,比来回切工具快。
但 --unsafe 不该被当成推荐默认用法。它绕过了审批,还叠加了 root 权限。放在本地副本、一次性脚本、可丢弃数据上,风险可控;放到重要库或共享环境里,就不是“省事”,而是把刹车拆了。
使用 Datasette 的个人开发者,可以先在本地复制库上试这个流程。团队如果要引入到内部工具,应该先把权限、备份、人工确认策略定下来,再考虑是否允许自动批准。
我不太买账的是把这类能力直接包装成“数据库 Agent 已经成熟”。目前能看到的是一个项目在小心推进写库能力,不是通用数据库代理的标准答案。
接下来要看权限、审计和人能不能看懂 SQL
这个版本最直接影响两类人。
一类是 Datasette 用户。尤其是维护个人数据库、小团队 SQLite 数据库、研究数据集的人。过去要手写 SQL、打开管理界面、确认字段;现在可以先用自然语言生成候选写入,再人工确认。
另一类是做 AI 数据库助手的工程团队。datasette-agent 0.3a0 给了一个清晰信号:从“帮我查”走向“帮我改”,审批界面和权限检查会变成基础设施,而不是附加功能。
但限制也要说清楚。发布信息里没有展示更完整的回滚、审计或生产部署方案。也没有证据说明它已经适合直接接入关键业务库。
现实约束很硬:用户未必看得懂确认卡片里的 SQL;团队未必已经配好细粒度权限;自动批准选项很可能在赶进度时被滥用。
接下来最该观察三件事:
- 写操作失败时,后续语句如何停止,以及用户如何恢复现场。
- 权限能不能细到表、操作类型和具体用户,而不是只靠一个大开关。
- CLI 的
--yes、--unsafe会不会被明确隔离在本地开发和测试环境里。
数据库工具讲究“如履薄冰”。datasette-agent 0.3a0 把 LLM 往前推了一步,但也把老问题摆得更清楚:能做事的 AI,必须先学会被拦住。
