TonyDua/dsh-web-search-exa ↗★ 9
@tonydua/dsh-web-search-exa
集成Exa免密匿名MCP与REST网页搜索 适合需要为DSH配置无需API Key的匿名网页搜索或官方Exa检索服务的用户。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:TonyDua/dsh-web-search-exa说明文档
阅读完整 README ↗Configuration
| Key | Default | Meaning |
|---|---|---|
apiKey | unset | Literal Exa API key. Empty or missing enables the anonymous MCP path. |
apiKeyEnv | EXA_API_KEY | Environment variable read when no literal apiKey is set. |
baseURL | https://api.exa.ai | Exa API base URL. The keyed REST path appends /search, matching the official dsh provider. |
apiURL | unset | Deprecated full REST endpoint alias. Takes precedence over baseURL when set. |
mcpURL | https://mcp.exa.ai/mcp | Exa hosted MCP endpoint, used by the anonymous path. |
searchType | auto | REST retrieval mode: auto, keyword, or neural. |
numResults | unset | Default result count when a request carries no maxResults. |
highlightsPerResult | 1 | Highlight sentences requested per result on the REST path. |
providerId | exa | Provider id registered into ctx.web. Change it only when this package and the official one are installed together, see Coexistence with the official package. |
Where to put the config: edit this plugin's config in $DSH_HOME/profiles/web/cordis.patch.yml, then restart dsh web. The environment variables EXA_API_KEY and $DSH_WEB_SEARCH_PROVIDER work too. apiKey is marked role('secret'), so no describe() response exposes its value.
In the Web panel
In this version the config lives in the profile patch layer, not the Web UI, and there is no editable form. The Settings UI only renders cards that client plugins register by hand for fixed namespaces (shell, agent-loop, web-search-deepseek); it has no generic form for an arbitrary plugin namespace. The current state:
- Plugin inventory (Settings → Plugins): a
web-search-exaentry appears automatically once the plugin is enabled. The inventory reads live entries from the Cordis loader, so no extra code is involved. - Settings namespace (server side): the plugin registers a
web-search-exasection through thectx.settings.installSectionAPI, and the data layer accepts writes. But no client card binds to it, so the UI does not show it. The built-in Web search card edits the officialweb-search-deepseeknamespace, which is unrelated to this plugin. - Search result cards:
web_searchcalls render the usualwebresult cards throughdsh-tool-web(sources, excerpts, dates), regardless of provider. Anonymous Exa results look identical to DeepSeek search results.
Roadmap: the next version adds a client card registered into the settings.plugin.item slot and bound to the web-search-exa namespace, so every field in the table above becomes editable in Settings → Plugins.