前言¶
在 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。
- 仓库:ADkun/dsh-anysearch-key-mgm
- 目录页:SkillHub 插件页
- 许可证:MIT(见仓库 README)
- 运行环境:Node.js
>=22(见package.json的engines)
核心功能¶
下面介绍设置页与后端行为,均来自仓库 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)与之一致。
典型用法¶
- 按上一节完成安装并刷新浏览器,打开 设置 → AnySearch KEY。
- 若凭据里已有 KEY,可点 收入当前生效的 KEY,把它纳入名单。
- 用 添加 KEY 登记备注与新 KEY。
- 在名单中选一条,点 切换到此 KEY;无需重启 dsh,后续 anysearch 调用会使用新值。
- 不再需要某条时 删除;注意删除当前生效项时的回退规则(见上文「删除」)。
仓库提供仅使用临时目录的自测脚本(不读写真实凭据与名单):
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