重排页头、扩展侧栏并管理归档会话,让工作台更好用
30/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库根目录无 package.json,浅层子目录有 3 份 dsh 插件清单(dsh-geek-archive/package.json、dsh-geek-header/package.json、dsh-geek-sidebar/package.json),无法唯一定位安装名。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kaerf15/dsh-geek-ui该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 53 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/11/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库根目录无 package.json,浅层子目录有 3 份 dsh 插件清单(dsh-geek-archive/package.json、dsh-geek-header/package.json、dsh-geek-sidebar/package.json),无法唯一定位安装名
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-geek-ui(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:18:11
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 63 处,展示前 28 条)
- 删除本地文件递归dsh-geek-archive/lib/archive.js:133
rmSync(sessionDirPath(cwd, id), { recursive: true, force: true }) - 发起网络请求dsh-geek-archive/lib/client.js:22
const res = await fetch(API + path, { - 读取本地文件dsh-geek-header/parts/smoke.mjs:9
const read = (p) => readFileSync(join(ROOT, p), 'utf8') - 执行外部命令来自配置/变量dsh-geek-header/parts/smoke.mjs:76
execFileSync(process.execPath, ['--check', join(ROOT, 'lib', 'client.js')], { stdio: 'pipe' }) - 执行外部命令来自配置/变量dsh-geek-header/parts/smoke.mjs:82
execFileSync(process.execPath, ['--check', join(ROOT, 'index.js')], { stdio: 'pipe' }) - 发起网络请求dsh-geek-sidebar/lib/client.js:24
const res = await fetch(API + path, { - 写入剪贴板dsh-geek-sidebar/lib/client.js:2473
? navigator.clipboard.writeText(text).then(done, done) - 写入剪贴板dsh-geek-sidebar/lib/client.js:4978
navigator.clipboard.writeText(clean).catch(() => {}); - 读取本地文件dsh-geek-sidebar/parts/build.mjs:16
const read = (p) => readFileSync(p, 'utf8') - 读取本地文件dsh-geek-sidebar/parts/build.mjs:20
const files = readdirSync(WB_DIR) - 写入本地文件dsh-geek-sidebar/parts/build.mjs:52
writeFileSync(join(ROOT, 'lib', 'client.js'), out) - 发起网络请求dsh-geek-sidebar/parts/head.js:24
const res = await fetch(API + path, { - 执行外部命令来自配置/变量dsh-geek-sidebar/parts/smoke.mjs:20
exec(r.command, { timeout: r.timeoutMs || 1e4, env: { ...process.env, ...(r.env || {}) }, maxBuffer: 32 * 1024 * 1024 }, (err, stdout, stderr) => { - 读取本地文件dsh-geek-sidebar/parts/smoke.mjs:28
async stat(p) { const st = statSync(p); return { type: st.isDirectory() ? 'directory' : st.isFile() ? 'file' : 'other', size: st.size } }, - 读取本地文件dsh-geek-sidebar/parts/smoke.mjs:29
async readText(p) { return readFileSync(p, 'utf8') }, - 读取本地文件dsh-geek-sidebar/parts/smoke.mjs:32
return readdirSync(p, { withFileTypes: true }).map((d) => ({ name: d.name, type: d.isDirectory() ? 'directory' : 'file', size: null, target: join(p, d - 读取本地文件dsh-geek-sidebar/parts/smoke.mjs:79
const src = files.map((f) => readFileSync(new URL('./workbench/' + f, import.meta.url), 'utf8')).join('\n') - 写入本地文件dsh-geek-sidebar/parts/smoke.mjs:96
writeFileSync(join(dir, 'smoke-a.txt'), 'hello smoke', 'utf8') - 写入本地文件dsh-geek-sidebar/parts/smoke.mjs:97
writeFileSync(join(dir, 'smoke-b.bin'), Buffer.from([0, 1, 2, 255])) - 写入本地文件dsh-geek-sidebar/parts/smoke.mjs:98
writeFileSync(join(dir, '.secret'), 'hidden', 'utf8') - 写入本地文件dsh-geek-sidebar/parts/smoke.mjs:99
mkdirSync(join(dir, 'sub')) - 写入本地文件dsh-geek-sidebar/parts/smoke.mjs:101
mkdirSync(skillDir) - 写入本地文件dsh-geek-sidebar/parts/smoke.mjs:138
writeFileSync(join(dir, 'watched-new.txt'), 'watch-me', 'utf8') - 读取本地文件dsh-geek-sidebar/parts/smoke.mjs:178
ok('writeFile 写盘', wf.ok === true && readFileSync(join(dir, 'smoke-a.txt'), 'utf8') === 'rewritten') - 删除本地文件递归dsh-geek-sidebar/parts/smoke.mjs:209
rmSync(goneDir, { recursive: true, force: true }) - 读取本地文件dsh-geek-sidebar/parts/smoke.mjs:229
ok('qnCreate 磁盘写入验证', readFileSync(join(qnDirTmp, '测试便签.md'), 'utf8').includes('这是第一条便签正文')) - 删除本地文件递归dsh-geek-sidebar/parts/smoke.mjs:311
if (landed) rmSync(join(trashDir, landed), { recursive: true, force: true }) - 删除本地文件递归dsh-geek-sidebar/parts/smoke.mjs:765
rmSync(dir, { recursive: true, force: true })
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 重排页头
- 扩展侧栏
- 管理归档会话
README
由 DeepSeek 最新模型翻译生成DSH Geek UI
DeepSeek Harness Web 工作台的极客增强组件:页头重排 + 极客侧栏 + 归档管理,三个让 dsh web 好用到离不开的静态 bundle。
npm npm npm dsh license
这是什么
dsh web 官方工作台够用但偏“素”:侧栏只有会话列表、页头按钮挤成一排、归档进去就出不来。Geek UI 把这三块补齐——不 fork、不改平台源码,纯 Cordis 插件(slot 注入 + host HTTP 路由),装完即用,随 profile 重启常驻。
| bundle | 版本 | 一句话 |
| dsh-geek-sidebar | v2.1.0 | 工作台侧栏 + 文件管理器/预览 + 便签与划选引用 + 技能管理 + @文件提及桥 |
| dsh-geek-header | v0.5.0 | 页头重排分段条 + 第三方插件区 + 生成标题 + 系统提示词查看 |
| dsh-geek-archive | v1.2.1 | 已归档会话「放回对话 / 永久删除」,补上平台缺失的反向操作 |
安装
dsh plugin --profile web add dsh-geek-sidebar
dsh plugin --profile web add dsh-geek-header
展开完整文档(README 剩余 1 节)
DSH Geek UI DeepSeek Harness Web 工作台的极客增强组件:页头重排 + 极客侧栏 + 归档管理,三个让 dsh web 好用到离不开的静态 bundle。 npm npm npm dsh license 这是什么 dsh web 官方工作台够用但偏“素”:侧栏只有会话列表、页头按钮挤成一排、归档进去就出不来。Geek UI 把这三块补齐——不 fork、不改平台源码,纯 Cordis 插件(slot 注入 + host HTTP 路由),装完即用,随 profile 重启常驻。 | bundle | 版本 | 一句话 | | dsh-geek-sidebar | v2.1.0 | 工作台侧栏 + 文件管理器/预览 + 便签与划选引用 + 技能管理 + @文件提及桥 | | dsh-geek-header | v0.5.0 | 页头重排分段条 + 第三方插件区 + 生成标题 + 系统提示词查看 | | dsh-geek-archive | v1.2.1 | 已归档会话「放回对话 / 永久删除」,补上平台缺失的反向操作 | 安装 dsh plugin --profile web add dsh-geek-sidebar dsh plugin --profile web add dsh-geek-header dsh plugin --profile web add dsh-geek-archive # 可选 自定义了 profile 名就把 web 换成你的。装完刷新浏览器即可,无需改任何配置。 ⚠ 平台版本要求:dsh ≥ 0.1.5-rc.1,与 0.1.2 及更早版本不兼容。 本轮是跟随平台 0.1.5 的側边栏大改:预览从旧版依赖的 details 栏(平台已移除)迁入官方右栏 tab 体系,页头适配 0.1.5 新盒模型与新增的 corner 槽。仍在 0.1.2 的用户请装旧版(sidebar v2.0.5 / header v0.4.7 / archive v1.2.0)。 dsh-geek-sidebar · 极客侧栏 1. 项目与会话管理 左栏就是你的项目指挥部:顶部一键切换工作区(还能自定义任意目录)、git 分支徽标一目了然;正在跑的会话有个小圆点提醒你,别的工作区有几条会话在跑,工作区按钮上的数字徽标直接告诉你,不用挨个点开看。每个项目的会话按时间列开,右键即归档。git worktree 也能直接查看和新建。 项目与会话管理 2. @文件提及——把文件带进对话有两条路 在输入框敲一个 @,当前项目的文件立刻列出来等你挑,路径随打随筛、可逐级进入目录;或者干脆在文件管理器里找到它,行上那个 @ 按钮点一下,它就进了输入框。选中哪个,哪个文件就进入对话上下文——从此不用手动复制粘贴路径。 @功能 3. 文件管理器与预览 侧栏下半区是完整的文件树:上传、下载打包、搜索、两击确认删除都有;chat 里的产出 chip 和工具卡文件链接点击不跳外部应用,直接在官方右侧栏的「预览」页打开(页头 ③ 展开钮即预览入口)。Markdown 有 Source / Preview / Diff 三态,代码高亮、CSV 表格、图片缩放齐全,改完点“确定保存”才落盘,不点头也不担心误存。右栏分栏后每栏预览独立,可同时对照两个文件;文件 tab 可跨栏拖拽移动(0.1.5 新增)。 文件预览与编辑 4. 知识库目录 侧栏底部“笔记”页签是你所有长效知识库目录的入口:多个目录随时切换,隐藏文件也照常显示。点开一篇,右边就是排版好的预览。 笔记功能 5. 便签与划选引用 底栏一键打开全局便签抽屉,Typora 式编辑即预览,轻量随手记、不绑会话。在聊天记录中划选任意文本自动弹出气泡,可一键“存入便签”,或生成智能紧凑小胶囊“引用到对话”(长文本自动提取首尾词,输入框不刷屏,发送时完整展开交付模型)。每条便签与目录行上也有 @ 按钮:便签 @ 按该 .md 文件路径提成 @ 提及(与第 2 点的文件 @ 同机制),目录 @ 则把目录下全部便签各自按路径提成 @。成熟便签支持 AI 提炼标题、跨目录总览拖拽归类,以及一键转存至知识库或当前项目,存储目录随心自定义。 便签与划选引用 6. skill 管理 底栏“技能”一键打开技能中心:你装过的所有技能都在这儿,能看来源、版本和说明,开关随点随切,还能直接搜索安装新技能、检查更新。 skill 管理 dsh-geek-header · 页头重排(v0.5.0) 第一行第三方插件区(geekUiHeader 服务),第二行收纳页签/谱系/动作平铺成统一分段条,面包屑文字与 Session log 隐藏,拥挤时动作折叠进 ⋯ 菜单;「生成标题」读整段对话、用你当前选中的模型生成会话标题;「系统提示词」展开查看当前生效的完整 system 字段(会话流内对应行已隐藏)。 ┌──────────────────────────────────────────────────┐ │ [第三方插件区 · geekUiHeader] │ ← 第一行,空则整行塌陷 │ [对话][轨迹][生成标题][系统提示词][谱系][动作…][⋯] │ ← 第二行,pi-web 式分段条 └──────────────────────────────────────────────────┘ 实拍(对话视图右上角:对话/轨迹 页签 + 生成标题,挤不下的动作折进 ⋯;面包屑文字与 Session log 已隐藏): 页头重排 布局细节与第三方接入方式见 dsh-geek-header/README.md。 dsh-geek-archive · 归档管理(v1.2.1) dsh 官方的归档是单向门——归档了就再也回不来。这个插件在设置面板加一节「归档管理」(导航末位,归档盒图标),列出全部已归档会话,每条两个按钮:放回对话(解除归档回到列表)和删除(解除归档 + 删落盘目录 + 通知客户端剔除,两次点击确认)。host 端经 workspace registry 私有方法读写归档集合,改动由平台 WorkspaceFeed 自动推帧,前端零刷新。 归档管理 实现细节与已知边界见 dsh-geek-archive/README.md。 仓库结构 dsh-geek-ui/ ├── dsh-geek-sidebar/ # 极客侧栏(host 路由 + client 五 feature) ├── dsh-geek-header/ # 页头重排 + 生成标题 ├── dsh-geek-archive/ # 归档放回/删除 └── screenshots/ # 本文实拍图 三个包均为自包含静态 bundle:host 半只挂 /__dsh-__/ 前缀的 HTTP 路由,client 半经 window.__ModuleLoader__ 直发浏览器,无打包器、无构建产物依赖。均标注 dsh.verifiedWith: 0.1.5-rc.1,脆弱点(私有面、DOM 结构依赖)在各自源码注释中登记。 开发 各包内可独立验证: cd dsh-geek-sidebar && npm run build && npm test # parts/*.js 拼装 lib/client.js + smoke cd dsh-geek-header && npm test cd dsh-geek-archive && npm test 部署到本机 profile:~/.dsh/profiles/web 以 file: 安装,源码改动后在该目录 pnpm install --force 重打包副本。 许可:MIT(dsh-geek-sidebar 部分设计参考自 pi-web,同 MIT)
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kaerf15/dsh-geek-ui
重排页头、扩展侧栏并管理归档会话,让工作台更好用
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,344已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,045已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,202已汉化DSH
71.1
这是你的仓库?认领条目