dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
AI 产品雷达(AI Product Radar)—— DSH 插件:关注公开来源、识别前后变化、查看原始证据、沉淀产品机会。
面向 AI 产品经理、Agent Harness 重度用户与独立开发者的产品变化研究工具,以 DeepSeek Harness 插件形式提供,入口在官方右侧栏。
它不试图做通用 AI 新闻阅读器。它要回答的是这几个问题:
这是一个能真实抓取、真实比较、真实留下证据的工具。 下表按"证据等级"分开写,不把"跑通了"和"没做"混在一起说。
已经在真实宿主里跑通、且被测试守着的部分:
| 部分 | 状态 |
|---|---|
Host 同源路由(/apradar) | 已实现,22 条端点 |
| 右栏「AI 产品雷达」页签 + 三视图 | 已实现(变化收件箱 / 关注源管理 / 产品机会池),只在右侧边栏渲染 |
| 真实出网抓取 | 已实测(api.github.com 与 4 个真实 Feed,见 TECH-SPIKE.md §6.6) |
| 解析适配器 | 5 类:github_releases(api 优先双端点,因为本机 github.com 不可达)/ github_repo(仓库定位信息,Stars 只做里程碑)/ npm_package(单版本清单)/ rss_atom / html_static;另有 9 条预置模板 |
| 规范化 · 指纹去重 · 差异检测 | 已实现,幂等(内容没变时不产生假变化,已用真实数据验证) |
| 快照与保留等级 | 已实现,可查看最近 20 份快照的差异链,旧快照明示「仅保留摘录」 |
| 定时刷新 | 已实现(15 分钟 – 24 小时;连续 3 次失败自动停用并说明原因),已实测自动触发 |
| 机会池导出 Markdown | 已实现(事实 / 推测分区 + 证据链,按不可信内容转义) |
| 四个域的声明式存储 | 已实现,跨重启持久化已实测通过 |
| 可发布的 npm 包形态 | 已实现:npm run build 组装出自洽的 lib/ 运行树,npm pack 出 34 个文件、无 src/、无 demo/、无 test/;在全新 profile 里从 tarball 安装并启动无需源码,零第三方依赖 |
| 客户端半边自诊断 | 已实现:缺失 lib/client.js 时平台不会报错(实测),本插件在启动时自己喊出来(TECH-SPIKE.md §6.12.4) |
| 离线测试套件 | 335 项 node --test 全通过;测试绝不真出网(内存替身) |
还没做的:
| 部分 | 状态 |
|---|---|
| 目录索引缓存(P1-03) | 刻意不做,只在出现真实性能问题时才做 |
| 第三方 feed 解析库(P1-08) | 条件触发(门槛是核心 fixture 100%,已达到) |
界面上不会出现任何模拟数据、假刷新、假的"已保存"。抓不到就说抓不到,被截断就说是截断,失败原因一路带到你面前。
从本地目录安装(开发时最常用):
dsh plugin --profile <profile> add "<本仓库绝对路径>"
从打包产物安装(模拟真实分发):
npm run build # 组装 lib/ 运行树(必做,见下)
npm pack # 产出 dsh-apradar-<version>.tgz
dsh plugin --profile <profile> add ./dsh-apradar-0.1.2.tgz
升级:
git pull
npm run build # 改了客户端就必须重建,否则装出来的包里是旧客户端
npm pack
dsh plugin --profile <profile> add ./dsh-apradar-<新版本>.tgz
之后重启 Harness(Desktop 直接退出重开,Web 重新执行 dsh web --profile <profile>),右栏会出现「AI 产品雷达」页签。
⚠️ 宿主在启动时解析并缓存客户端的产物路径。 只改客户端源码时刷新页面即可(
link:安装下宿主直接取源码);但只要你动了package.json的exports["./client"]或把安装方式从link:换成 tarball,就必须重启宿主才生效 —— 这一点是实测出来的(TECH-SPIKE.md§6.12.5),不是推测。
技术验证用的 Spike 是另一个包(spike/apradar-spike,id dsh-apradar-spike),两者路由前缀与右栏标识都不冲突,可以同时安装 —— 但日常使用只需要装这一个。
node --test 'test/*.test.mjs'
package.json 里没有 dependencies,这是刻意的,理由写在 src/host/store/schema.js 顶部(link: 安装不会为被链接包安装依赖;官方 @deepseek-ai/* 无法从 profile 解析)。src/client/client.js 本身就是 loader bundle 本体(window.__ModuleLoader__.load({...}),禁止 JSX、禁止打包器、只 require('react'))。P1-07 起用 npm run build 把它组装成 lib/client.js(加一行来源说明头),并把 src/host/** 逐字节复制进 lib/ —— 这个"构建"不转译、不打包、不引依赖,prepack 会自动跑。改完客户端不跑构建,test/publish.test.mjs 会拦住你。npm run build:check 只校验不写,用于 CI 或提交前自检。node --test,不引入测试框架。dsh-storage-domain,backend: json),文件落在 $DSH_HOME/storages/ 下,文件名以 ai_product_radar_ 开头。storages/),也是刻意的保守选择 —— 宁可留下数据,不要在卸载时误删用户的研究记录。要彻底清除,请手动删除 $DSH_HOME/storages/ai_product_radar_*。Blob + <a download>),插件不经过任何后端写文件 —— 它没有、也不会写你的项目目录。ctx.web.fetch(),不使用 Node 原生 fetch 绕过其 URL 校验、SSRF 公有地址白名单、超时与响应体上限。webServer.register({ kind: 'prefix', path: '/apradar' }) 注册,只服务回环地址;非回环请求一律 403。http(s) 的 URI 方案,转义能构成链接 / 自动链接 / 代码段 / 原始 HTML 的字符)。产品与设计文档在仓库根目录:
PRD.md —— 产品背景、定位、信息架构、页面与交互需求、MVP 范围SDD.md —— 技术架构、Host/Client 职责、适配器、持久化 schema、安全边界COMPATIBILITY.md —— 实际核验的 DSH 版本、API 依据、能力矩阵、已知风险MVP-BACKLOG.md —— P0/P1/P2 拆分与验收标准TECH-SPIKE.md —— 技术验证 Spike 的实测记录与证据CHANGELOG.md —— 每个版本的发布内容(GitHub Release 正文取自这里)MIT