dsh-d1:Cloudflare D1 工具集

前言

DeepSeek Harness (DSH) 的核心设计理念是“一切皆插件”,通过加载不同的能力模块来扩展智能体的功能。Cloudflare D1 是基于 SQLite 的无服务器数据库,它通过 REST API 访问,没有传统的 TCP Socket。现有的 dsh-sql 插件无法直接连接 D1。dsh-d1 专为解决这一问题而生,它直接通过 D1 的 HTTP API 与数据库交互,为 Harness Agent 提供了一组独立的工具。

插件介绍

dsh-d1 是 Cloudflare D1 的管理工具集,归属于“联网工具”类别,由开发者 cndn 维护。该插件以只读模式为默认策略,旨在让智能体在安全的前提下查询 D1 数据库,仅在明确配置并获取审批后才能执行写入操作。它没有运行时依赖,安装后即可使用。

核心功能

插件注册了六个工具,涵盖了从数据库探测、只读查询、表结构查看到统计信息获取的全过程。

  • d1_list:列出已配置的数据库,并探测每个数据库的连通性。
  • d1_query:执行只读语句。支持 SELECT、VALUES、WITH、PRAGMA(仅限 introspection)和 EXPLAIN。支持参数绑定,结果集受 maxRows 限制。
  • d1_exec:执行写入或 DDL 语句。在默认配置下被拒绝,需显式开启写入权限并通过交互式审批。
  • d1_schema:列出用户表,或通过 PRAGMA table_info 描述指定表的列结构。
  • d1_stats:获取表数量、每表行数(批处理)以及数据库大小。
  • d1_health:探测所有数据库并打印安全配置及任何配置错误。

安装与配置

插件通过 npm 安装。由于 DSH 的 profile 目录通常作为 pnpm workspace 根目录,安装时需要使用 -w 参数。

dsh plugin --profile web add -w dsh-d1

安装后,插件会自动在 profile 中插入配置行,但 API Token 不会写入其中。你需要通过 cordis.patch.yml 覆盖配置,指定 Cloudflare 的 accountId 以及要连接的 databases 列表。

- id: d1
  name: 'dsh-d1'
  config:
    accountId: 'your-32-hex-cloudflare-account-id'
    databases:
      - name: prod
        databaseId: 00000000-0000-0000-0000-000000000000
      - name: analytics
        databaseId: 11111111-1111-1111-1111-111111111111
    maxRows: 1000
    readOnly: true
    writeApproval: true
    queryTimeoutMs: 60000
    execTimeoutMs: 120000

安全与限制

dsh-d1 在安全上采取了双层防护。

首先,API Token 环境隔离。Cloudflare 的 API Token 必须通过环境变量传入,插件在运行时读取,绝不存储在配置文件或日志中。支持全局令牌 (CLOUDFLARE_API_TOKEN) 或针对特定数据库的令牌 (DSH_D1_TOKEN_<NAME>)。

其次,默认只读与审批机制。默认情况下 readOnly: true,d1_exec 会被拒绝。即使设置为 false,默认的 writeApproval: true 也会将所有写入操作推送到 DSH 的审批服务,要求交互确认。

此外,d1_query 使用了词法防护。在剥离注释和字符串后,只允许执行特定的只读语句。这防止了意外写入,且不依赖关键字黑名单。错误信息会自动脱敏,移除 Token、请求头和路径中的敏感信息。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜