Repository navigation
Conversation
Adds three user-facing capabilities on top of the existing text-only browser bridge, all opt-in and all gated by the extension's per-call approval: - Developer tools (Chrome DevTools Protocol): an opt-in group that exposes Elements/Console/Network inspection (computed styles, box model, matched rules, live CSS/attribute edits, page-context JS evaluation, recorded console output, captured requests and bodies with credential headers redacted by default) plus a character budget (devToolsMaxChars) for the results. - Viewport screenshots: browser_screenshot captures the controlled tab and returns an image, with host permissions widened to <all_urls> and an approval required on every call. - Panel composer controls: permission modes, model strength, and the / command menu in the side panel, backed by new host methods (permission.catalog, session.permissions, session.setPermission, commands.list, commands.execute, skills.list) that are never offered to the model as tools; image paste and drag-drop attachments in the composer. Extension and bridge tests cover each area (devtools controller/elements/network/ serialization/authorization, screenshot, panel api/commands/composer/permissions/ image transfer, remote-host-api, session deferral), and the smoke script exercises the new host methods.
上游自 2026-10-01 起无提交、最后 release 为 v0.1.3,本 fork 暂时承担维护并 把更新源指向自己;对上游的改动统一走 omdsh-dev/dsh-browser 这条 PR 承载分支, 当前对应 issue omdsh-dev#120 与 PR omdsh-dev#121。
概述 / Summary新增可选的开发者工具组:查看与修改元素样式、在页面中执行 JS、抓取网络请求。默认关闭,需要额外授权。
动机 / Motivation参考 #114 现有工具读不到计算样式与布局信息,样式类问题只能得到"页面上有这些元素",无法回答"为什么是这个尺寸""被哪条规则覆盖",这类问题以前直接走进死胡同。 改动内容 / ChangesHost 侧(bridge-browser):
扩展侧(dsh-browser):
两条实现说明:
测试 / Testing
新增用例覆盖:debugger 会话生命周期、网络抓取的事件处理(含 ExtraInfo 情形)、元素定位与样式修改、授权策略("完全控制浏览器"与来源白名单都不覆盖该组)、manifest 的平台差异。 Chrome 实测:查看元素计算样式与命中规则;加一条 outline 后回读确认样式属性已写入;控制台执行 JS 并读回 JSON 与一个带栈的未捕获异常;抓取一次 fetch 的状态、头、时序与格式化后的 JSON 响应体。 影响范围 / Impact
|
概述 / Summary新增 改动内容 / Changes截图工具:
审批:
侧栏:
测试 / Testing
影响范围 / Impact
|
概述 / Summary侧栏输入区现在可以直接选择会话的权限模式、选择模型及其推理强度,并支持输入 动机 / Motivation面板是用户唯一持续可见的操作面,但它的表达力长期只有"发一条消息"。要换模型、收紧权限、跑一条 host 命令,用户只能离开面板。把这些控件补齐,面板才真正覆盖日常操作。 改动内容 / Changes输入区控件:
Host 侧新增六个面板专用方法,只服务于侧栏 UI,不作为工具暴露给模型:
测试 / Testing
新增用例: 影响范围 / Impact
|
|
注意到 #116 也实现了截图能力。对比了两边的实现,主要差异如下: 图片交付:#116 将像素写入本地文件、向模型返回路径,页面通道保持纯文本优先;本 PR 将图片存入附件存储后以内容块直接进入模型上下文。由此本 PR 每次截图少一次工具调用——#116 的模型拿到路径后,需再调用读文件工具才能看到图片;连续多张截图时该差异会成倍放大。纯文本模型由运行时投影为占位符,不受影响。 权限路线:#116 采用 optional 审批:本 PR 对每次调用弹出侧边栏审批,仅"完全控制浏览器"可跳过。 受保护页面:chrome:// 等页面上所有工具均被扩展拒绝执行;#116 单独放行截图( 附带改动:本 PR 另包含侧边栏粘贴、拖拽添加图片。 |
dsh 0.2.1 把 Gateway/Connection 的调用方身份改成必填:wireStream.open、invoke、 createSharedFetchHandler().fetch 都必须显式传入 PeerScope,缺失时会在 Gateway 内部 以 stream-failed 崩掉(Cannot read properties of undefined (reading 'signal'))。 bridge 现在通过 connection.createPeer 自建一个 owner principal、interactions=answer 的 in-process Peer,统一用于每次调用、 流和 /result 回传。 同时跟随 0.2.1 的插件契约变化: - 移除运行时 invariant 插件与 ./invariant 导出(0.2.1 已删除该扩展点) - 清单补 dsh.manifestVersion=1、engines.dsh 与 node 引擎范围 - 新增 locale/en.json、locale/zh.json 与 icon.svg,供插件页展示 - session-persistence-jsonl 改为 function-style 插件,测试改用命名空间导入 - smoke 断言改为:keepInbox 下未认领的页面快照跨重启保留,不再被取消
概述 / Overview浏览器桥插件与扩展跟上了 dsh 0.2.1 的插件接口:在新版 dsh 上恢复加载、建立连接并调用浏览器工具,同时在插件管理页显示自己的标题、简介与图标。 动机 / Motivationdsh 0.2.1 收紧了插件契约:Host 调用与流需要显式的调用方身份(Peer)、运行时 invariant 扩展点被移除、会话持久化后端改为函数式插件、插件清单新增版本与本地化字段。未适配的插件在握手后第一次 Host 调用就会失败,用户侧表现为侧栏一直「重连中」、所有浏览器工具不可用。 改动内容 / Changes
测试 / Testing
影响范围 / Impact
|
DSH Desktop 启动 Host 时固定 `--port 0`,本地 Web 端口每次启动都由系统 随机分配,扩展原有的固定端口探测(3080/3081/3090/14389)无法命中。 - 桥接插件新增固定回环信标:在 43189–43198 范围内取第一个空闲端口回答 `/ext/bridge-config`,通告真实桥地址与进程元数据(pid/启动时间);只绑 127.0.0.1、不发 CORS 头、校验 Host 头(防 DNS rebinding)、不携带 token, 端口冲突按序重试,全部被占只告警不影响桥。 - 扩展启动顺序:已填地址优先(回环地址先预检);失败才做一次自动探测 (上次地址 → 默认端口 → 信标端口 → 扫描平台临时端口区间),命中即连; 全空显示「未找到服务」并在本次面板租约内不再重试。 - 设置页新增「自动检测」:手动触发完整枚举(必定扫全区间、不早退), 列出本机所有实例(地址/来源/PID/当前使用),点击条目填入地址;地址仍可 手动填写。 - 协议仅新增可选字段(pid/startedAt/beacon、status.discovery/address 与 discovery.* 面板消息),旧版本互相兼容。 - 测试:新增信标、端口区间、探测编排、面板交互用例;smoke 在真实 dsh `--port 0` 下断言信标返回同一桥地址。 验证:pnpm run typecheck、pnpm run test(桥 208 / 扩展 572)、pnpm run build、 node scripts/smoke-runtime.mjs 全部通过。
概述 / Overview侧栏现在能在 DSH Desktop 每次启动随机分配端口的情况下重新找到本机 dsh:桥接插件新增固定回环信标,扩展在打开面板时只自动探测一次,设置页新增「自动检测」可列出本机所有实例并点选填入地址。 The side panel now finds a local dsh even though DSH Desktop assigns a new random port on every launch: the bridge plugin advertises a fixed loopback beacon, the extension makes a single startup pass, and Settings → Detect lists every local instance so you can pick one. 动机 / MotivationDSH Desktop 用 改动内容 / Changes
测试 / Tests
影响范围 / Impact
|
本 PR 汇总 fork 仓库新增的功能。changelog 见 fork 仓库的 CHANGELOG.zh-CN.md;每个功能的详细说明(动机、工具与方法、审批与配置、测试与边界)见下方对应评论。
browser_screenshot视口截图工具(每次调用单独审批,需要<all_urls>主机权限),并支持在侧栏粘贴或拖拽图片随消息一起发送。开发者工具组默认关闭,只有 host 显式打开才注册;所有高权限动作保持逐次审批。
后续每次功能更新都推到同一条分支,并在本 PR 内回复对应功能的详细说明与 changelog 条目。