Repository navigation
Releases: yffo/dsh-operator
Release list
dsh-operator 0.121.6 — 关闭卡片重启不复活
dsh-operator 0.121.6
关闭的卡片重启后也不再复活
关闭卡片后重启 App,卡片又出现。
- 根因:0.121.5 的
dismissedSessions是内存Set,重启时模块重载就清空。 - 修复:持久化到
localStorage(dsh-operator:dismissed-sessions)——点 × 写入并落盘,启动时读回,新一轮操作时移除。 - 存储不可用时自动退回内存行为。
502 测试全绿。
dsh-operator 0.121.5 — 关闭卡片切会话不复活
dsh-operator 0.121.5
关闭的卡片切会话后不再复活
点过关闭(×)的卡片,切换到别的会话再切回来,它会重新出现。
- 根因:
dismissed只存在组件实例上;切换会话时 dock 组件重新挂载,状态被重置成「未关闭」。 - 修复:模块级
dismissedSessions集合按sessionId记住关闭状态:- 点 × 时写入当前会话 id;
- 组件挂载/同步时如果该会话在集合里 → 保持隐藏;
- 该会话真的开始新一轮操作(working / 等确认)时清除,保持「下次操作再出现」的原设计。
502 测试全绿。
dsh-operator 0.121.4 — header 不换行 + 自动滚动
dsh-operator 0.121.4
折叠 header 真正不换行
0.121.3 只让子元素可收缩,但 flex-wrap:wrap 的容器仍会优先换行——关闭按钮依然掉到第二行。
改为 flex-wrap:nowrap:标题/步骤按 min-width:0 收缩省略,圆点/时长/折叠/关闭按钮始终同一行。
新步骤自动滚到底
步骤是正序排列,新步骤出现时原来要手动往下滚才能看到。现在列表容器挂 ref,
componentDidUpdate 发现步骤数增加就自动滚到最新一行(首次挂载也会滚一次)。
502 测试全绿。
dsh-operator 0.121.3 — 折叠卡片按钮不再换行
dsh-operator 0.121.3
折叠卡片:关闭按钮不再掉到第二行
卡片收起后,关闭按钮(×)有时被挤到标题下面单占一行。
- 根因:
.dop-dock-head是flex-wrap:wrap,收起时标题变长(带上「· 截取窗口」),空间不够就把最后一个按钮换行了。 - 修复:标题/步骤文字可收缩并省略,时长、圆点、折叠/关闭按钮设为不收缩 —— 按钮始终留在同一行右侧。
502 测试全绿。
dsh-operator 0.121.2 — 步骤详情独占一行
dsh-operator 0.121.2
步骤详情固定独占一行
展开某一步时,详情有时出现在下一行、有时挤在行尾(取决于窗口宽窄)。
- 根因:
.dop-dock-row是flex-wrap容器,详情块没有flex-basis,空间够就并排、不够才换行;
旁边的说明行本来就有flex-basis:100%。 - 修复:详情块同样加
flex-basis:100%—— 所有展开详情一律单独一行,与窗口宽度无关。
502 测试全绿。
dsh-operator 0.121.1 — 卡片标签细化
dsh-operator 0.121.1
操作卡片:浏览器工具不再笼统显示
browser_*工具补上具体标签:启动浏览器 / 页面求值 / 查页面元素 / 网页截图 / 读取网页状态 …,不再全部显示「浏览器操作」。- 步骤目标里的长参数(data URL、JSON、超长参数)截断到 60 字符 + 省略号,悬停看全文。
- 展开详情不再重复显示「用时 / 开始」(行内已有)。
502 测试全绿。
dsh-operator 0.121.0 — 页面开发四件套
dsh-operator 0.121.0
页面开发四件套
调研发现浏览器工具的操作层够用(点击/输入/等待/控制台/网络),但页面调试缺四件事,本版补齐:
browser_eval:在页面里执行单个 JS 表达式并返回 JSON 值 —— 读 DOM 状态、样式、存储、耗时。
只接受表达式(不是脚本块);碰 cookie/存储/网络会自动带敏感提示,不阻断(页面开发本来就要读 storage)。browser_selector:按 CSS 选择器查元素 —— 存在性、tag/id/class、可见文本、盒子、关键计算样式、属性。
固定脚本,不执行任意 JS。排查「元素为什么看不见/位置不对」很直接。browser_screenshot:CDP 截图存盘(整页 / 视口 / 按选择器或矩形裁剪),返回路径,用read_image看。browser_launch新增window_size:启动时定视口,用于响应式检查。
实测 Chrome 156 上运行时Emulation覆盖不改变 layout viewport,所以视口只在启动时定;宽度精确,高度含浏览器 UI(视口小约 87px)。
真机验证:eval / selector / screenshot 在真实 Chrome 上全部通过;window_size 宽度精确。502 测试全绿。
dsh-operator 0.120.0 — 自带浏览器实例(按需启动、用完即关)
dsh-operator 0.120.0
自带浏览器实例:独立窗口、用完即关
需要干净的登录环境(换个账号)或后台跑任务、不想动自己的浏览器时,插件现在可以自己开一个实例——
独立 profile(独立 cookie)+ 独立调试端口:
browser_launch headless=false # 返回 pid / port / profileDir
browser_state port=… # 后续 browser_* 都带这个 port
browser_close port=… # 用完即关,临时 profile 自动删除- 按需启动、不常驻,关掉就干净了,不会多一个窗口一直挂着。
- 传
user_data_dir可保留登录态下次接着用;不传则用临时目录、关闭时删除。 - 支持 Chrome / Edge / Brave / Chromium,默认挑已安装的。
真机验证:实例启动 → CDP 可用 → 关闭 → 端口不可达、临时目录已清理。测试 500 项全绿。
dsh-operator 0.119.3 — 卡片防误关 + 圆角 icon
dsh-operator 0.119.3
「正在操作」卡片防误关
- 操作进行中不再提供关闭按钮(折叠仍可用),这一轮结束后才允许关掉。
- 关闭只是隐藏卡片、不影响宿主执行——但会让人看不到进度、容易错过确认,所以禁掉。
圆角矢量 icon
- icon 改为手写 SVG(
assets/icon.svg:圆角底板 + 窗口 + 光标,青蓝渐变发光)。 - 用它渲染出圆角的
assets/icon.png,市场和 README 都显示圆角版。
测试 495 项、preflight 全绿。
dsh-operator 0.119.2 — 低 AX 场景 + 视觉解析接口就绪
装一次、所有 DSH 会话可用的 Computer Use 插件:看屏幕、点鼠标、敲键盘、开应用,带计划/技能/审计/守卫。
本版要点(0.119.2)
低 AX 场景有正式路子了
ocr新增region参数:只识别窗口的一块区域(0–1000),返回坐标仍是整窗坐标,可直接click;密集 UI 里精度更高。cua_observe在 AX 树为空(画布 / 游戏 / 远程桌面 / 自绘界面)时会提示两步走:先ocr读文字与坐标(零依赖),
需要图标级区域时再用cua_parse_visual。
视觉解析接口就绪(等上游发货)
cua_observe透传驱动的capture_id;新增cua_parse_visual,把截图切成文字/图标区域。- 上游
cua-perception扩展仍是 developer preview(官方 catalog 未发布);发布后需要做持久 MCP 连接才能解析
capture_id(现在的一次性cua-driver call做不到),届时启用图标级识别。
修两个真 bug
- 参数 schema 缺
additionalProperties导致整个插件注册失败(所有工具消失);现在npm test会跑preflight拦住这类错误。 ocr region在 sips 触底时静默返回原图,导致坐标整体错位;现在裁剪后会校验输出尺寸,不符就退回整图 OCR。
测试 495 项、preflight 全绿。
安装
dsh plugin --profile desktop add dsh-operator然后 ⌘Q 完全退出 DSH 再打开。首次用 GUI 工具时给宿主 App 授予「屏幕录制 / 辅助功能」。