在 DSH 网页客户端侧边栏底部加入指向 webdsh 仓库的「Star on GitHub」按钮,并显示当前 star 数。
- 语言
- TypeScript
- License
- Apache-2.0
- 分支
- main
安装
$ dsh plugin --profile web add github:futrime/webdsh#path:packages/dsh-web-star在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 futrime/webdsh/packages/dsh-web-star:先查看仓库 https://github.com/futrime/webdsh 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
一句话定位
在 DSH 网页客户端侧边栏底部加入一个指向 webdsh 仓库的「Star on GitHub」按钮,点击可跳转到 GitHub 仓库页面,并尝试显示当前 star 数。
核心能力
- 在侧边栏底部显示星形图标与「Star on GitHub」文字入口,与 Settings、终端按钮共用底部槽位
- 点击跳转至 webdsh 项目 GitHub 仓库页面(新标签页打开)
- 自动从 GitHub 公开接口拉取并展示当前 star 数,按区域习惯做千位缩写(如 1.2K)
- 侧边栏折叠为窄栏时自动变成一个 36 像素的圆形图标
- star 数按浏览器缓存 24 小时,避免重复请求 GitHub
- 网络异常、限流或接口不可达时静默退化为纯链接,页面渲染不阻塞
技术实现
- 语言: TypeScript + React (TSX)
- 关键依赖:
@deepseek-ai/cordis、@deepseek-ai/dsh-client-ui-sidebar(注入对象)、React hooks(useState / useEffect) - 架构模式: Cordis 插件,按 host / client 双端拆分;host 端为空实现(仅作为组成行存在),client 端向
sidebar.footer.action槽位注册一个图标按钮组件,并自行注入匹配侧边栏视觉规范的 CSS - 入口文件:
packages/dsh-web-star/src/index.ts(host 端)、packages/dsh-web-star/src/client.tsx(browser 端)
适用场景
为正在使用 webdsh 网页版 DSH 的用户提供一个直观的入口,让他们随时跳转到 GitHub 仓库看源码、提 issue 或给项目点赞。如果你不想让侧边栏底部出现这个「Star on GitHub」按钮,可以禁用或卸载该插件。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 0.1.0-rc.7+ | 父项目锁定 @deepseek-ai/dsh-* 0.1.0-rc.7;本插件通过 dsh.client.inject 声明依赖 @deepseek-ai/dsh-client-ui-sidebar 的侧边栏槽位 |
| Node | >=22 | 来自父项目 engines.node 声明;本子包自身未声明 |
| 平台 | 跨平台 | 运行在浏览器中,与操作系统无关 |
| 原生模块 | 无 | 无任何原生依赖 |
安装方式
dsh plugin --profile web add github:futrime/webdsh/packages/dsh-web-star
配置项
本插件无需额外配置。
常见问题
Q: 安装后需要额外配置吗?
A: 不需要。该插件没有配置项,安装即生效。
Q: star 数显示不出来怎么办?
A: 插件会向 GitHub 公开接口发起请求;离线、被限流或浏览器拦截时会静默失败,仅链接本身仍可点击。
Q: star 数会一直请求 GitHub 吗?
A: 不会。星数拉取后会写入浏览器本地存储,24 小时内复用缓存。
Q: 数据会上传到第三方吗?
A: 不会。插件只调用 GitHub 公开接口读取 star 数,缓存仅保存在浏览器本地。
Q: 这个插件会让 AI 模型看到什么不同吗?
A: 不会。它只渲染侧边栏 UI,不向模型注入系统提示或新增工具。
Q: 能改成指向其他仓库吗?
A: 不能。仓库地址 futrime/webdsh 在源码中写死,该插件就是为 webdsh 发行版准备的"请点赞"入口。
Q: 侧边栏收窄成窄栏时按钮变成什么样?
A: 文字和星数自动隐藏,只保留一个 36 像素的圆形图标,与 Settings 等其他侧边栏底部按钮样式保持一致。
Q: 想隐藏这个按钮怎么卸载?
A: 在 DSH 客户端的 Settings → Plugins 中找到该插件并禁用或移除,下次刷新页面后即不再显示。
上手难度
入门 — 没有任何配置项,安装即生效,无需阅读文档。
已知问题与限制
- star 数的获取依赖
api.github.com可访问;离线或被限流时仅不显示数字,链接本身不受影响。 - 缓存键
dsh-web-star:count写入浏览器本地存储;浏览器隐私模式或清空存储后需重新拉取。 - 该插件的 host 端无任何业务逻辑,仅作为 host 行存在以承载 client 端的
dsh.client声明。
DeepSeek Harness in a browser tab — the real agent, real Node, no server to run.
DeepSeek Harness (dsh) is an
agent harness where everything is a plugin. dsh web runs a Node host and serves
a browser client to it. webdsh is that, as static files — the host runs inside
the page, and the agent's commands run in WebContainers:
Node itself, in the tab.
- ⚡ Nothing to run. No server, no install, no local Node — the harness boots in the page.
- 🖥️ Real Node, real Python.
npm installandpip installboth work, and the terminal and the agent share one container. - 💾 Or a whole PC. Switch the runtime to v86 and the session runs FreeDOS, Windows 1.01, Windows 3.1, Windows 98 or Linux — emulated x86, booted from a disk image, with the tool set that machine actually has.
- 🧩 Real plugins. Install from npm, a tarball, GitHub, or a path — from the browser.
- 📦 Real dsh. The published
@deepseek-ai/*packages, unmodified: 114 of 129 rows compose exactly asdsh webcomposes them. - 🔒 Yours. Files, sessions and keys live in your browser's storage. Nothing is uploaded.
Table of Contents
Background
Nothing here is a fork of dsh. The agent loop, tool registry, model adapters and
the entire web client come from npm at install time; the only modification is a
cordis.patch.yml layer — the mechanism dsh documents for exactly this.
What this repository adds is the platform underneath: a synchronous POSIX
filesystem mirrored to IndexedDB (src/vfs), node:* implemented over it
(src/node), the two runtimes a session can run on — WebContainers and an
emulated x86 PC (src/runtime) — an in-page virtual server for /api plus the
CORS policy every outbound request goes through (src/net), and the plugins
this build ships (packages/).
Six composition rows are swapped, each because the shipped one names something a
page cannot have — or, in the shell's case, cannot honestly describe. Four more
are reconfigured rather than replaced, including the one that decides whether
this deployment can open a path at all. npx tsx scripts/alignment.ts prints
the whole difference.
Install
Nothing to install — open the page. To run it yourself:
npm ci
npm run build # → dist/
node scripts/serve.mjs 4173
Node 22 or newer. dist/ is plain static files with relative URLs, so it works
at a domain root, a project path, or a local directory.
Usage
Open the page, choose a workspace, start talking.
- Files — the sidebar action above the terminal. Browse the workspace, open a file, drop files in, and take things out: one file as itself, a directory or a tick-box selection as a zip. It is the same filesystem the agent and the terminal use, not a copy. A file path the assistant names in the chat opens here when you click it.
- Terminal —
Ctrl+`or the sidebar action. It is Node in this tab, and the same machine the agent's tools run in. Closing it hides it; the session, its scrollback and its working directory are still there when you reopen. - Python —
python3andpipare there for both of them. The first call fetches a 14 MB interpreter; after that it is stored, and packages installed withpipsurvive a reload. Writepython3:jshaliasespythonto it and loses the quoting on the way, sopython -c "…"is a syntax error. - Runtime — the sidebar action below the terminal. A session runs on one machine and this is where you pick it. The default is the Node container above; the alternative is an emulated 32-bit PC, and the panel is that PC's screen — live, with a working keyboard, showing what the assistant is doing. Five machines need no setup at all: Linux (busybox on a serial console, the shortest way here to a real POSIX shell), FreeDOS, MS-DOS 7, Windows 1.01 and KolibriOS. Eleven more boot exactly the same way but are not this deployment's to serve a disk for — Windows 2.03, 3.0, 3.1, 95, 98, ME, NT 4.0 and 2000, MS-DOS 6.22, Buildroot Linux, and Arch Linux, which is a 2022 kernel with bash, python3 and gcc and resumes from a saved machine in about two seconds. For those, open a disk image from your computer or point the panel at a host that has one. Nothing is downloaded until you choose a machine, and a change applies on the next load.
- Plugins — Settings → Plugins, or
/plugin add <package>in the composer. Takes an npm name, a tarball URL,owner/repo#ref, or a path. The Installed tab turns one off or removes it; the composition is fixed at boot, so a change applies on the next reload and the panel says so. - Models — 42 models across six routes are registered up front and need no account, so the page answers before it asks for anything. Settings → Models offers the rest of the provider catalog; typing a key is the whole of configuring one.
- Network — Settings → Network picks the CORS proxy, used only after a direct request has actually failed, and reported to you when it is.
- Persistence — workspace, sessions and transcripts survive a reload.
window.dsh.exportFs()downloads a zip;window.dsh.reset()clears it all.
On an emulated machine the assistant is given different tools, because it is a
different machine: sh on the Linux guest, dos on the DOS ones — both reading
a real character stream, so a command's whole output comes back rather than the
last 25 lines of it — and vm_screenshot, vm_screen, vm_key, vm_type,
vm_mouse and vm_wait everywhere, which is the whole of the tool set on a
guest that only draws pixels. There is no jsh, no Node and no Python in that
session, and the guest's disk shares nothing with the workspace your file tools
read. The panel and the tools say so.
Worth knowing: the container's shell is jsh, not bash, and it ships no git;
python3 is CPython 3.14 compiled to WebAssembly, fetched on first use and kept
afterwards, so it has pip but no compiler, no subprocesses and no sockets; and a
host that refuses browsers is reachable only through the proxy, which does not
extend to the container.
Maintainers
Contributing
Issues and PRs welcome at futrime/webdsh.
Commits follow Conventional Commits;
npx tsc --noEmit and npx tsx scripts/e2e.ts should pass first.
License
Apache-2.0 © Zijian Zhang. The
@deepseek-ai/* packages it composes are published by DeepSeek AI under their
own terms.
查看使用指南 →
该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。
收录徽章
[](https://deepseek-plugin.org/plugins/futrime/webdsh/packages/dsh-web-star)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。