DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Wigolo — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@tianjiqx/dsh-wigolo

Wigolo

为 dsh 提供完整的 wigolo 集成:支持可配置接管的 WebSearch/WebFetch 提供商、7 个 wigolo_* 智能体工具(search/crawl/extract/research/find_similar/cache/watch)、侧边栏配置面板,以及由 cordis 管理的提供商路由。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @tianjiqx/dsh-wigolo@1.3.0
README兼容性版本

兼容性与来源证明

Wigolo 以 @tianjiqx/dsh-wigolo 发布,当前版本为 1.3.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/23

版本

1.3.0stable
2026/9/23

相关插件

正在加载相关插件…

最新版
1.3.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
783.5 kB
文件数
67
Surface
web
许可证
Apache-2.0
发布源
npm
GitHub
★ 2
周下载
0
最近提交
2026/9/23
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 search-research 分类下经过校验的插件。

Browser Skill Dsh Plugin@wxg-prc-cpg/browser-skill-dsh-plugin向模型提供 BrowserSkill 浏览器自动化(browser_* 工具)的 DeepSeek Harness 工具插件Weknora@wxg-prc-cpg/dsh-weknora适用于 DeepSeek Harness (dsh) 的 WeKnora 知识检索工具:通过自有知识库进行语义搜索、文档阅读以及 RAG/代理回答。Find Plugindsh-find-plugin在代理中查找 DeepSeek Harness 插件——实时搜索 GitHub 上的 dsh-plugin 主题,并按星标数排序。Builtin Browserdsh-builtin-browserDeepSeek Harness 的共享真实浏览器插件:安装即用——可由人类接管的可见原生浏览器,由代理通过 CDP 驱动。支持 DOM 级交互(React/Vue 安全)、按任务隔离会话、Cookie 持久化(browser_auth)、CAPTC

README

dsh-wigolo

中文文档

Self-hosted web search for DSH (DeepSeek Harness). This plugin integrates a privately deployed wigolo meta-search daemon into DSH, replacing the built-in web search with your own self-hosted search infrastructure — full control over search engines, caching, and data privacy.

Core purpose: Proxy and replace DSH's built-in web_search / web_fetch with a self-hosted wigolo daemon. One toggle switches all agent web searches to your private deployment — no cloud dependencies, no API keys, zero cost per query.

dsh web GUI ── sidebar panel ── /api/dsh-wigolo/* ──┐
                                                     │
agent tools (wigolo_search, …) ── MCP streamable-http ──► wigolo daemon
web seam (web_search / web_fetch) ───────────────────┘   18+ engines · RRF · local cache

Features

  • Agent-first design — seven tools (wigolo_search, wigolo_crawl, wigolo_extract, wigolo_research, wigolo_find_similar, wigolo_cache, wigolo_watch) expose trimmed, model-friendly parameter surfaces. Write operations stay agent-only; read-only cache/watch browsing also lives in an opt-in "Wigolo Cache" conversation tab (off by default).
  • Provider takeover, configurable — route the official web_search / web_fetch through wigolo with one switch (on = wigolo drives both, off = official providers), toggled from the GUI with automatic cordis routing management.
  • Official settings integration — enabled, announceToAgent, and guidance override live in the official DSH settings UI (dsh-ssh pattern). Hot-reload: change settings, no restart needed.
  • Sidebar panel (React, i18n) — four tabs: Connection (live test + latency), Takeover & Tools, About, and Help (bundled usage guide rendered in-panel). Connection settings with live test + latency, takeover switch, tool exposure flags, and the cache-tab toggle, all loopback-fenced. Token can be written directly from the panel (no terminal required).
  • Hot-reconfigure — connection and token edits take effect immediately (MCP client hot-reconfigured); only the takeover switch and tool exposure changes need a restart.
  • Fail-loud config validation — unknown config keys trigger warnings with "did you mean?" hints instead of being silently dropped.
  • Secret-safe by construction — the token lives in its own 0600 file, never in the config JSON, never returned to the browser.
  • Timezone-aware cache timestamps — wigolo daemon stores timestamps in zone-less UTC; the plugin converts them to your configured timezone (local, numeric offset like +8, or IANA name like Asia/Shanghai) so wigolo_cache results display in your local time.

Prerequisites

A running wigolo daemon (v0.2+), reachable over HTTP with a bearer token. Local (127.0.0.1:3333) is the default and needs zero extra setup.

Install

From npm

dsh plugin --profile web add @tianjiqx/dsh-wigolo

From GitHub

dsh plugin --profile web add github:tianjiqx/dsh-wigolo

Both methods install the plugin and automatically register it in the profile's bundle list (via the plugin's bundled cordis.patch.yml). No manual editing required.

Local development (link mode)

git clone https://github.com/tianjiqx/dsh-wigolo.git
cd dsh-wigolo
pnpm install
pnpm build
dsh plugin --profile web add link:$PWD

This clones the repo, builds it, and registers the plugin in the profile's bundle list automatically via link: (no manual cordis.patch.yml editing needed).

Post-install

Put your daemon token into ~/.dsh/wigolo-token (first line, 0600):

echo "YOUR_TOKEN" > ~/.dsh/wigolo-token && chmod 600 ~/.dsh/wigolo-token

Restart dsh, open the Wigolo entry in the sidebar, and hit Test connection.

Uninstall

dsh plugin --profile web remove @tianjiqx/dsh-wigolo

This removes the plugin and its bundle registration. The token file ~/.dsh/wigolo-token and config ~/.dsh/wigolo.json are preserved (delete manually if desired).

For detailed usage scenarios and examples, see the Usage Guide (中文).

Configuration

Via GUI (recommended)

All settings can be configured through the Wigolo sidebar panel (click the Wigolo icon in the sidebar):

  • Connection tab: Host, port, token, hostHeader, test connection
  • Takeover & Tools tab: Takeover switch, tool enable/disable, cache tab toggle
  • About tab: Version info, documentation links

Changes take effect immediately (hot-reload), except for the takeover switch which requires a restart.

Manual configuration file

For advanced settings not exposed in the UI (e.g., per-tool defaults, timeout overrides), edit ~/.dsh/wigolo.json directly:

{
  "version": 2,
  "connection": {
    "host": "127.0.0.1",       // daemon address
    "port": 3333,
    "hostHeader": "auto",       // auto | none | "<literal>"
    "tokenFile": ""             // "" = ~/.dsh/wigolo-token
  },
  "takeover": false,            // true = wigolo drives web_search + web_fetch; false = official providers
  "tools": {
    "wigolo_search":  { "enabled": true,  "defaults": { "max_results": 10, "search_depth": "balanced" } },
    "wigolo_crawl":   { "enabled": true,  "defaults": { "max_pages": 50 }, "timeoutMs": 300000 },
    "wigolo_extract": { "enabled": true },
    "wigolo_research":{ "enabled": true,  "timeoutMs": 600000 },
    "wigolo_find_similar": { "enabled": false },
    "wigolo_cache":   { "enabled": true },
    "wigolo_watch":   { "enabled": true }
  },
  "cacheTab": { "enabled": false },   // "Wigolo Cache" read-only GUI tab (default off; hot-apply)
  "announceToAgent": true,
  "timezone": "local"               // cache timestamp timezone: "local" | "+8" | "-5" | "+5.5" | "Asia/Shanghai"
}

Per-tool defaults merge under the model's explicit arguments (the model always wins); timeoutMs overrides the built-in per-tool budget.

Takeover switch

takeover is a simple boolean:

Valueweb_searchweb_fetchNotes
truewigolowigolofull replacement
falseofficialofficialwigolo_* tools only (default)

Why a switch at all: when several providers register into the web seam and none is explicitly routed, web_search fails with WEB_PROVIDER_AMBIGUOUS. Takeover on (true) therefore also writes a self-managed block into ~/.dsh/cordis.patch.yml (searchProvider: wigolo, dsh-skin-style managed markers); takeover off (false) removes it and registers nothing, so it coexists safely with the official provider. Routing changes need a dsh restart — the panel tells you when.

Timezone

The wigolo daemon persists cache timestamps as zone-less UTC ("YYYY-MM-DD HH:MM:SS"). The plugin converts them to the configured timezone before returning to the agent or rendering in the UI.

ValueExampleDescription
"local""local"Use the DSH host's system timezone (default)
Numeric offset"+8", "-5", "+5.5"Fixed offset from UTC; supports half-hour zones
IANA name"Asia/Shanghai", "America/New_York"Full timezone with DST rules

Changes to timezone take effect after a dsh restart.

The Host header, explained

wigolo guards against DNS-rebinding by allowlisting Host values: localhost, the loopback literals, and its own bind host. Two consequences:

  • A daemon bound to 0.0.0.0 on a LAN machine accepts requests whose Host header is 0.0.0.0.
  • fetch() refuses to set Host (Fetch spec), so the plugin uses node:http, which allows it.

hostHeader: "auto" (default) sends no custom header for local daemons and the bind-host trick for remote ones. Set a literal only if your deployment needs it.

Agent tools

ToolWigolo capabilityHighlightsTimeout
wigolo_searchsearchcategory / time_range / domain filters / depth tiers / "a | b" multi-variant queries60s
wigolo_crawlcrawlsite crawl with patterns, strategy, page caps; every page lands in the cache300s
wigolo_extractextractCSS selector or field-schema structured extraction60s
wigolo_researchresearchdecomposes, searches in parallel, synthesizes a cited report600s
wigolo_find_similarfind_similarrelated content from URL or concept (default off)120s
wigolo_cachecachesearch the local cache before hitting the network; stats / clear30s
wigolo_watchwatchpersistent URL change monitoring; pair with a scheduled agent task for notifications120s

All timeouts are configurable per tool via timeoutMs in the config.

Security notes

  • Panel routes are loopback-only (remote address + Host + sec-fetch-site + origin checks) — they read/write private config and must never be served to LAN-exposed deployments.
  • The token sits in ~/.dsh/wigolo-token (0600); API responses never include it.
  • wigolo_cache clear is destructive; the tool description tells the model to confirm first.

Development

pnpm install
pnpm test          # vitest (61 tests)
pnpm typecheck     # tsc --noEmit
pnpm build         # lib/index.mjs + lib/client.js (CSS inlined)
node test/smoke-real-daemon.mjs   # manual smoke against a live daemon

License

Apache-2.0