工具与 MCP
@anionex/dsh-vision-toolkit
将图像问答、OCR、目标定位、裁剪、矢量描摹、像素差异和 HTML 截图等视觉工具及 Skill 集成到 DSH Web 与 Headless;需配置视觉模型提供方,首次运行可能准备 Python 运行时。
工具与 MCP
作者 aaronlei · community
为 DSH 提供可按厂商与协议配置的 Web 搜索工具,支持 Chat Completions、Responses、Anthropic Messages 和独立搜索 API,并将结果整理为引用来源;厂商支持程度不同,部分组合明确受限或未验证。
DeepSeek Harness 插件,分类: 工具与 MCP
运行这条 DSH 插件命令前,请先审阅来源及信任等级。
dsh plugin --profile web add dsh-web-search-diyEnglish · 简体中文
<p align="center"> <a href="https://www.npmjs.com/package/dsh-web-search-diy"><img alt="npm version" src="https://img.shields.io/npm/v/dsh-web-search-diy?style=flat-square&label=npm&color=cb3837"></a> <a href="LICENSE"><img alt="license: MIT" src="https://img.shields.io/npm/l/dsh-web-search-diy?style=flat-square&color=blue"></a> <a href="package.json"><img alt="node >= 18" src="https://img.shields.io/badge/node-%3E%3D18-339933?style=flat-square&logo=nodedotjs&logoColor=white"></a> <a href="#capability-matrix"><img alt="vendors: 7" src="https://img.shields.io/badge/vendors-7-8A2BE2?style=flat-square"></a> <a href="#capability-matrix"><img alt="protocols: 4" src="https://img.shields.io/badge/protocols-4-8A2BE2?style=flat-square"></a> <a href="https://github.com/deepseek-ai/deepseek-harness"><img alt="dsh plugin" src="https://img.shields.io/badge/dsh-plugin-4D6BFE?style=flat-square"></a> </p>A web search provider plugin for the DeepSeek Harness (DSH). It supplies the built-in
web_searchtool per vendor × protocol: three in-protocol shapes (Chat Completions / Responses / Anthropic Messages) plus standalone search, covering DeepSeek, Kimi, Zhipu, Qwen, OpenAI, Anthropic, OpenRouter, and four custom targets. Results are normalized into structured citation sources for the calling model to ground its answer on. The plugin also ships an observability page that records every search and can backfill history from older session logs.
vendor/protocol; v1/v2 files migrate on read and the old file is backed up as .v2.bak before the first save.reasoning.effort / output_config / thinking is dropped one at a time and retried.source.summary (capped at 2,000 characters) and skips it when the original body equals snippet; snippets are capped the same way. The model reads the summary before falling back to the snippet.web_search is no longer offered to the model instead of failing after invocation.node:sqlite with WAL, 0600 permissions, transactional writes and a 50,000-row retention cap. Importing scans $DSH_HOME/sessions for older web_search calls and is idempotent; JSONL/CSV export and a typed-DELETE clear are available.requestTimeoutMs defaults to 25 s (60 s for test connections), and caller cancellation stays distinct from a timeout.Legend: ✅ full (in-protocol search + citable sources); ◐ degraded (searches, but sources or model are limited); ✗ unsupported; ⚙ custom.
| Vendor | Chat Completions | Responses | Anthropic Messages | Standalone search |
|---|---|---|---|---|
| DeepSeek | ✗ | ◐ deepseek-v4-pro only; sources from open_page |
✅ | ✅ /v1/tools/search |
| Kimi | ✗ built-in $web_search retired |
✅ web_search + include |
✗ no server tool in the schema | ✅ /v1/tools/search |
| Zhipu | ✅ web_search tool |
✅ web_search + results[] |
✗ accepts but does not run it | ✅ /paas/v4/web_search |
| Qwen | ◐ enable_search, no sources |
✅ action.sources (url only) |
✅ needs the billing header | ✗ no standalone REST |
| OpenAI | ◐ gpt-5-search-api only |
✅ full filters / include |
✗ no such endpoint | ✗ |
| Anthropic | ✗ | ✗ | ✅ native web_search |
✗ |
| OpenRouter | ✅ openrouter:web_search |
✅ same server tool | ◐ alias, untested | ✗ |
| Custom | ⚙ template + 4 variants | ⚙ template + toolType |
⚙ template + toolType |
⚙ template + 8 mapping fields |
13 full, 4 degraded (OpenRouter Anthropic is pending), 4 custom. Eight
unsupportedentries exist only for the collapsed section and never create a configuration bucket.
Published on npm:
dsh plugin --profile web add dsh-web-search-diy
The bundle patch performs the wiring, so no manual cordis.patch.yml edits are required:
web-search-diy loader entry;web row's searchProvider to diy-search and restates fetchProvider: http (a patch replaces the whole row config);web-search-deepseek provider.For local development, install the checkout as a link:
dsh plugin --profile web add link:./dsh-web-search-diy
The plugin declares the
@deepseek-ai/*hooks aspeerDependencies. Runpnpm installonce in the plugin directory before linking; the harness provides the peers at runtime.
Location: Plugins → Installed plugins → the dsh-web-search-diy card (clicking the card opens this plugin's configuration page). Copy follows Settings → Language (zh, en, ja, es, fr, de, ru, pt).
In-protocol search or Standalone search. Standalone has no model turn, so model and output-budget fields are hidden.search.DEEPSEEK_SEARCH_BASE_URL overrides the endpoint; an explicitly saved Endpoint wins over it.$DSH_HOME/dsh-web-search-diy.json, written by the configuration page:
{
"version": 3,
"vendor": "qwen",
"protocol": "responses",
"targets": {
"qwen/responses": {
"baseURL": "https://maas.qianwenaiapi.com/compatible-mode/v1",
"apiKeyEnv": "QWEN_TOKEN_PLAN_API_KEY",
"model": "qwen3.8-flash",
"maxOutputTokens": 4096,
"toolType": "web_search",
"includeSources": true
},
"custom/search": {
"baseURL": "https://search-gateway.example.com",
"path": "/v1/tools/search",
"apiKeyEnv": "SEARCH_GATEWAY_API_KEY",
"queryField": "q",
"countField": "size",
"resultsPath": "data.items",
"urlField": "link",
"titleField": "name",
"snippetField": "desc",
"count": 10
}
}
}
vendor and protocol; each target bucket stores only the keys declared in its fields.template is a fill action, not configuration; submitting it is rejected.v2 mode |
v3 target |
|---|---|
responses |
qwen/responses |
anthropic-messages |
deepseek/anthropic-messages |
zhipu-web-search |
zhipu/search |
zhipu-chat-search |
zhipu/chat-completions |
dsh-web-search-diy.json.v2.bak (once, for rollback).responsesToolType → toolType, responsesIncludeSources → includeSources, responsesReasoningEffort → reasoningEffort, anthropicThinking → thinking, anthropicEffort → effort; apiVersion is dropped (fixed at 2023-06-01).| Protocol / vendor | Fields |
|---|---|
| Common | baseURL, apiKeyEnv, model, maxOutputTokens (the last two are hidden for standalone) |
| Responses · OpenAI | toolType, includeSources, reasoningEffort, searchContextSize, allowedDomains, blockedDomains, userLocation, externalWebAccess, returnTokenBudget, searchContentTypes, imageMaxResults, imageCaption |
| Responses · Kimi | toolType, includeSources, allowedDomains (blockedDomains / search_context_size return 400) |
| Responses · Zhipu / Qwen | toolType, includeSources, reasoningEffort |
| Responses · DeepSeek | toolType; the model is locked to deepseek-v4-pro and include is not sent |
| Responses · OpenRouter | toolType, includeSources, engine, mode, maxResults, maxUses, maxTotalResults, searchContextSize, maxCharacters, userLocation, allowedDomains, excludedDomains, xSearch |
| Anthropic Messages | toolType, maxUses, thinking, effort, allowedDomains, blockedDomains, userLocation, responseInclusion |
| Chat · Zhipu | searchEngine, count, searchRecencyFilter, contentSize, searchDomainFilter, requireSearch, searchPrompt, reasoningEffort |
| Chat · Qwen | searchStrategy, forcedSearch, freshness, assignedSiteList, searchExtension, promptIntervene |
| Chat · OpenRouter | engine, mode, maxResults, maxUses, maxTotalResults, searchContextSize, maxCharacters, userLocation, allowedDomains, excludedDomains, xSearch |
| Chat · OpenAI | no search parameters; the model is locked to gpt-5-search-api |
| Standalone | count, includeContent, searchEngine / contentSize / searchRecencyFilter / searchDomainFilter (Zhipu), oriQuestion / localization (DeepSeek), timeoutSeconds (Kimi), digestEntries, digestSnippetChars; custom adds path and the 8 mapping fields |
oriQuestionsends the human prompt that triggered the search as DeepSeek'sori_question: whitespace collapsed, cut to 128 characters, read from the initiating Session and omitted out
README 摘录,请查看原文。
数据截至 2026-11-05
工具与 MCP
将图像问答、OCR、目标定位、裁剪、矢量描摹、像素差异和 HTML 截图等视觉工具及 Skill 集成到 DSH Web 与 Headless;需配置视觉模型提供方,首次运行可能准备 Python 运行时。
工具与 MCP
把 local-shell-mcp 的 shell、文件、浏览器自动化和远程工作器能力接入 DSH,提供 MCP 工具及每会话 Live Workspace;涉及本机与远程资源操作,具体边界依上游配置。
工具与 MCP
在 DSH Web GUI 中展示 OpenBiliClaw 推荐、收藏、画像与对话,并注册 Agent 工具;需要运行中的 OpenBiliClaw 后端及 Agent Bridge v2,爬取仍由主项目负责。
工具与 MCP
在 DSH 中查询、搜索并推荐插件,展示透明评分、趋势和分类;排行数据由 GitHub 话题仓库定时同步,覆盖受公开查询范围限制。
工具与 MCP
在本机解析 PDF、Office、Markdown、HTML、CSV 与文本文件,并提供离线 OCR;仅读取会话工作区或显式授权目录,Windows x64 可使用随附 OCR 运行时。
工具与 MCP
为 DSH 文本模型提供视觉路由及图像问答、OCR、定位、裁剪和像素差异工具;默认云端视觉链会发送图像,需本地处理时显式启用 Local-only vision。