面向纯文本 DSH 主脑的模型无关视觉审阅流水线:HTML 逐页截图 + 视觉子代理简报契约(gewu_prep),再把每条审阅发现定位回源码核验真值(gewu_locate);已在 mimo-v2.5 与 qwen3.7-plus 上实测。
安装
# npm 包(预构建)
dsh plugin --profile web add gewu-tools
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:nyantused-cpun/gewu-tools
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
格物审视面:让 DSH 中无视觉能力的模型,通过视觉子代理完成需要「亲眼检查」的任务。
格物:《大学》「格物致知,考察事物而后知」——先把东西看仔细,再下结论。 English: README.en.md
快速安装(npm)
npm i gewu-tools
pwsh node_modules\gewu-tools\scripts\install-gewu-plugins.ps1 -Install # 挂载进 DSH(幂等)
# 或使用 DSH 插件管理器直接安装(需要 dsh.bundle manifest;安装后同样重启会话)
dsh plugin add gewu-tools
# 重启 DSH 会话后 gewu_prep / gewu_locate 即出现在工具目录;-Verify 四绿即安装成功
# 可选:注入自定义规范 preset(默认 community 零注入;也可用环境变量 GEWU_BRIEF_PRESET 指定)
pwsh gewu\scripts\install-gewu-plugins.ps1 -Install -Preset <preset文件路径>
它解决什么问题
DSH 的会话主脑通常是纯文本模型——它读不了渲染出来的页面,自然回答不了「这页方案好不好看、挤不挤、图连对没有」。视觉子代理(如 subagent_vision,mimo-v2.5 等)看得见,但有两个短板:
- 没有会话上下文:它不知道客户铁律、业务标记语义(比如 ⭐ 是「核心能力」不是装饰 emoji),会把有意设计误报成缺陷;
- 会看错:OCR 级误读(字认错)、页码归属被截图边界带偏。
格物把 2026-08-16 在 24 页售前方案上实测收敛的三步流水线做成两个工具:
① gewu_prep 截图 + 简报:HTML 逐页渲染 PNG,并生成一份完整的视觉子代理简报契约
(纪律声明 / 伪影声明 / 页码归属规则 / 输出要求)
② 视觉子代理 派发:把 briefing 全文作为 prompt 调 DSH 原生视觉子代理(subagent_vision 等)
③ gewu_locate 真值核验:把审阅发现中的文字/数字定位回 HTML 源码(页码 + 行号),
count=0 即 OCR 误读,不采信
实测收益:误报率显著下降(简报提供上下文)、关键数字零差错上会(源码核验)、整稿叙事线/密度/跨页一致性可审(子代理多图能力)。
模型无关性声明
本插件在视觉子代理 mimo-v2.5(稳) 与 qwen3.7-plus(洞察强、误报略多) 上实测验证。实测结论:模型档位不决定审阅结果的可信度——
- **简报契约(上下文)**消除无上下文误报:例如把业务标记 ⭐(核心能力)误判为装饰 emoji,实测在无简报的插件模式下系统性发生;
- **真值核验闭环(gewu_locate)**把 OCR 误读与页码偏移挡在采信之外:实测 qwen3.7-plus 的 3 个核心新论断中 2.5 个经不起源码核验,全部被核验环节拦截。
档位差异只体现在审阅风格(高挡洞察更锐、稳挡结论更保守),不体现在结果对错上。无论接入何种档位的视觉模型,本流水线产出均可信、可审计——这也是格物把「核验」固化为流水线第三步的原因。
安装
前置:Windows + Chrome/Edge + Node 24+(仅脚本验证用)。
方式一:npm(推荐,一行安装 + 一行挂载)
npm i gewu-tools
pwsh node_modules\gewu-tools\scripts\install-gewu-plugins.ps1 -Install
# 或使用 DSH 插件管理器直接安装(需要 dsh.bundle manifest)
dsh plugin add gewu-tools
# 可选:注入自定义规范 preset(默认 community 零注入;也可用环境变量 GEWU_BRIEF_PRESET 指定)
pwsh node_modules\gewu-tools\scripts\install-gewu-plugins.ps1 -Install -Preset <preset文件路径>
方式二:社区通道(若已接入 awesome-dsh-plugins 生态)
pwsh <workspace>\.dsh\setup\install-community-plugins.ps1 -Install
方式三:独立脚本(随项目分发)
pwsh gewu\scripts\install-gewu-plugins.ps1 -Install # 幂等
pwsh gewu\scripts\install-gewu-plugins.ps1 -Verify # 只验证
pwsh gewu\scripts\install-gewu-plugins.ps1 -Uninstall # 卸载
pwsh gewu\scripts\install-gewu-plugins.ps1 -Install -Preset <preset文件路径> # 可选:注入自定义规范
-Preset 指定自定义规范 preset(默认 community 零注入;也可用环境变量 GEWU_BRIEF_PRESET 指定)。
安装脚本做的事:在 DSH 的 agent preset(默认 pre-sales,可用环境变量 GEWU_PRESET 覆盖)里追加 gewu-tools 挂载行,指向 <workspace>\.dsh\gewu-tools(安装位,项目目录的 Junction)。
安装后必须重启 DSH 会话(host 插件无热更新)。验证:install-gewu-plugins.ps1 -Verify 应四绿(preset 挂载行 / junction 链 / import 加载 / preset 预设加载)。
使用(主代理视角)
1. gewu_prep(html_path="output\<客户>\<客户>_方案_vN.html",
client="<客户>",
background="<项目定位/关键决策/业务标记语义,如 ⭐=核心能力>")
→ 返回 { pages: [...], briefing: "..." }
2. 把 briefing 全文作为 prompt 调视觉子代理(subagent_vision):
→ 逐页问题清单 + 整体结论
3. 对每条关键发现调 gewu_locate(html_path=..., needle=<发现中的文字/数字>)
→ 页码 + 行号;count=0 说明视觉模型 OCR 误读,该发现不采信
gewu_prep 参数
| 参数 | 说明 |
|---|---|
html_path |
方案 HTML 路径(必填) |
client / background |
写入简报的客户名与背景(强烈建议提供,上下文决定审阅质量下限) |
focus |
关注问题清单(默认:版式/规范一致性/密度/图表可读性/核心论断/跨页一致性) |
out_dir |
截图输出目录(默认 <工作区>/_tmp_vision_test/<文件名>_shots) |
width / height |
视口尺寸(默认 1280x900) |
nav_offset |
sticky 顶导航偏移(默认 64,无 sticky 导航设 0) |
gewu_locate 参数:html_path、needle(待核验文字/数字)、max_matches(默认 8)。
自定义规范注入(preset)
preset 是格物的扩展点:你可以把自己的设计规范、验收标准写成一份 preset 文件,注入到 gewu_prep 生成的简报里,让视觉子代理按同一把尺子审阅你的页面。默认使用内置 community preset(零注入,保持与 1.0.0 一致的社区基线)。
| 字段 | 类型 | 说明 |
|---|---|---|
name |
string | 非空字符串,preset 名称 |
version |
string | 非空字符串,preset 版本 |
defaultFocus |
string | null | 覆盖默认关注问题清单;传 null 使用内置默认 |
sections |
string[] | 注入简报正文的规范/验收标准段落;单段 ≤ 2000 字,总长 ≤ 8000 字 |
dispatchHints |
string | null | 调度提示(例如建议一次吃多少页);可空 |
requires |
object | 预留扩展依赖声明;非法对象会导致降级 |
最小示例 brief-preset.js:
export default {
name: "my-design-standard",
version: "1.0.0",
defaultFocus: "版式一致性、信息密度、图表可读性",
sections: [
"视觉规范:主色 #123456,标题左对齐,卡片间距 24px。",
"验收标准:每页必须有一条核心论断,核心数据需与业务标记语义一致。"
],
dispatchHints: null,
requires: {}
};
preset 文件非法时(非对象、缺少 name/version、字段类型不符、sections 超长等),格物自动回退 community,并在 gewu_prep 返回 preset_degraded: true 与 preset_error 说明原因。
CLI 用法(跨宿主)
index.js 可脱离 DSH 独立运行;无 DSH 宿主(Trae/Codex/Kimi 等)可经此 CLI 获得与插件同源的截图+简报+核验产物。
# 截图 + 简报(与 gewu_prep 同源)
node gewu\index.js --prep <html> [--client <客户>] [--background "..."] [--focus "..."] [--out-dir <dir>] [--width <n>] [--height <n>] [--nav-offset <n>]
# 真值核验(与 gewu_locate 同源)
node gewu\index.js --locate <html> --needle "<文本/数字>" [--max-matches <n>]
# 冒烟别名(旧位置参数,等同快速自检)
node gewu\index.js <html> [outDir]
产物:--prep 在 --out-dir(默认 _tmp_vision_test/<文件名>_shots)写 prep_result.json + briefing.txt;--locate 在 _tmp_vision_test/<文件名>_locate/ 写 locate_result.json。
退出码:0 成功;1 业务失败(HTML 不存在、截图失败等);2 参数错误。
工作原理
- 截图:读 HTML 的
<section>锚点(优先v2-page类),逐页用 headless Chrome 视口截图;sticky 导航经 iframe 上移推出画面;无锚点自动降级整页长截图。宿主进程直起 Chrome——不受 DSH 受限沙箱对子进程命名管道的限制。 - 简报契约(内置在 briefing 里,实测三坑的对应解法):
- 纪律声明:子代理跳过入口协议、不向用户提问、用
read_image读图(防卡死); - 伪影声明:固定视口截图会串页,底部出现下一节标题是截图伪影不是设计问题;页码归属按「视口内下一节内容归下一页」;
- 输出要求:逐页「页码|问题|严重度|修改建议」,只报可见问题。
- 纪律声明:子代理跳过入口协议、不向用户提问、用
- 真值核验:
needle在源码中逐次定位,返回所在 section 页码 + 行号 + 脱标签摘录。
测试
# 冒烟(不经 DSH,直接跑核心逻辑):需 Chrome + node
node gewu\index.js <任意带锚点的 HTML 路径> [输出目录]
# 预期:mode=anchors ok=true pages=N failed=-
目录结构
gewu/
├── index.js # 插件本体(cordis + defineTool,含 standalone CLI 入口)
├── package.json # gewu-tools(dsh.bundle manifest)
├── cordis.patch.yml # dsh plugin add 装配补丁
├── presets/ # 内置 community preset 与 preset 契约
├── README.md / README.en.md
├── CHANGELOG.md
├── LICENSE # MIT
├── docs/TESTING.md # 实测方法与结论摘要
└── scripts/install-gewu-plugins.ps1 # 安装脚本(Install/Verify/Uninstall/DryRun)
兼容性
- DSH 0.1.0-rc.6(cordis 插件 + defineTool 接口)
- 依赖:仅
@deepseek-ai/dsh-tools(peer,经工作区 AiBridge 解析) - 浏览器:自动探测 Chrome/Edge(Program Files / LocalAppData),无需配置
友情链接
以下项目与格物生态互补,欢迎关注。
- 兰亭 Folio:深度语境审阅引擎
- dsh-vision-toolkit:通用视觉工具箱,与本项目互补——它让模型看见,格物让审阅可信
- awesome-dsh-plugin
维护与许可
- 版本:1.1.0(2026-08-17);变更见 CHANGELOG.md
- 许可证:MIT
- 临时文件:wrapper 与 Chrome profile 自动清理
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 31789
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 4052
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1130
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 499
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 482
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 445
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。