从零写一个DSH-better-sidebar插件:registerTab到上架的完整教程(附最小代码骨架与避坑清单)
从零写一个DSH-better-sidebar插件registerTab到上架的完整教程附最小代码骨架与避坑清单【免费下载链接】DSH-better-sidebar开放的侧边栏底座支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, terminal, side chat, Git, and sub-agent pages.项目地址: https://gitcode.com/gh_mirrors/ds/DSH-better-sidebarDSH-better-sidebar 是一个开放的侧边栏底座它为 DSH 提供 VSCode 风格的右侧栏内置文件预览编辑、终端、侧边对话、Git、子代理等页面并允许三方插件通过registerTab注册全新的侧边栏页面。本教程带你从零写完第一个 DSH-better-sidebar 插件准备骨架 →registerTab注册页面 → 接入数据 API → 本地挂载验证 → 上架约束与避坑清单全程适用于 v0.19.x。 一分钟理解插件就是「注册 渲染」better-sidebar 从 v0.4.0 起本质上是一个注册表服务你能扩展两类东西新页面tab调用registerTab注册一种侧边栏 tab 类型它出现在侧边栏菜单里用户点击后打开你的 React 页面文件预览器viewer调用registerFileViewer认领一种文件扩展名的渲染用户在侧边栏打开对应文件时走你的组件。内置的 7 个 tabeditor / git / subagent / sidechat / terminal / browser / diff和 6 个文件预览器全部用同一套 API 注册——三方插件与内置功能完全对等内置代码就是最好的参考实现。机制一句话better-sidebar 在apply()开头执行ctx.provide(betterSidebar, service)见 src/client/index.tsx你的插件在inject里声明betterSidebarCordis 保证服务就绪后才激活你注册时机无忧。 服务只存在于浏览器侧client halfhost 半没有ctx.betterSidebar需要读数据时走/sidebar/api/*HTTP 路由。1️⃣ 准备依赖声明三件套声明 peer 依赖避免双实例{ peerDependencies: { deepseek-ai/cordis: ^4.0.1, dsh-better-sidebar: workspace:* }, peerDependenciesMeta: { dsh-better-sidebar: { optional: true } } }必须是peerDependency不是 dependency否则会出现两份实例optional: true保证 better-sidebar 未安装时你的插件照常加载注册代码安全跳过。触发类型合并type-only零运行时耦合import type {} from dsh-better-sidebar // 让 ctx.betterSidebar 出现在 Context 类型上这行 import 编译时被擦除不产生运行时依赖、不触发构建纯度门。类型可以自由共享但绝不能 value-import。版本前提当前版本 v0.19.1需要 DSH0.1.5-rc.1。新能力badge、pluginToggles、urlTarget、fileIcons等请先查ctx.betterSidebar.features再用老版本优雅降级。2️⃣ 最小代码骨架15 行注册你的第一个侧边栏页面完整的 client half 入口骨架如下——注册一个单实例的「Notes」tab// my-plugin/src/client/index.tsx import type {} from dsh-better-sidebar import type { Context } from deepseek-ai/cordis export const inject [betterSidebar] export function apply(ctx: Context): void { ctx.effect(() ctx.betterSidebar.registerTab({ id: my-plugin:notes, // 建议带包前缀避免 id 冲突 title: Notes, icon: NoteIcon /, order: 50, // 菜单排序升序 single: true, // 单实例重复打开聚焦而非新建 component: ({ scope }) NotesView sessionId{scope.sessionId} /, }) ) }两条不可省略的纪律要点原因用ctx.effect(...)包裹注册registerTab返回 disposerfiber 卸载HMR / 禁用插件时自动撤销注册不包 effect下次激活会抛already registered在inject声明依赖Cordis 保证 better-sidebar 先激活注册顺序无关、时机无忧你的页面组件会收到TabComponentPropsscope会话标识请求 API 必带、visible是否当前激活、tab、store等。约定俗成用visible false暂停轮询/订阅内置子代理页就是这个做法。3️⃣ 给页面喂数据调用 /sidebar/api你的组件与内置视图同源同权直接fetch即可响应包裹层是{ value }const res await fetch(/sidebar/api/fs.read, { method: POST, headers: { content-type: application/json }, body: JSON.stringify({ sessionId: scope.sessionId, path }), }) const { value } await res.json()常用方法一览完整清单见 src/client/api.ts方法用途session.cwd会话权威工作目录fs.tree/fs.read/fs.write目录列表 / 读文件文本返回内容二进制返回 head/ 原子写git.status/git.diff/git.log全套 Git 操作settings.get/settings.update侧边栏偏好读写 所有文件路径以会话工作目录为边界越界绝对路径、..解析结果和指向外部的符号链接都会被拒绝别把cwd当成可扩大权限的参数。4️⃣ 可选进阶registerFileViewer 认领文件预览想让.csv这类文件在侧边栏预览再注册一个预览器即可exts声明扩展名、fetchStrategy: customload()自己拉取解析数据、component渲染。要覆盖内置预览器注册同扩展名 更高的priority即可。五种字节策略对照表和匹配算法priority 降序单趟裁决 magic bytes 嗅探详见官方接入指南 docs/external-plugin-guide.md。5️⃣ 挂载验证4 步看到效果~/.dsh/profiles/web/package.json的dependencies加my-plugin: link:你的插件路径~/.dsh/profiles/web/cordis.patch.yml追加一行挂载声明- insert: - id: my-plugin / name: my-plugin在 profile 目录执行pnpm install浏览器硬刷新Cmd/CtrlShiftR。client 半是热加载的无需重启dsh web仅 host 半改动需要重启。插件未加载时已持久化的 tab 会优雅降级成「插件未加载」占位卡不会白屏。6️⃣ 上架市场硬约束 推荐插件目录市场 manifest 硬约束必读计划上架 DSH 插件市场时package.json必须满足由 tests/market-manifest.spec.ts 守护权威规则见 AGENTS.mddependencies/peerDependencies/optionalDependencies一律不得出现cordis按名硬拒optional无效scripts不得包含preinstall/install/postinstall/prepare。进入官方「添加插件」目录DSH 设置页「添加插件」弹窗的数据源是 src/client/plugins-tabs.ts 与 src/client/plugins-viewers.ts——加一条数据即上架目录由 tests/plugin-list.spec.ts 守护。⚠️ 避坑清单发布前过一遍这 6 项#坑规避方式1注册残留下次激活抛already registered永远ctx.effect包裹disposer 交给 fiber 持有2构建纯度门拦截严禁 value-importdsh-better-sidebar只做import type3id 与内置冲突id不可与内置 7 tab / 6 viewer 重复用my-plugin:xxx前缀4host 半读不到数据ctx.betterSidebar只在 clienthost 半走/sidebar/api/*HTTP5文案不跟随语言不依赖内部t()title/description传字符串或() string6面板配色破坏皮肤颜色一律走 DSH 皮肤令牌--dsw-alias-*不硬编码自动兼容全部皮肤 延伸阅读完整接入指南API 全字段 / 匹配算法 / 皮肤契约docs/external-plugin-guide.md服务实现src/client/service.ts内置 tab 注册参考src/client/builtins/tabs.tsx内置预览器参考src/client/builtins/viewers.tsx注册表生命周期测试写自己的测试可参照tests/service.spec.ts逐特性设计文档含实施偏差记录以现状为准docs/plans/【免费下载链接】DSH-better-sidebar开放的侧边栏底座支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, terminal, side chat, Git, and sub-agent pages.项目地址: https://gitcode.com/gh_mirrors/ds/DSH-better-sidebar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

注意:两家顶尖人工智能公司同日发布新模型,调用成本全线下调

注意:两家顶尖人工智能公司同日发布新模型,调用成本全线下调

注意:两家顶尖人工智能公司同日发布新模型,调用成本全线下调 十天前,两家人工智能巨头的掌门人还在向全世界大声呼吁:大家跑得太快了,必须联手把前沿模型的演进速度压下来。十天之后,同一个战场上的枪声却比…

2026/9/25 21:53:34 阅读更多 →
Atlas 300V昇腾推理卡YOLO实战:从环境搭建到性能调优

Atlas 300V昇腾推理卡YOLO实战:从环境搭建到性能调优

群里聊到推理卡,有人甩过来一张截图,问“Atlas 300V 24G 这玩意是运算加速卡吗?能不能拿来跑YOLO?”底下回答五花八门,有说能跑但有坑的,有说这就是个NPU玩具的,还有人直接拿它跟Tesla T4比参数…

2026/9/25 21:53:34 阅读更多 →
PaddleNLP 文本摘要实战:Pointer-Generator 网络(指针生成器)的 Paddle 实现与 ROUGE 评测指南

PaddleNLP 文本摘要实战:Pointer-Generator 网络(指针生成器)的 Paddle 实现与 ROUGE 评测指南

人工智能大模型预训练微调LoRARLHF强化学习分布式训练 【免费下载链接】PaddleNLP Easy-to-use and powerful LLM and SLM library with awesome model zoo. 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleNLP 点击查看 免费下载 本指南围绕 PaddleNLP 中 sl…

2026/9/25 21:52:33 阅读更多 →

最新新闻

东莞市品牌网站建设报价常见报错与解决

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:01:35 阅读更多 →
不会代码选南昌企业网站设计公司,3个坑位看怎么选

不会代码选南昌企业网站设计公司,3个坑位看怎么选

不会代码选南昌企业网站设计公司,3个坑位看怎么选 自己不会代码想做网站,这是很多老板和初创团队最头疼的事。你不懂前端后端,不懂服务器配置,但公司又急需一个能展示形象、能接询盘的官网。这时候去找南昌本地企业网站设计公司,心里肯定打鼓:怎么选才…

2026/9/27 0:01:35 阅读更多 →
哪个网站生鲜配送做的好处免费工具推荐

哪个网站生鲜配送做的好处免费工具推荐

3个坑避开备案迷雾:生鲜配送网站最佳实践 备案流程一头雾水?别慌。刚做生鲜配送站时,我因域名后缀选错被退回3次,损失2周上线时间。后来摸索出 最佳实践…

2026/9/27 0:01:35 阅读更多 →
免费网站空间申请教程详细步骤

免费网站空间申请教程详细步骤

3步搞定免费空间申请:新手建站避坑指南详解 域名买好了,服务器却像天书?别慌,很多创业团队负责人第一步就卡在这里。其实免费网站空间申请教程并非高深理论,而是实操细节的堆砌。今天这篇避坑指南,专为搞不懂域名与服务器关系的新手准备,咱们不整虚的…

2026/9/27 0:01:35 阅读更多 →
百度搜索网页版从零搭建全攻略

百度搜索网页版从零搭建全攻略

百度搜索网页版从零搭建全攻略 改个需求建站公司拖一周,这种憋屈感独立站长都懂。 想彻底摆脱被动,就得掌握从零搭建的能力。 哪怕只是做一个简单的【百度搜索网页版】接口展示页,你也得懂域名、服务器和部署逻辑。…

2026/9/27 0:00:34 阅读更多 →
旅游网站建设与翻译源码下载

旅游网站建设与翻译源码下载

不会代码做旅游网站?3个实战案例教你搞定翻译与部署 你是不是正卡在“想做旅游网站但完全不懂代码”的困境里?别慌,我见过太多河北做民宿、做地接社的朋友,最后都靠这套流程搞定了。今天拆解3个 实战案例 ,从翻译到上线,手把手带你把坑填平。…

2026/9/27 0:00:34 阅读更多 →

日新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/25 20:29:43 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/26 22:52:30 阅读更多 →