dsh-better-sidebar
需要 Node.js 20 或更高版本及 DSH 0.2.1-rc.2 支持线;尚未验证 DSH RC3 的实际运行。在使用 MiKTeX ZIP 的环境中,目录下载可能失败。
✨ 特色功能
|
|
| 🗂️ 文件管理懒加载目录树、Git 变更着色、实时 watch 刷新、全局搜索、拖拽上传、多选批量操作、「打开方式」双源菜单。 |
🌿 GitSource Control(Merge / Staged / Changes 三组、带 Generate 的消息框、分支与同步底栏)+ 本轮 AI 改动视角合一,并在同一页签内给出只读提交图(泳道、引用徽章、分支筛选、提交详情)。 |
📝 可编辑编辑器与预览可编辑的 CodeMirror(官方预览是只读)、Markdown + Mermaid + 浮动目录、HTML 沙箱预览、.jsonl 记录卡片、超大文件分页预览、传输无大小上限。 |
🧩 任务管理子代理拓扑实时预览(工作流图 / 树双模式)+ 后台任务清单:退出码、实时输出、强制终止。 |
| 💬 侧边对话(beta)Codex 风格侧边线程:继承主会话完整上下文独立运行、实时推送、排队可见可撤回、每个线程独立选模型、一键提升为顶层会话。 |
🖥️ 底部工作台自绘底部面板与原生右侧栏同时展开:拖拽分栏、多终端页签、按会话持久化布局。 |
还有:📂 sidebar_open 工具让模型主动打开侧边栏 · ⚡ 启动只拉 ~325KB 核心、重依赖按需加载 · 🌏 多语言跟随 DSH · 📱 窄屏自动切换全宽抽屉
🌿 Git Graph(只读提交图)
在 Git 面板顶部切到 Git Graph:本地分支、远程跟踪分支与 HEAD 的提交节点、分叉与合并连线。分支下拉框只筛选历史,不会 checkout 或 fetch;提交行是单行(泳道连线 + 引用徽章 + 标题),hover 看作者与短 hash,选中后在底部面板看完整提交信息与 diff。历史按页加载,分页期间 refs 变化会提示刷新;读取有上限(每页 200 条、偏移 10,000、分支 1,000),超限明确报错。首版不显示 tag,也不提供任何改写历史的操作。
🧭 dsh-context 诊断入口(可选)
装上 dsh-context 插件后,三处各有一个直达该会话 Context(上下文) 视图的入口:任务管理页的代理节点详情卡、后台任务输出窗(按任务的真实属主会话寻址,而不是它被挂在哪个会话名下)、以及会话标题栏。入口只在 dsh-context 的 Context 页面确实注册时才出现——没装、没启用或该页面被隐藏的部署不会显示任何控件;一次跳转进行中时,三个入口一并禁用。跳转失败只报一条可关闭的提示(浮在窗口底部),空闲时不新增任何轮询。
安装与使用
通过 NanoAI 插件管理器安装此归档,按宿主提示完成启用后硬刷新浏览器(Cmd/Ctrl+Shift+R)。需要 Node.js 20 或更高版本及 DSH 0.2.1-rc.2 支持线。旧版宿主需要兼容的旧插件版本;不要使用浮动的 npm latest 代替此归档。
终端由 DSH 宿主提供;如果提示宿主未提供终端能力,请检查宿主终端控制器。Windows 上的目录下载可能受本机 ZIP 工具限制。
🔌 插件生态
ctx.betterSidebar 向所有插件开放 registerTab / registerFileViewer 两个扩展点,内置 6 tab + 4 viewer 与第三方插件走同一套 API。GitHub topic dsh-better-sidebar 下已有 30+ 生态插件;完整接入文档见 [docs/external-plugin-guide.md]([repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/docs/external-plugin-guide.md)。
import type {} from 'dsh-better-sidebar' // 触发 ctx.betterSidebar 类型合并
export const inject = ['betterSidebar']
export function apply(ctx: Context) {
ctx.effect(() => ctx.betterSidebar.registerTab({
id: 'my-plugin:db', title: 'Database', component: ({ scope }) => <DbView sessionId={scope.sessionId} />,
}))
}
📑 Tab 插件(注册侧边栏页面)
🖼️ 预览插件(注册文件预览器)
🧰 增强与工具
📣 上架你的插件:给仓库打上 dsh-better-sidebar topic 即出现在 topic 页;再向 [src/client/plugins-tabs.ts][r2] / [plugins-viewers.ts][r3] 提一条 PluginEntry PR,即可进入设置页内置推荐目录。
| 操作 |
按键 |
| 保存编辑 |
Ctrl/Cmd + S |
| 文件内查找 / 替换 |
Ctrl/Cmd + F |
| 查找下一个 / 上一个 |
Ctrl/Cmd + G / Shift + Ctrl/Cmd + G |
| 选中下一个相同片段 |
Ctrl/Cmd + D |
| Git 提交 |
Ctrl + Enter |
| 关闭 Tab |
鼠标中键 |
| 拆分/合并分栏 |
拖 Tab 到分栏边缘 / 中间 |
| 引用文件到输入框 |
悬浮行尾 @文件 按钮 |
- 路由受 Host 头信任围栏保护(与
/api 一致);fs.write 原子写入;git 只调 CLI、绝不设置身份
- ⚠️ v0.23.0 起文件系统路由不做工作区包含检查:能读写宿主用户可访问的任意路径(只受 OS 权限约束)——调用方不能再把这些路由当作被围栏保护的接口
- HTML 预览在不透明源沙箱 iframe 中渲染;设置页可按功能关闭沙箱(默认关闭,带警告文案)
- Git 无 push/pull/fetch;文件树只对已展开的目录做 watch;Markdown 预览渲染的是已保存文件
- 只读预览的格式(表格 / PDF / 图片 / Office)由 DSH 内置文档预览渲染,实现随宿主版本走;浏览器视图只在 desktop profile 存在
- 未保存草稿在关闭标签页 / 删除文件 / 刷新页面前都会先确认;磁盘被外部改动后再保存会被拒绝,不会静默覆盖
- 移动端(<768px)无底部面板,其标签页并入右侧栏全宽抽屉
💬 社区
推荐添加 QQ 群(577011007)
🤝 参与贡献
- 代码改动走 PR:
feat/* / fix/* 分支开发 → gh pr create;提交前跑 pnpm typecheck && pnpm build && pnpm test(或 make check)
- 收录生态插件:给仓库打
dsh-better-sidebar topic + 向 [src/client/plugins-tabs.ts][r2] / [plugins-viewers.ts][r3] 提 PR
- 仓库工作规范见 [
AGENTS.md][r4]
👥 贡献者
🔗 友情链接
[r1]: [repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/CHANGELOG.md
[r2]: [repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/src/client/plugins-tabs.ts
[r3]: [repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/src/client/plugins-viewers.ts
[r4]: [repository withheld]/blob/83faf70940160e5cd4c5332f5400aa8f4dbbb6d6/AGENTS.md