为 DeepSeek Harness 项目提供只读的 GitHub 访问——通过内部多路由API、gh CLI、git…
31.5/100
综合分
2
GitHub 星标
439
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-github-routernpm 源 · dsh-github-router 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 36 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-github-router @ 0.4.1
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 15:37:16
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
- 读取本地文件lib/cache.js:36
if (!existsSync(file)) return undefined - 读取本地文件lib/cache.js:38
const entry = JSON.parse(readFileSync(file, 'utf8')) - 写入本地文件lib/cache.js:62
mkdirSync(this.dir, { recursive: true }) - 写入本地文件lib/cache.js:63
writeFileSync(tmp, JSON.stringify({ v: 1, ts: now, ttlMs, value }), 'utf8') - 写入本地文件lib/cache.js:64
renameSync(tmp, file) - 删除本地文件lib/cache.js:66
try { unlinkSync(tmp) } catch { } - 删除本地文件lib/cache.js:73
try { unlinkSync(this.fileFor(key)) } catch { } - 发起网络请求lib/net.js:128
response = await fetch(url, { - 读取本地文件lib/routes/git.js:78
if (existsSync(join(dir, '.git'))) return dir - 写入本地文件lib/routes/git.js:79
try { mkdirSync(this.gitDir, { recursive: true }) } catch { } - 发起网络请求lib/tunnel.js:155
const request = http.request({ - 发起网络请求lib/tunnel.js:298
const request = http.request({
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-tools@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 只读访问GitHub
- 自动探测可用访问方式
- 自动尝试网络代理
给智能体用的只读 GitHub 访问,封装了多个工具。工具内部自动探测并选用本地可用的 GitHub 访问方式,还会自己尝试网络代理。这样能减少智能体访问 GitHub 时遇到的网络和解析问题,也省去它反复试各种方法的开销。
README
由 DeepSeek 最新模型翻译生成dsh-github-router
为 DeepSeek Harness 项目提供只读的 GitHub 访问——通过内部多路由(API、gh CLI、git 协议、页面 HTML、镜像)的工具加载 PR、issue、文件与 API 数据,agent 不再需要在终端里反复对抗 TLS 或代理故障。
License: MIT
Node.js >= 22.19
npm version
一个 DeepSeek Harness 插件捆绑包,为 agent 提供无需终端重试的 GitHub 读取能力:
- 五个只读工具 —— github_probe、github_pr、github_issue、github_file、github_api,外加 github-router 技能与系统提示引导段落。整个包内不存在任何写入、推送、评论或变更能力。
- 工具内路由 —— 每个请求都在宿主进程侧执行(不受沙箱 TLS/代理限制),并按路由阶梯回退:api.github.com(直连 → 代理)→ gh CLI(只读子命令)→ git 协议(插件自有 fetch 缓存,或对本地克隆仅做 log/diff/show 读取)→ PR/issue 页面 HTML(严格 JSON 岛提取)→ 用户配置的 raw 镜像。
展开完整文档(README 剩余 1 节)
dsh-github-router
为 DeepSeek Harness 项目提供只读的 GitHub 访问——通过内部多路由(API、gh CLI、git 协议、页面 HTML、镜像)的工具加载 PR、issue、文件与 API 数据,agent 不再需要在终端里反复对抗 TLS 或代理故障。
License: MIT
Node.js >= 22.19
npm version
一个 DeepSeek Harness 插件捆绑包,为 agent 提供无需终端重试的 GitHub 读取能力:
- 五个只读工具 —— github_probe、github_pr、github_issue、github_file、github_api,外加 github-router 技能与系统提示引导段落。整个包内不存在任何写入、推送、评论或变更能力。
- 工具内路由 —— 每个请求都在宿主进程侧执行(不受沙箱 TLS/代理限制),并按路由阶梯回退:api.github.com(直连 → 代理)→ gh CLI(只读子命令)→ git 协议(插件自有 fetch 缓存,或对本地克隆仅做 log/diff/show 读取)→ PR/issue 页面 HTML(严格 JSON 岛提取)→ 用户配置的 raw 镜像。
- 一次调用、结构化结果 —— PR 一次返回元数据、讨论、评审、提交、变更文件与 diff,每个部件标注来源路由;失败时返回路由矩阵,而不是十几条重试过的终端命令。
- 连通性探针 —— github_probe 一次调用报告宿主侧哪些路由存活,附耗时与推荐路由链。
- 零运行时依赖 —— peer 依赖由 DSH profile 解析;代理请求走插件自带的 CONNECT 隧道(不依赖第三方 HTTP 栈),因此可以完全离线安装。
- 框架级插件设置页 —— 侧栏 插件(Plugins) 页打开本插件卡片即显示配置区(该行上的「配置」控件打开同一表单)(框架声明式配置:插件导出 Config schema,框架以 Loader entry id dsh-github-router 作为设置命名空间服务到浏览器、派生表单、校验并落盘写入;dsh-github-router 设置命名空间含 secret token、代理、路由开关、缓存 TTL、字节上限)。编辑本地暂存、保存才写入;被用户覆盖的字段带徽标与「恢复默认」控件;token 为只写字段,留空表示保持已存 token,页面提供「清除已保存的 token」控件。
- 上下文效率 —— 按类别 TTL 的响应缓存、全局字节上限、带截断注记的列表上限,以及限流余量提示。
环境要求
- Node.js >= 22.19
- 可选:gh 路由需要已安装且认证的 gh CLI;git 路由需要 git
安装
从 npm:
dsh plugin --profile web add dsh-github-router
从本地检出(开发):
dsh plugin --profile web add link:
从 git 仓库:
dsh plugin --profile web add github:/dsh-github-router
然后重启 DSH 后端——宿主组合在进程启动时装载。新会话中即可使用 github_probe、github_pr、github_issue、github_file、github_api,以及 github-router 技能。
兼容性
本插件跟随 DSH 的插件 API 走,而 DSH 在快速迭代,不保证跨版本兼容。
请选择与你的 DeepSeek Harness 版本匹配的插件版本:
| DeepSeek Harness | 安装 |
| 0.1.7-rc.2 | dsh-github-router@0.4.0 或最新 |
| 0.1.2 ~ 0.1.6 | dsh-github-router@0.3.2 |
| 0.1.1 及更早 | dsh-github-router@0.2.1 |
该映射同时记录在 package.json 的 dsh.compatibility.dshReleases 中。
使用
Agent 侧:
| 工具 | 作用 |
| github_probe | 一次性连通性矩阵(api 直连/代理、gh 安装/认证、git ls-remote、页面直连/代理、镜像、token 有无),附耗时与推荐路由链。访问失败或变慢时先调用它。 |
| github_pr | PR 全貌:元数据、描述、讨论(issue 评论 + 行内评审评论)、评审、提交、变更文件与统一 diff,各部分标注来源路由。可用 includeDiscussion/includeReviews/includeCommits/includeFiles/includeDiff 开关部件,用 maxDiffBytes/maxItems 限幅。传 localRepo(或自动探测会话 cwd)可从本地克隆零网络读取提交与 diff。 |
| github_issue | issue 元数据、正文、标签与评论,附路由归属。 |
| github_file | 指定分支/标签/commit 的文件内容(或目录列表),经 api contents → raw → 镜像 → git 依次路由;返回大小、截断状态与 serving 路由。 |
| github_api | 校验后的 GET-only 逃生舱,可访问任意 api.github.com 端点;查询值净化、响应缓存、限流头提示、错误带稳定代码。 |
github_probe # 当前哪些路由存活
github_pr { owner: "o", repo: "r", number: 12 } # PR 全貌
github_pr { owner: "o", repo: "r", number: 12, localRepo: "C:/src/r" } # 从本地克隆读提交与 diff
github_issue { owner: "o", repo: "r", number: 34 }
github_file { owner: "o", repo: "r", path: "src/index.js", ref: "main" }
github_api { path: "/repos/o/r/commits", query: { per_page: 5 } }
行为说明:
- 路由顺序按部件类型固定:先 API(直连后代理),再 gh,再页面 HTML(代理优先——直连 TLS 被重置的机器通常能经代理取到页面),再 git,最后镜像。每个部件记录其 serving 路由。
- 匿名 API 使用受限流(每 IP 60 次/小时);配置 token(设置项或 GITHUB_TOKEN)后为 5000 次/小时。响应缓存可省配额;forceRefresh 绕过缓存。
- 镜像默认关闭——它们是会看到请求路径的第三方;只有在接受这一点时才在配置页中启用。
- git 路由绝不写入用户仓库:本地克隆只做 git log/diff/show 读取,fetch 仅发生在插件自有缓存目录 /storages/dsh-github-router/ 下。
配置
侧栏 插件(Plugins) 页 → dsh-github-router bundle 卡片:打开该卡片即在描述与部件之间直接渲染插件的配置区;该行上的配置控件打开同一表单。页面外框由框架负责:它读取本插件导出的 schema、把 dsh-github-router 命名空间服务到浏览器,并渲染保存控件。被用户覆盖的字段带徽标和「恢复默认」控件,清空字段即回退到下方默认值。token 为只写字段:留空表示保持已存 token,「清除已保存的 token」控件才会暂存删除并在保存时写入。同样的值也可以在组合(profile 的 cordis.patch.yml)中作为插件基础配置写入;页面按用户覆盖,且保存的值在下一次工具调用即生效。
| 字段 | 默认 | 含义 |
| token | — | 字面 GitHub token(secret;线上脱敏、只写输入)。优先用 tokenEnv。 |
| tokenEnv | GITHUB_TOKEN | 指向 token 的环境变量 / 凭据引用。 |
| proxy | '' | 代理地址。'' 继承环境变量 HTTP(S)_PROXY;direct 永不代理。 |
| directTimeoutMs / proxyTimeoutMs | 8000 / 15000 | 单次尝试超时。 |
| retries | 1 | 幂等 GET 在 429/5xx 上的重试次数(尊重 Retry-After)。 |
| routesApi / routesGh / routesGit / routesHtml / routesMirror | 开 / 开 / 开 / 开 / 关 | 各路由开关(卡片中以复选框展示)。 |
| mirrors | [] | raw 镜像基址,如 ["https://ghproxy.net"]。 |
| cacheTtlMeta / cacheTtlContent | 300 / 86400 | 响应缓存 TTL(PR/issue 元数据 / 近似不可变内容),单位秒。 |
| maxBytes | 1048576 | 插件读取的每个响应体的字节上限。 |
| repos | [] | 授权只读 git 路由使用的本地仓库路径。 |
| gitCacheDir | '' | 插件 fetch 缓存目录;'' = /storages/dsh-github-router/git。 |
工作原理
- 宿主侧执行 —— 插件代码运行在宿主进程,沙箱的 TLS 凭据重置与代理错乱完全不适用。这一不受限的令牌由 SECURITY.md 中的约束模型补偿,而不是削弱沙箱。
- 显式代理决策 —— 全局 fetch 不继承环境代理;每次尝试显式选择直连或代理,代理请求走零依赖 CONNECT 隧道(node:http/node:tls),TLS 对目标主机名校验,accept-encoding: identity。
- 严格解析 —— 页面 HTML 路由只提取 react-app.embeddedData JSON 岛并执行 JSON.parse(绝不求值);有界 BFS 只拷贝白名单字段,CSRF token 与原始载荷绝不进入模型。
- 纯 argv 子进程 —— 每次 gh/git 调用都是固定参数列表的 argv 数组;用户输入经正则校验后才进入 argv,全插件无 shell 插值。
- 工具契约 —— 规范值为无损失 JSON(数组不挂侧属性)、字节受限,并渲染为带路由归属的紧凑文本。
- 技能与引导 —— github-router 技能教授工具优先用法与"GitHub 读取不升级沙箱权限"规则;一条系统提示段落(dsh-github-router:guidance,order 118)提醒每个会话 github_* 工具是合规路径。
项目结构
| 路径 | 用途 |
| cordis.patch.yml | 插入 dsh-github-router 行的 profile patch 层 |
| lib/index.js | 宿主插件:导出 Config schema、五个工具、技能、引导 |
| lib/client.js | 浏览器半边:行配置页(手写工厂包,无构建步骤) |
| lib/config.js | 设置 schema、默认值、实时读取、运行时选项解析 |
| lib/settings.js | 宿主设置接线:插件自有页面策略与 options thunk |
| lib/net.js、lib/tunnel.js | 路由感知 HTTP 层;零依赖 CONNECT 代理隧道 |
| lib/routes/ | 每条路由一个模块:api(GET-only REST)、gh(CLI)、git(协议)、html(页面解析)、mirror(raw 镜像) |
| lib/core/ | 每次调用的运行时装配与 pr/issue/file/probe 聚合器 |
| lib/tools/ | 五个模型工具 |
| lib/cache.js、lib/render.js、lib/util.js | TTL 缓存、文本渲染、守卫与整形 |
| lib/skill.js、lib/guidance.js | 技能内容与提示注入段落 |
| test/ | 无运行时依赖的行为测试(见 开发) |
| docs/ | 设计与分析文档 |
开发
无构建步骤:插件是纯 ESM,测试直接用 Node 运行(mock ctx 代替 DSH 服务;真实的 defineTool 校验每个 schema):
npm test
或:node --test --test-isolation=none "test/*.test.js"
测试完全离线——覆盖 JSON 岛提取、入参守卫、URL 构建、TTL 缓存、提交日志解析、隧道请求头与 apply() 装配。开发循环与离线 peer 解析见 CONTRIBUTING.md。
安全
构造上只读:不存在写入动词;token 只附加到 api.github.com 且在每条边界脱敏;页面载荷按白名单提取;唯一的磁盘写入是 /storages/dsh-github-router/ 下的两个插件自有缓存。完整威胁模型与缓解清单见 SECURITY.md。
文档
- docs/design.md — 架构、路由阶梯、缓存与约束模型、已知局限
- SECURITY.md — 威胁模型与补偿控制
- CHANGELOG.md — 版本历史
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
AngelosZou/dsh-github-router
为 DeepSeek Harness 项目提供只读的 GitHub 访问——通过内部多路由API、gh CLI、git…
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目