packages/dsh-git-graph
zhu1090093659/dsh-web输入框上方提供 Git 分支选择器,并把分支泳道与提交历史画成图谱,沿着时间线找到任意变更。
为 DeepSeek Harness 提供类 VSCode 编码体验:基于 Monaco 的中央文件编辑器(文件页签、Ctrl+P 快速打开、状态栏),并对 Agent 的 edit/write 结果进行交互式差异审查(逐处采纳/拒绝、回滚、归档),状态跨重启持久化。
DSH 上的类 VSCode 编码体验:Monaco 文件编辑器 + Agent 差异审查 + LSP 智能。
由 @dsh-external/dsh-edit-review 重构而来。Ctrl+Shift+P,19 条命令开箱即用,可编程扩展检测到 DSH 0.1.5+ 官方右侧 Sidebar(ctx.sidebarRightTabs / ctx.sidebarRight)时, 编辑器注册为官方侧边栏 Tab,AI 对话(中央)与文件编辑(右侧)同屏,支持官方 多标签 / 分栏 / 浮出 / 全屏,打开路由即开即展开,官方引导页提供入口。
(桥已归档,仅作旧版回退)> 中央文件编辑页签(零新依赖完整可用); 编辑器顶部与设置页「兼容性」子 Tab 给出对应引导。
ctx.sidebarRight.openResource直达右侧栏;「文件链接使用工具」为 自动 / VSCodeMode 时以 extension 档认领 dsh-resource://file/**(Monaco 打开,含行号定位),为「官方侧边栏」档时走 官方文本查看器;畸形地址自动回落官方查看器。
随工作区持久化;固定 = 保护,批量关闭永不误关固定页签)。
maxOpenEditors,默认 10,0 = 不限制):超限时自动关闭最久未使用的页签;固定页签与当前活动页签受保护,脏页签在关闭前静默落盘。
直接横向滚动页签栏;不溢出时不接管,Shift+滚轮 沿用浏览器原生横滚。
保存·全部关闭(Ctrl+F4 关当前)/ 复制路径·复制相对路径 / 在文件资源管理器 (视图)中显示。关闭前未保存页签静默落盘;浏览器无法实现的条目(向右拆分 / 新窗口)不提供。
选中文本自动填入搜索框并立即搜索(多行选区取首行;填入后全选,便于直接改写)。
.md / .markdown 后,工具栏「预览」按钮、Ctrl+Shift+V 或命令栏「切换 Markdown 预览」切入 GFM 渲染(标题/列表/表格/代码块/ 引用/KaTeX),「以源码打开」切回编辑。渲染走官方 MarkdownText 原语,零新增依赖、 自动跟随 DSH 主题;旧版 DSH 缺该原语时降级为纯文本预览。活动文件不是 Markdown 时 不吞 Ctrl+Shift+V(保留「粘贴为纯文本」)。
plans/、DSH .dsh/plans/ 下的 Markdown 计划文件,以及成功生成且以 # 计划: / # 计划: 标题显式关联的 Markdown,默认以预览打开; 指定行号的链接仍进入源码定位,普通 Markdown 的既有打开方式不变。 当前会话成功写入/修改计划文件、提交完整计划后自动打开预览;刷新、历史翻页、重连和 切换会话不会重播旧计划。官方「打开计划」及待审批计划同样转入文件编辑器的只读计划 页签(最多保留 32 份,退出编辑器后不持久化虚拟正文),不写磁盘、不接入 LSP/SVN/保存; 审批仍使用对话中的官方控件。打开失败可点击「在官方计划查看器打开」,不影响原审批。 缺少官方 Sidebar/计划服务的旧版 DSH 保留原查看器;自动生成检测需要 Session 事件源。
Ctrl+F / Ctrl+G / Ctrl+S /700ms 防抖自动保存;顶部工具栏显示 路径 / 语言 / Ln,Col / 保存状态,提供 差异 / 侧边栏 / 刷新入口。
←/→、Alt+←/→、Ctrl+Alt+- / Ctrl+Shift+-、鼠标侧键 XButton 均可触发);后退后新导航 自动清空前进栈。
Ctrl+Shift+P(或 F1)唤出 VS Code 式命令面板:输入即过滤(中文 / 分类 / 命令 id 均可命中),↑↓ 选择、Enter 执行、Esc 关闭,每行显示 命令名 / 分类 / 当前键位;需要打开文件的命令在空编辑器时自动隐藏。
ui/commandCatalog)驱动命令栏和官方快捷键目录;键位查看/改绑统一走 DSH 官方快捷键配置(设置 → VSCodeMode → 通用 → 「打开官方快捷键配置」,或 Ctrl+/),插件不再自建录键界面,绑定由官方服务持久化。 旧版 DSH 没有该服务时继续使用原有窗口按键派发,旧 keybindings 设置仍可生效。
window.__edrvCommands__ 暴露 register() 注册命令;插件不再提供独立的运行时键位注册,改用 DSH 官方 shortcuts 配置。
切换侧边栏 / 工作区搜索 / 切换 Markdown 预览 / 后退·前进 / 上下页签 / 关闭当前页签 / 上下编辑行 / 转到定义 / 查找引用 / 触发 AI 补全 / 配置代码片段 / 插入代码片段 / 选中内容加为引用。
支持 .code-snippets:Ctrl+Shift+P →「代码片段:配置代码片段」打开居中浮窗 (现有片段文件列表 + 新建入口),在 Monaco 中按普通文件编辑(JSON 高亮 / 保存即生效 / 支持 scope 字段)。
~/.dsh/snippets/(所有项目)+ 项目/.dsh/snippets/(随仓库共享);文件名即生效语言 (lua.code-snippets → 仅 lua,global.code-snippets → 全语言), 新建时可选生效语言。
.lua 等文件时 prefix 自动列出(片段图标 +body 预览,Tab / Enter 展开,$1 / ${2:默认值} 占位符与 $TM_* 变量可用);也可「插入代码片段」按语言筛选插入光标处。
snippets.list/read/save/remove/entries;保存后自动刷新补全缓存。选中内容后 Ctrl+U 把选中行范围加为引用(送入对话上下文,等价 VS Code 的 「Add Selection to Chat」);无编辑器 / 无选中时该键位不吞键,正常输入不受影响。 (v0.3.1 修复可用性判定:改用与输入实现无关的 .edrv-editor-row .monaco-editor 判据,替换被 Monaco EditContext 输入通道取代的 textarea.inputarea 探测。)
caretSpan();无光标信息回落文档末尾,选中区域插在选区右边界而不替换),修复「连续添加多个引用时既有 chip 被销毁并重复为纯文本」。
则不写任何内容并提示重试。
F12 / 右键「转到定义」、Shift+F12「查找所有引用」、Ctrl+点击 引用导航、 Ctrl+hover 可导航标识符下划线提示。v0.4.2 起统一委托完整 Monaco 原生命令: 多结果弹 Peek 让用户选,单结果直跳,取不到定义自动降级「转到引用」。
. / : / ( / [ 自动弹出候选(Ctrl+Space 手动触发)。EmmyLua 的注释索引(---@class / ---@field / ---@type)会被解析为真实的成员列表, 即对 ---@class 标注的实例打 p. 能列出注解声明的字段/方法;候选项带类型图标、 弃用标记与片段展开(${1:占位})。文档走 completionItem/resolve 惰性拉取,列表响应保持轻量。
(local / function …,luaReservedWords);---@type / ---@param 等注释内的基础类型 (number / string …)即使在运行中 quickSuggestions.comments='off' 也会自动弹出; 是否请求补全候选按适配器能力位裁决(completionCap)。
(memberScope),补全不再空白。
( / ,)显示参数签名并按当前实参高亮;多签名可切换。
(this、pTarget 这类)同样能跳到声明。
Host 捕获 agent 的 edit / write(tools/result),客户端统一使用唯一一个 挂在 DSH conversation.input.dock 的 DiffBox 实例:
并聚焦差异;编辑器打开后 → 完整操作条(Keep / Undo / 跳转 / 回滚 / 归档对比), 不会再出现第二个差异栏。
旁车 .dsh-edit-review.json(重启不丢)。
Keep 记账后归档;Undo 对已不在文件中的差异不改动文件、直接按不采纳归档 (状态栏提示「其中 N 处已不存在于文件,未改动」)。
assets/vendor/monaco AMD 构建随包发布,经 /edrv/vendor/* 前缀路由全离线可用。 版本锁定 monaco-editor@0.42.0-dev-20230906(commit e7d7a5b0),用 node scripts/vendor-monaco.mjs [--force] 从 npm registry 复现铺入 (版本 + commit 双重断言,防静默换错构建)。
referencesController / peekView / gotoSymbol齐备),修复「查找引用完全没反应」;本地化只保留英文基线 + 简体中文 (KEEP_NLS),sourceMappingURL 铺入时剥离(官方指向未分发的 min-maps/); 构建后 vendor 约 10.3MB(替换前 21.5MB)。
打开 .pdf 在编辑区页签内直接浏览(连续滚动 / 翻页 / 缩放 / 文本选择, cmaps 支持中文渲染);工具条进入注释编辑:✎ 文本框 / 🖌 画笔 / 🖍 高亮, Ctrl+S 或 💾 保存把批注写回原文件(pdfDocument.saveDocument() → edrv.saveBinary base64 回写,工作区边界 + 32MB 上限约束)。
assets/vendor/pdfjs(build + viewer + cmaps +