dsh-anysearch-key-mgm
Manifest validDSH settings gains a new page, "AnySearch KEY": register multiple AnySearch API keys (with notes), and a single click switches the anysearch plugin to that KEY — it writes the credentials to ANYSEARCH_API_KEY, parses them in sequence, and the switch takes effect immediately, no need to restart dsh.
dsh-anysearch-key-mgm
DSH 设置里多一页 AnySearch KEY:登记多个 AnySearch API KEY(带备注),点一下就把它写进凭据
ANYSEARCH_API_KEY —— anysearch 插件每次操作都重新解析凭据,所以切换立即生效,不用重启 dsh。
给 @anysearch/anysearch-dsh 配的一个小面板:
换 KEY 不用改 .credentials.yaml、不用重启、也不会把完整 KEY 暴露在浏览器里。
装
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 会热重载该插件。
用
设置 → 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,原子替换(tmp + rename)。 - 生效值:由 DSH 凭据服务管,落在
~/.dsh/.credentials.yaml的ANYSEARCH_API_KEY。 - 完整 KEY 永不出 HTTP 面:
GET /api/anysearch-key-mgm/keys只回as_sk_…4572这种掩码。
配置
cordis.patch.yml 里只有一个键:
- 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)。
实现要点
- 宿主
index.js:ctx.inject(['webServer','credentials'], ...),webServer.register({kind:'prefix', path:'/api/anysearch-key-mgm'})。请求先过同源栅栏(Host 必须回环、sec-fetch-site: cross-site拒、 origin/referer 的 scheme/host/port 必须与 Host 一致),再按POST body.action分派add | activate | remove | rename | import。 - 客户端
client.js:手写window.__ModuleLoader__.load({id, factory})bundle,inject = ['slots','locale'], 注册settings.section(id: 'anysearch-key-mgm',order: 39,紧跟 adg-settings 的 38)。 除 shell 已提供的react外零依赖,颜色全部走--dsw-alias-*主题变量。 - 没有 agent 工具、没有后台任务、不监听文件。
自测
node test/host.smoke.mjs # 宿主:假 credentials + 假 webServer,11 条用例
node test/client.smoke.mjs # 客户端:stub react/locale/slots,校验注册与字典
两个脚本都只碰临时目录(os.tmpdir()),不读写真实凭据与真实名单文件。
License
MIT
Comments
Loading…
Similar plugins
by VinciBeans
AnySearch-backed WebSearchProvider for DeepSeek Harness (dsh): switch web_search between the official DeepSeek search endpoint and AnySearch from a Plugins settings card.
★ 0
MIT
TypeScript
Sep 30, 2026
dsh plugin --profile web add @wenqi_bian/dsh-web-search-anysearchby uluckystar
DSH 插件市场:在设置页浏览 mydsh.dev 插件大全(5596 候选 / 3656 有效),分类/AI 搜索、一键安装启用停用卸载、安全评估与自动重启。非官方社区 mydsh.dev 出品
★ 3
↓ 400/wk
MIT
JavaScript
Oct 20, 2026
dsh plugin --profile web add dsh-plugin-marketby Rycbartbad
Manage multiple API keys per provider in Settings → API 密钥: keep a pool of keys with notes, switch the active key with one click, and the switch really takes effect on the next model call.
★ 0
MIT
JavaScript
Aug 30, 2026
dsh plugin --profile web add @rycbartbad/dsh-key-managerby v587d
A DSH sidebar plugin that shows AnySearch references as cards, with the search query, source snippets and highlighted keywords in the right sidebar.一个 DSH 侧边栏插件,把 AnySearch 的搜索结果以卡片形式展示在右侧侧边栏中,包括搜索词、来
★ 3
TypeScript
Aug 27, 2026
dsh plugin --profile web add dsh-anysearch-refsby fan56
AnySearch web search provider plugin for DeepSeek Harness (dsh) — zero-config, out-of-the-box
★ 0
MIT
JavaScript
Oct 17, 2026
dsh plugin --profile web add @aiwayds/dsh-web-search-anysearchAnySearch-backed search tools for agents: general and vertical-domain search, parallel batch queries, vertical-domain capability discovery, and page-to-Markdown extraction, plus an API key panel in Se
★ 0
dsh plugin --profile web add @zhitiaojun/dsh-anysearch