DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

dsh-gitea-search

Gitea Search

针对 DeepSeek Harness,在自托管 Gitea 或 Forgejo 实例的本地镜像中进行跨仓库代码搜索。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:offzen/dsh-gitea-search#5efebe0fc2321bc68c82b1d96c9944acf865ac9a
README兼容性版本

兼容性与来源证明

Gitea Search 以 dsh-gitea-search 发布,当前版本为 0.1.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/15

版本

0.1.1stable
2026/10/15

相关插件

正在加载相关插件…

最新版
0.1.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/15
查看源码 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Experimental Inspector@deepseek-ai/dsh-experimental-inspector用于 Host 调试和 Client Runtime 检查的实验性跨 realm CDP hub

README

dsh-gitea-search

Cross-repository code search for DeepSeek Harness over a local mirror of a self-hosted Gitea / Forgejo instance.

Self-hosted Gitea usually ships with the server-side code index disabled: the web UI and the API cannot search file contents at all. This plugin mirrors every repository the token can read into a local bare mirror, runs git grep over all of them on every branch, and exposes the results to the model as three MCP tools (mcp__gitea_search__*). Searching and reading never touch the network.

  • search_gitea — file contents / file paths / commit messages, across all repositories and branches
  • read_gitea_file — one file from the mirror, without cloning
  • list_gitea_repos — what is in the mirror, optionally filtered

Requirements

  • DeepSeek Harness 0.2.x
  • Node ^22.19.0 || >=24.0.0 and git (the only runtime dependencies)
  • A self-hosted Gitea/Forgejo instance
  • A read-only API token (Gitea scopes read:repository and read:user) for syncing a private instance
  • Disk space proportional to the repositories you mirror

Install

dsh plugin --profile <profile> add dsh-gitea-search

--profile is required. The package declares dsh.bundle.patch, so dsh plugin add installs the dependency, appends the bundle to the profile, and inserts the MCP client row for you — no YAML to write. If the profile runs without configuration hot reload, restart dsh after installing; the tools then appear as mcp__gitea_search__search_gitea, mcp__gitea_search__read_gitea_file and mcp__gitea_search__list_gitea_repos.

The bundle starts the MCP server with npx -y dsh-gitea-search mcp (the package is distributed prebuilt on npm, so no build permission is needed). Installing from a git checkout instead? Point the row at node <path>/bin/mcp-server.mjs yourself — see the troubleshooting section.

Configure

The MCP client scrubs the ambient environment before it spawns the server, so values exported in your shell do not reach it automatically. The bundle patch re-exports the variables explicitly (!!js process.env.GITEA_* ?? ''), which means the source is the environment of the dsh process itself — a systemd Environment= entry, or the shell that launched dsh.

VariableDefaultMeaning
GITEA_MIRROR_DIR~/.local/share/gitea-search/mirrorwhere the bare mirrors live
GITEA_BASE_URL—Gitea/Forgejo base URL, required by sync
GITEA_TOKEN—read-only API token, required by sync against a private instance
GITEA_OWNERall readable reposcomma-separated owners (users/orgs) to mirror
GITEA_MAX_RESULTS200hard cap on records returned by search_gitea (max 1000)
GITEA_MAX_SEARCH_BYTES131072total output budget for one search
GITEA_MAX_LINE_BYTES2000per-line cap; longer lines are truncated in place with a marker
GITEA_MAX_READ_BYTES60000per-file read cap
GITEA_JOBS / GITEA_SYNC_JOBS6parallel repositories during search / sync
GITEA_TIMEOUT_MS120000per git invocation timeout

To change a value later, either export it for the dsh process, or override the row in your own profile cordis.patch.yml by id (gitea-search) — note that an override replaces the whole config value, so restate every key you want to keep.

Build the mirror

export GITEA_BASE_URL=https://gitea.example.com
export GITEA_TOKEN=...            # read-only token
npx -y dsh-gitea-search sync      # first sync, then keep it fresh

sync enumerates every repository the token can read through the Gitea HTTP API and mirrors each one (git clone --mirror, then git remote update --prune). The mirror is a plain directory of bare repositories: <mirror>/<owner>/<repo>.git, or flat <mirror>/<repo>.git if you mirror a single owner by hand. A cron entry or systemd timer keeps it fresh — examples are in docs/MANUAL.md.

Command line

The same engine ships as a CLI: dsh-gitea-search search <pattern> [-p|-m|-E|-s|-w|-l|-c] [-r repo] [-b branch] [-A] [-n N] [--json], plus repos, read <repo> <path> [--ref], sync [--transport https|ssh], mirror and mcp. Run dsh-gitea-search --help for the full option list.

Honest boundaries

  • The search surface is the mirror: only content already pushed to the server is searchable; local, unpushed work is not.
  • Matching is literal by default (case-insensitive), regular expressions on request — this is a grep, not a semantic or vector search.
  • The mirror refreshes only when you schedule sync; the plugin never triggers it on its own.
  • Results are deliberately bounded (per record, per line, per call, per read) so a single minified file cannot flood the model context.

Privacy and security

  • sync is the only networked step. The token goes to the Gitea API in an Authorization header and to git through GIT_ASKPASS — never on a command line, never in a log (git output is redacted before logging).
  • Search and read operate only on the local mirror.
  • File reads validate the ref and path, and invoke git show --end-of-options, so a crafted ref cannot be used as a git option (an arbitrary-file-write vector).
  • The token is your responsibility: store it where your other secrets live, and revoke it when you stop using the mirror.

Troubleshooting

  • Tools never appear. With failOnStartupError: true a failed MCP connection makes the row fail to load while the harness still starts. Look for gitea-search in the dsh log. Common causes: npx cannot reach the registry (offline host — install from a git checkout instead), or on Windows npx may need to be written npx.cmd in the row.
  • Tools say "no repositories under …". The mirror is missing or GITEA_MIRROR_DIR points elsewhere — run sync once, then check dsh-gitea-search mirror.
  • Slow first search. A cold search over a large mirror can exceed the 60s MCP default, so the bundle already sets toolCallTimeoutMs: 120000. Narrow with repo, use mode: "path" or files_only to probe first.

Uninstall

dsh plugin --profile <profile> remove dsh-gitea-search

Remove the mirror directory and revoke the token afterwards.

Compatibility

Verified on a clean test machine (Node 24, Debian slim container) for each version below: bundle installed with dsh plugin add, the profile layer resolved with no schema diagnostics, the 22-test suite green, and an MCP smoke run against a synthetic mirror (a 190 KB single-line blob and a >64 KB CJK file) with no U+FFFD and the output guard intact.

DSH versionPublishedInstallLayer (--dump-config)Schema diagnosticsTestsMCP smoke
0.2.0-rc.2 (latest, next)2026-09-29okoknone22/22ok
0.2.1-alpha.3 (alpha)2026-10-14okoknone22/22ok
0.2.1-alpha.22026-10-09okoknone22/22ok
0.2.1-alpha.12026-10-03okoknone22/22ok

The bundle declares an engines.dsh range as documentation; DSH gates installation by peerDependencies on @deepseek-ai/dsh-*, which this configuration-only bundle does not declare, so it installs on any 0.2.x runtime.

License

MIT