dsh-plugin
Đã xác minh@youdotcom-oss/dsh-plugin · v0.2.1 · MIT
You.com agent skills, MCP setup, and web search/fetch providers for DeepSeek Harness (dsh)
Cài đặt
dsh plugin add @youdotcom-oss/dsh-plugin Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.
Mã nguồn
Thẻ
Readme
@youdotcom-oss/dsh-plugin
You.com agent skills, MCP setup, and web_search provider for DeepSeek Harness (dsh).
With no API key, you get a working web_search tool (keyless, anonymous MCP), the three bundled skills (you-research, you-finance, you-discover), and the no-auth you-discover MCP server's tools. With YDC_API_KEY set, the keyed MCP servers and the keyed search provider activate.
Why
This package integrates You.com into dsh at two levels:
- Web search/fetch providers register You.com as the backend for
dsh's nativeweb_searchandweb_fetchtools — "search the web" returns You.com results automatically, with typed, citable sources and a keyless fallback. - MCP servers expose You.com's broader tool surface to the model directly, and back the bundled skills.
The providers are the core integration: they turn web_search itself into You.com. The MCP servers cover the wider toolkit the skills call on.
Install
dsh plugin --profile <your-profile> add @youdotcom-oss/dsh-plugin
The bundle ships cordis.patch.yml and declares it in package.json's dsh.bundle.patch, so the loader applies it automatically when the bundle is in your profile's dsh.profile.bundles. You only need to add @youdotcom-oss/dsh-plugin to the bundle list — no manual patch required.
To override or extend the patch, drop the same rows into your profile's cordis.patch.yml (applied after every bundle layer).
Set YDC_API_KEY in the environment for the authenticated servers (get one at you.com/platform/api-keys). The keyless servers work without it.
What it configures
- Skills from
./skills:you-research,you-finance, andyou-discover, registered under theyoucomskill provider name.you-webis excluded at build time: it teaches the MCP tool namesyou-search/you-contents, which don't exist here (the keyedyouMCP server is not mounted — its search/fetch tools duplicate the nativeweb_search/web_fetchproviders). - MCP server
you-discover: no-auth discovery (profile=discover) - MCP server
you-finance: finance tools - MCP server
you-research: one-shot cited research synthesis - MCP server
you-docs: You.com docs search - Web search provider: registers into
ctx.weband is pinned by the shipped patch assearchProvider: youcom(keyless path; keyed path activates whenYDC_API_KEYis present)
The MCP servers provide the tools. The skills explain when and how to use them safely.
Configuration
The plugin takes an optional config. Every field defaults when omitted, so the shipped bundle patch needs no config. Set fields on the youcom-skills row in your profile's cordis.patch.yml:
- id: youcom-skills
config:
apiKey: sk-…
numResults: 10
includeNews: false
| Field | Type | Default | Meaning |
|---|---|---|---|
apiKey |
string | $YDC_API_KEY |
You.com API key. An explicit value wins over the launch environment's YDC_API_KEY, which wins over $YDC_API_KEY. Empty enables the keyless search fallback and disables fetch. |
baseURL |
string | https://ydc-index.io |
Base endpoint for /v1/search and /v1/contents. A path prefix (for a proxy) is preserved. |
freeSearchURL |
string | https://api.you.com/mcp?profile=free |
Keyless MCP endpoint used when apiKey is empty. No fetch equivalent exists. |
numResults |
number | server default | Default result count when a request carries no maxResults. |
includeNews |
boolean | true |
Merge results.news[] into search sources alongside results.web[]. |
knowledge |
core |
off | Request licensed knowledge results alongside web and news, surfaced as the search result's answer content with data-provider credits appended. Only core is accepted. |
Auth
you-discoverandyou-docsdo not require$YDC_API_KEY.you-financeandyou-researchsendAuthorization: Bearer $YDC_API_KEYwhen the variable is set. An authenticated server with no key still mounts —failOnStartupError: falsedegrades a failed connection to zero tools from that server rather than blocking the rest of the profile.- Search and page contents go through the native
web_search/web_fetchtools (provider-backed), not through mounted MCP tools — there is no duplicate search surface. - The keyed search path activates when
YDC_API_KEYis present; without it, the keyless free MCP profile handlesweb_search. The keyedfetchProvider(youcom) is opt-in — seecordis.patch.ymlfor how to addfetchProvider: youcomto thewebrow'sconfig(note: patchconfigis a whole-row replacement; restatefetchProvider: httpunless you intend to change it).
Requirements
DeepSeek Harness is in developer preview and ships cordis / dsh-mcp-client / dsh-skill / dsh-skill-filesystem / dsh-web as separate peer dependencies. The peer-dep ranges in package.json track dsh's prerelease line accordingly. The composition must already have @deepseek-ai/dsh-skill, @deepseek-ai/dsh-mcp-client, and @deepseek-ai/dsh-web loaded — every shipped dsh profile does.
The keyless search path sends a bare
tools/call(noinitializehandshake) to theyou-searchtool on the anonymous MCP server, relying on observed rather than documented server behavior. If the upstream ever starts requiring aninitializeround-trip, the keyless path will need a small session-cache layer. The keyed path uses the regular You.com HTTP API and is unaffected.
Test
bun test