悬停对话里的仓库链接即可预览信息并一键打开
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zengxiaolou/dsh-github-link该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · platform
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 6 处,展示前 6 条)
- 读取密钥环境变量index.js:132
const fromEnv = process.env.GITHUB_TOKEN?.trim() || process.env.GH_TOKEN?.trim() - 执行外部命令固定命令index.js:135
execFile('gh', ['auth', 'token'], { timeout: 4000 }, (error, stdout) => { - 发起网络请求index.js:212
const response = await fetch(url, { - 发起网络请求client.js:132
void fetch(endpoint(route), { - 发起网络请求client.js:360
const promise = fetch(endpoint('github-link/card', `?url=${encodeURIComponent(url)}`), { - 写入剪贴板client.js:470
await navigator.clipboard.writeText(value)
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-github-link
dsh-github-link
DSH 插件:把对话区回复里的仓库 URL(GitHub / GitLab / Gitee)变成「可悬停的信息卡片」,点击后直接在 DSH 右侧栏自带的浏览器标签页里打开。
它不改 GenUI(@changfenhuang/dsh-genui)本体:截图里那套结论块 / 指标卡 / 表格由 GenUI 渲染,本插件只给它的链接和裸 URL 补上 hover 与点击行为,所以 GenUI 升级不会把这层改动冲掉。
作用范围
只在对话正文里生效([data-conversation-content],即 Conversation 外壳的对话区:
助手回复、GenUI 块、工具卡片)。菜单、会话列表、左侧工作区树、右侧栏标签页里的链接一律不装饰 —— 那些地方的链接属于各自功能,本插件不接管。
判定在事件入口完成(inConversation()):mouseover / click 的目标不在对话区内就直接返回,
连 preventDefault 都不做。悬浮卡片本身挂在 document.body 上,单独放行,否则鼠标从链接移到卡片会被判成「离开对话区」而收起。
展开完整文档(README 剩余 1 节)
dsh-github-link
dsh-github-link
DSH 插件:把对话区回复里的仓库 URL(GitHub / GitLab / Gitee)变成「可悬停的信息卡片」,点击后直接在 DSH 右侧栏自带的浏览器标签页里打开。
它不改 GenUI(@changfenhuang/dsh-genui)本体:截图里那套结论块 / 指标卡 / 表格由 GenUI 渲染,本插件只给它的链接和裸 URL 补上 hover 与点击行为,所以 GenUI 升级不会把这层改动冲掉。
作用范围
只在对话正文里生效([data-conversation-content],即 Conversation 外壳的对话区:
助手回复、GenUI 块、工具卡片)。菜单、会话列表、左侧工作区树、右侧栏标签页里的链接一律不装饰 —— 那些地方的链接属于各自功能,本插件不接管。
判定在事件入口完成(inConversation()):mouseover / click 的目标不在对话区内就直接返回,
连 preventDefault 都不做。悬浮卡片本身挂在 document.body 上,单独放行,否则鼠标从链接移到卡片会被判成「离开对话区」而收起。
行为
| 场景 | hover | 点击 |
| 对话区内 GenUI 块里的链接(data-genui 内) | 出卡片 | 拦截 → 右侧栏浏览器 |
| 对话区内回复正文里的裸 URL(https://github.com/a/b) | 出卡片 | 拦截 → 右侧栏浏览器 |
| 对话区内普通 markdown 链接(宿主自己渲染) | 出卡片 | 不拦截,交给宿主的 linkOpening 设置 |
| 对话区外(菜单 / 会话列表 / 工作区 / 右栏) | 无 | 不拦截,插件完全不介入 |
| 任意情况下 ⌘/Ctrl/Shift/Alt + 点击 | — | 不拦截,走系统浏览器 |
卡片内容:仓库全名、来源(GitHub / GitLab / Gitee)、公开/私有/归档标记、简介(3 行截断)、星标 / 复刻 / 开放议题、主语言、许可证、Topics、最近活动,以及底部两个按钮:
| 按钮 | 出现条件 | 行为 |
| 在 DSH 打开 PR | 仅 github.com 的 PR,且 dsh-github-flow 的 github-pr tab 已注册 | 右栏 PR 面板打开这条 PR:sidebarRight.openTab('github-pr', { params: { repo, number } }) + layout.openRightbar(true, false) |
| 复制 clone | 有仓库路径时 | 写 git clone https://<host>/<fullName>.git |
两个按钮都不走「打开网页」:点按钮只做各自那件事,点卡片/链接才在右侧栏浏览器打开 PR 页面。
按钮是否出现,按「页面里真有那个 tab 类型」判定(sidebarRightTabs.get('github-pr')),没有就整颗按钮不渲染——不做点了没反应的死按钮。
当 URL 指向 issue / PR / MR 时,额外显示该条目的标题、状态(开启中 / 已关闭 / 已合并)与作者:
https://github.com/facebook/react/issues/1
→ react/react · 议题 #1 · [已关闭] Run each test in its own · 由 benjamn
数据从哪来
GET /github-link/card?url=<encoded>(host 半注册在同一个 web server 上),按主机分派:
| 主机 | 上游 | 认证 |
| github.com | api.github.com | GITHUB_TOKEN / GH_TOKEN,否则本机 gh auth token(60/h → 5000/h) |
| gitlab.com | gitlab.com/api/v4 | 匿名即可(支持多级 group 路径) |
| gitee.com | gitee.com/api/v5 | 匿名即可 |
- 成功结果缓存 10 分钟,失败 60 秒;缓存上限 400 条。
- 只接受上述三个主机的仓库形 URL;/marketplace、/explore、/orgs 等保留路径直接忽略。
- issue/PR 明细是 best-effort:拉不到就只显示仓库卡片,不会让整张卡失败。
拒绝 sec-fetch-site: cross-site 的请求,避免被别的网页当成查询代理。
点击是怎么走到「内置浏览器」的
用的就是 DSH 自己的右侧栏页面服务:
ctx.get('sidebarRight').openTab('browser', { params: { url } })
和 sidebar_open 工具、以及聊天里普通链接的默认行为是同一个 API;browser 类型不存在时自动退回 window.open。
自检:客户端半到底加载了没有
client 半是从页面的 boot payload 注入的,改完 client.js 后只有「刷新后的窗口」才会带上它。
这个进程看不到那个窗口,所以插件自己上报:
| 路由 | 用途 |
| GET /github-link/status | client.loaded 是否为真、最近一次 hello 的时间/协议/UA、打开与回退计数、缓存大小 |
| POST /github-link/hello | client 半每次页面加载上报一次,带 location.protocol |
| POST /github-link/event | client 半在打开链接时上报 open 或 fallback |
loaded 只认真正的页面(dsh-app: 或 http(s):):用 curl 之类直接 POST 一个不带 protocol 的 hello 会返回 loaded: false 并提示这是探测,不会被误判成「已生效」。
curl -s http://127.0.0.1:50845/github-link/status | jq .client
桌面壳的形状(为什么 GitHub 能显示)
这版 Desktop 的主窗口加载的是 dsh-app://app/,preload 在同源主框架下才暴露完整的 window.dshDesktop(protocolVersion: 1 + browser 桥)。侧栏浏览器据此选择 Electron <webview> 而不是 ,所以 github.com 的 x-frame-options: deny 不影响它。
插件的请求也按这个前提解析:走 document.baseURI 的相对路径(github-link/card),由壳的非静态路径转发送到 Host,保持同源;不用 __DSH_TRANSPORT__.streamBaseUrl (那是另一个 origin,会变成跨域 POST)。
已知限制
右侧栏浏览器在 Desktop 应用里走 Electron <webview>(真实 Chromium 视图),三者都正常显示;如果用普通浏览器打开 dsh web 的地址,那里是 sandboxed ,而 github.com 会发 x-frame-options: deny,页面会被浏览器拦掉。此时点击仍会算成功打开,但内容为空——用 Desktop 应用即可。
文件
- index.js — host 半:/github-link/card 路由、三主机 URL 解析、各自的上游读取、token、缓存。
- client.js — client 半:document 级 hover/click 委派、浮动卡片、PR 面板按钮、复制 clone、sidebarRight 打开。
- cordis.patch.yml — 插入 github-link 装载行。
- locale/{zh,en}.json — 插件市场/设置里的标题与描述。
改动生效方式
- client 半:刷新一次 GUI 页面(新模块在下次 boot 注入)。
- host 半:在插件市场里把 GitHub 链接卡片 关一次再开,或重启 DSH;进程内 ESM 缓存不会自己更新。
卸载
插件市场里停用或移除 dsh-github-link 即可;profile 只是把它软链到本目录。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
zengxiaolou/dsh-github-link
悬停对话里的仓库链接即可预览信息并一键打开
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7
这是你的仓库?认领条目