dsh-anysearch-key-mgm:在 DSH 设置里管理并切换 AnySearch API KEY

前言

在 DSH 里使用 @anysearch/anysearch-dsh 时,AnySearch 的调用依赖凭据 ANYSEARCH_API_KEY。若只有一把 KEY,直接写在 ~/.dsh/.credentials.yaml 或环境变量里即可;若有多把 KEY(例如不同账号、测试与生产分离),以往往往要手改凭据文件,改完还可能要关心进程是否已读到新值。

社区插件 dsh-anysearch-key-mgm(维护者 ADkun,分类 admin-security)在 DSH 设置中增加一页 AnySearch KEY:把多把 KEY 登记在本地名单里并带备注,在界面点选即可写入凭据服务;anysearch 插件每次操作都会重新解析凭据,因此切换后立即生效,无需重启 dsh。换 KEY 时不必反复编辑 .credentials.yaml,完整 KEY 也不会通过 HTTP 响应暴露给浏览器。

这是什么

dsh-anysearch-key-mgm 是给 @anysearch/anysearch-dsh 配的管理面板:在 Web 设置里单独一页,维护多个 AnySearch API KEY,一键把选中项写成 ANYSEARCH_API_KEY。

核心功能

下面介绍设置页与后端行为,均来自仓库 README。

设置页操作

路径:设置 → AnySearch KEY。

能力 说明
当前生效 显示凭据名、掩码值、来源(file 为本机凭据文件,env 为环境变量兜底)
收入当前生效的 KEY 把凭据里当前这条收进名单,便于在多条 KEY 之间切换
添加 KEY 备注 + KEY(输入框为 password 类型;落盘后 HTTP 面只返回掩码)
切换到此 KEY 调用 credentials.set(ANYSEARCH_API_KEY, 选中值),anysearch 下一次调用即用该值
删除 若删掉的是生效中的条目,会自动落到名单第一条;名单为空时 credentials.unset(),由环境变量重新接管

数据与安全

  • 名单文件:${DSH_PROFILE_DIR || DSH_HOME || ~/.dsh}/anysearch-keys.json,权限 0600,采用临时文件 + rename 的原子替换。
  • 生效值:由 DSH 凭据服务管理,落在 ~/.dsh/.credentials.yaml 的 ANYSEARCH_API_KEY。
  • 完整 KEY 不出 HTTP 面:例如 GET /api/anysearch-key-mgm/keys 只返回类似 as_sk_…4572 的掩码。

宿主在 /api/anysearch-key-mgm 注册 API,请求经同源栅栏(回环 Host、sec-fetch-site: cross-site 拒绝、origin/referer 与 Host 一致)后,按 POST body.action 分派 add | activate | remove | rename | import。插件不提供 agent 工具、无后台任务、不监听文件。

安装与启用

官方 README 给出的安装方式如下(Windows 路径示例;请按本机 DSH 插件目录调整 clone 目标路径)。

git clone https://github.com/ADkun/dsh-anysearch-key-mgm.git D:/dsh/plugins/dsh-anysearch-key-mgm
dsh plugin --profile web add "link:D:/dsh/plugins/dsh-anysearch-key-mgm"

dsh plugin add 会把包名追加进 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles,并链接 node_modules。装完后刷新一次浏览器(设置页的槽位在启动时装配);已运行的 dsh web 会热重载该插件。

配置说明

插件通过 cordis.patch.yml 注入 Cordis 配置,默认只管理名为 ANYSEARCH_API_KEY 的凭据:

- insert:
    - id: dsh-anysearch-key-mgm
      name: dsh-anysearch-key-mgm
      config:
        credentialRef: ANYSEARCH_API_KEY

credentialRef 表示被管理的凭据名。若需改成别的名字,应先确认 anysearch 插件侧的 apiKeyEnv(默认 ANYSEARCH_API_KEY,见 @anysearch/anysearch-dsh 的 lib/index.js)与之一致。

典型用法

  1. 按上一节完成安装并刷新浏览器,打开 设置 → AnySearch KEY。
  2. 若凭据里已有 KEY,可点 收入当前生效的 KEY,把它纳入名单。
  3. 用 添加 KEY 登记备注与新 KEY。
  4. 在名单中选一条,点 切换到此 KEY;无需重启 dsh,后续 anysearch 调用会使用新值。
  5. 不再需要某条时 删除;注意删除当前生效项时的回退规则(见上文「删除」)。

仓库提供仅使用临时目录的自测脚本(不读写真实凭据与名单):

node test/host.smoke.mjs     # 宿主:假 credentials + 假 webServer,11 条用例
node test/client.smoke.mjs   # 客户端:stub react/locale/slots,校验注册与字典

适用场景与注意

适合谁:已在 DSH Web profile 中使用 AnySearch,且需要在多把 API KEY 之间频繁切换、又不想手改 .credentials.yaml 的开发者。

生态说明:DSH 社区插件目录(如 SkillHub)是独立站点,与 DeepSeek / 幻方无官方从属关系;安装第三方插件前请自行审阅源码与 MIT 许可证。插件以当前 dsh 进程权限运行,名单与凭据均落在本机用户目录,请妥善保管 anysearch-keys.json 与 .credentials.yaml。

结尾

dsh-anysearch-key-mgm 把 AnySearch 的多 KEY 管理收敛到设置页的一键切换,并与 DSH 凭据服务、anysearch 的逐次解析行为对齐,避免改文件和重启带来的摩擦。

  • 目录页:https://www.skillhub.cn/plugins/ADkun/dsh-anysearch-key-mgm
  • GitHub:https://github.com/ADkun/dsh-anysearch-key-mgm
羽毛球分组比赛记分
小程序二维码

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

Xiaoye