前言¶
在 DeepSeek Harness(DSH)里做 DevOps 相关智能体时,常见做法是让人去 OneDev Web 界面点选,或自己写脚本调 /~api/*。OneDev 本身提供完整的 Git / CI / CD 与管理 REST API,但模型侧缺少一套带鉴权、可枚举、参数有 Schema 的工具面。
下面介绍的 dsh-onedev(仓库 Altermoe/dsh-onedev,维护者 Altermoe)是 DSH 社区插件,分类为模型推理。它内置独立 MCP 服务 dsh-onedev-mcp,经 DSH 自带的 @deepseek-ai/dsh-mcp-client 桥接后,OneDev 管理操作会以 mcp__onedev__… 形式出现在 harness 工具列表里,模型可直接调用,而不必绕 Web UI。
这是什么¶
dsh-onedev(npm 包名 dsh-onedev,当前版本 0.1.0,MIT 许可证)做两件事:
- 提供 MCP Server,用 OneDev 访问令牌或账号密码访问 OneDev REST API(
/~api/*)。 - 作为 DSH bundle 时,在 dsh Web Settings 增加一级 OneDev 配置区,用卡片管理多环境连接,运行时从凭据存储读取,一般无需再配
ONEDEV_*环境变量。
简介与 GitHub 仓库标题一致:DeepSeek Harness Plugin for OneDev。
核心功能¶
以下能力均来自项目 README 与 docs/dsh-integration.md。
MCP 工具面¶
- 61 个工具:约 57 个面向管理(用户、组、角色、组成员与管理员授权、项目、授权、构建 Agent、Agent Token、构建与日志、全局设置、访问令牌等);另有 3 个 OneDev 官方文档查询工具,以及 环境发现
onedev_list_environments。 - 通用直连
onedev_api_request:对ONEDEV_URL/~api/*发起任意已鉴权请求,覆盖未单独封装的 REST 面。 - 文档工具独立可用:
onedev_docs_search/onedev_docs_read/onedev_docs_list对接 docs.onedev.io,无需 OneDev 连接或凭据即可使用。 - 工具由 Zod 生成 JSON Schema,便于模型理解参数。
多环境与传输¶
- 可配置 多个 OneDev 环境(各自 URL、凭据、备注 slug);除
onedev_list_environments外,各工具可选environment参数,默认指向 primary 环境。 - 两种传输:stdio(推荐给 DSH 本地挂载)与 streamable-http(远程,路径
/mcp)。
鉴权与安全¶
- Bearer 访问令牌(
ONEDEV_TOKEN)或 账号密码(ONEDEV_AUTH_TYPE=password+ONEDEV_USERNAME/ONEDEV_PASSWORD,HTTP Basic)。 - 可选 只读模式
ONEDEV_MCP_READONLY=true拒绝所有 mutating 请求;可配置 API 超时(如ONEDEV_API_TIMEOUT_MS)。
DSH Web 与本地 Setup¶
- 安装 bundle 后:Settings → OneDev 以卡片展示环境,可新增、编辑、探测连接、设 primary、删除;Host 提供 loopback
/api/onedev/config与/api/onedev/probe。 - Setup 控制台:
npm run setup(或node bin/dsh-onedev-mcp.mjs --setup)在http://127.0.0.1:8770/录入 URL 与凭据并持久化(端口可用ONEDEV_MCP_PORT修改),缓解「必须先登录 Web UI 造 Token」的问题。凭据默认写入~/.config/dsh-onedev/config.json(权限0600,可用ONEDEV_CONFIG_FILE覆盖)。
桥接后工具命名规则:serverName 设为 onedev 时,例如 mcp__onedev__users_list。
环境与依赖¶
- Node.js:
^22.19.0 || >=24.0.0(项目在 Node 26 上开发测试)。 - DSH:作为 bundle 使用时需 DeepSeek Harness 0.2.x(
engines.dsh:^0.2.0-rc.2);独立运行 MCP 不依赖 DSH。 - 可访问的 OneDev 服务器(示例:
http://localhost:6610);管理类接口通常需要具备相应权限的 Token 或管理员账号。
安装与启用¶
从源码构建 MCP¶
在克隆或解压后的仓库目录执行(README 原文):
npm install # install dependencies
npm run build # compile TypeScript → dist/
npm test # build + unit tests + stdio smoke + HTTP smoke
日常启动 MCP:
npm start
# 等价于 node bin/dsh-onedev-mcp.mjs
开发模式:
npm run dev
首次配置凭据(可选,与 Web Settings 共用存储):
npm run setup
作为 DSH profile bundle(推荐)¶
docs/dsh-integration.md 说明:v0.1.0 起插件附带 dsh bundle。将包加入 profile 的 dsh.profile.bundles 并完成安装后,cordis.patch.yml 会插入 dsh-onedev Host 插件与 dsh-onedev-mcp 的 @deepseek-ai/dsh-mcp-client 行(env: {})。连接信息在 Settings → OneDev 配置;MCP 每次工具调用从凭据存储读取,保存后通常 无需重启 dsh。
升级 bundle 后需执行 npm run build,并按项目脚本说明重启 dsh(如 scripts/restart-dsh.sh)。
手动挂载 stdio(YAML 示例)¶
若未走 bundle,可在 dsh 配置中增加 @deepseek-ai/dsh-mcp-client 条目(路径需改为你机器上的 绝对路径):
plugins:
- id: dsh-onedev
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: onedev
transport: stdio
command: node
args: ['/absolute/path/to/dsh-onedev/bin/dsh-onedev-mcp.mjs']
env:
ONEDEV_URL: !!js process.env.ONEDEV_URL
ONEDEV_TOKEN: !!js process.env.ONEDEV_TOKEN
toolCallTimeoutMs: 60000
failOnStartupError: false
若已通过 npm run setup 或 Web Settings 写入凭据,env 整段可省略;环境变量与存储同时存在时,环境变量优先。
HTTP 模式(远程共享)¶
在可访问 OneDev 的主机启动:
ONEDEV_URL=https://onedev.internal:6610 \
ONEDEV_TOKEN="$ONEDEV_TOKEN" \
ONEDEV_MCP_TRANSPORT=streamable-http \
ONEDEV_MCP_HOST=0.0.0.0 \
ONEDEV_MCP_PORT=8765 \
node /absolute/path/to/dsh-onedev/bin/dsh-onedev-mcp.mjs
DSH 侧使用 transport: streamable-http 与 url: http://onedev-mcp-host:8765/mcp(详见集成文档 Option B)。
典型用法¶
- 发现环境:调用
mcp__onedev__onedev_list_environments,必要时带{"query":"prod"};后续工具传入"environment":"<slug>"。 - 列用户(主环境):
mcp__onedev__users_list→{"term":"alice","count":50}。 - 列用户(指定环境):
{"environment":"staging","term":"alice"}。 - 授予管理员:先
mcp__onedev__group_get_id→{"name":"Administrators"},再group_members_add传入userId与groupId。 - 建项目:
mcp__onedev__project_create→{"name":"team/app","codeManagement":true}。 - 只读防护:设置
ONEDEV_MCP_READONLY=true。 - 未封装接口:
mcp__onedev__onedev_api_request→{"method":"GET","path":"/issues?project=app"}。
完整工具表见仓库 docs/tools.md(由 npm run docs 生成)。
适用场景与注意¶
适合:已在用 OneDev 做 Git/CI/CD,希望在 DSH 对话或自动化里用自然语言或 Agent 流程操作用户、项目、Agent、构建与设置;或需要同时管理多套 OneDev 实例的团队。
务必注意:
- MCP 与 Host 插件在 当前 dsh 进程权限 下运行;Token 或管理员密码具备的能力即模型可触达的能力。安装前请阅读源码与 MIT 许可证,并评估是否开启只读模式。
- 管理类 Token 需具备文档所述管理员权限;401/403 多为 Token 权限或过期问题。
- 社区目录 skillhub.cn 插件页 与 GitHub 由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,本文事实以仓库文档为准。
结尾¶
dsh-onedev 把 OneDev 管理 REST API 收成 MCP 工具集,并可选 Web / Setup 管理多环境凭据,适合把 OneDev 运维纳入 DSH 智能体工作流。进一步了解可访问 目录页 与 GitHub 仓库(含 docs/dsh-integration.md 与 docs/onedev-api.md)。