dsh-ai-research(DSH 宿主插件)
把仓库里的三套 AI 研究工具包成一个 DSH 插件:注册 4 个工具 + 3 个技能,任何会话 / 工作区可用。
宿主半、零依赖、无客户端半 —— 改 index.js 后重启 DSH 生效(宿主启动时组装 bundle 图)。
目录
packages/dsh-ai-research/
package.json 清单(dsh.bundle.patch → cordis.patch.yml)
cordis.patch.yml profile 插入点:- insert: / - id: ai-research / name: dsh-ai-research
index.js 宿主半:注册技能 + 工具(参数校验 + 输出收口,~22KB)
skills/*.md 生成物:技能正文(由 ../../skills/*.md 同步,勿手改)
tools/* 生成物:工具实现(由 ../../tools/* 同步,勿手改)
sync-skills.mjs node sync-skills.mjs [--check]
sync-tools.mjs node sync-tools.mjs [--check]
包内 tools/ 与 skills/ 是发布产物:git 不跟踪(见仓库根 .gitignore),
但 npm 包里必须有 —— 所以任何发布动作之前,先跑两个 sync 脚本的 --check,确认没有漂移。
工具与技能
| 技能 | 工具 | 干什么 |
|---|
ai-model-radar | ai_model_radar | 「最近发了哪些新模型」:发布追踪站 / OpenRouter 上架 / 官方 RSS / GitHub release / arXiv / HN 合并成日报 |
model-report | model_report | 「某模型实测口碑如何」+ 2~4 模型横评:13 路结构化跑分 + 英文社区(HN / X / Reddit)+ 中文社区(B站 / CSDN / 微信 / 掘金 / 知乎 / 小红书) |
ai-news-radar | ai_news_radar · ai_fetch_article | 「AI 圈最近发生了什么」:46 源 + 22 个官方 X 账号 + Google/Bing 检索 + HN/Reddit/微信,按 8 主题分类出日报;ai_fetch_article 抓单篇正文补摘要 |
关键参数
ai_model_radar:days(默认 3)· out save format
model_report:query(单模型)或 vs(横评 A,B,C)· auto 自动挑对手 · peers · deep(默认 true;false 跳过 6 个重源,几秒出结果)· cn(false 关中文社区源,省 10~20s)· x reddit lmarena seeds insights · mode(report|brief) · out save format
ai_news_radar:days(默认 1)· focus 追加检索词 · deep · x xBudget · wechat hn reddit news bing feeds · only 只跑指定源 id · topN perTheme · listSources · out save format(markdown|brief)
ai_fetch_article:url(必填)· chars(默认 4000)
工具实现从哪来(root 解析)
index.js 运行时按需 import() <root>/<工具>/lib.mjs,root 按下面的顺序确定:
- 插件配置
config.root(显式覆盖,最优先);
- 包内
tools/ —— npm 安装的正常路径(自包含);
- 包目录的上两级 —— 源码仓库布局(
packages/dsh-ai-research → 仓库根),或者你把它 link 进某个工作区时。
- id: ai-research
config:
root: '/path/to/your/tools-root' # 可选
输出目录收口:工具的 out 参数按 exec.agent.session.header.cwd(会话工作区)解析,越界(如 ../escape)直接抛
「输出目录必须位于当前会话工作区内:」;save:false 时只返回内容、不落盘。
运行期状态(缓存 / cookie / 限流熔断状态)不在包里,统一在 ~/.dsh-ai-research/
(DSH_AI_RESEARCH_HOME 可改)—— 见仓库根 README 的环境变量表。
从 npm 安装
dsh plugin add dsh-ai-research
# 等价:node "<DSH app>/lib/plugin-cli.js" desktop add dsh-ai-research
包内已带 tools/ 与 skills/,装完重启 DSH 即可用,不需要另外准备工具目录。
本机安装(link 方式,开发用)
宿主插件必须重启 DSH 才生效。手工等价于官方 CLI 的三步:
~/.dsh/profiles/desktop/package.json 的 dependencies 加
"dsh-ai-research": "link:<仓库>/packages/dsh-ai-research"
- 同文件
dsh.profile.bundles 末尾加 "dsh-ai-research"
~/.dsh/profiles/desktop/node_modules/dsh-ai-research 建 junction / 软链指向本目录
卸载 = 删这三样(其余插件不受影响)。
桌面端官方 CLI 有两个坑:子进程要 ELECTRON_RUN_AS_NODE=1(否则 process.execPath 是 DSH NEXT.exe,命令静默 0 退出),
以及 pnpm 策略 --config.minimumReleaseAge=0。
技能优先级
工作区 .dsh/skills/<name>/SKILL.md(rank 100)优先于插件运行时注册(rank 250);
两边内容由 sync-skills.mjs 保证一致。插件注册的意义是让技能在别的会话 / 工作区也可用。
输出排版
三套工具的报告渲染收尾走同一个模块 model-report/doc.mjs:一个 # H1 → 元信息引用块 → ## 目录(GitHub 风格锚点)
→ ## 一、二、三、… 自动编号章节(章间 ---)→ 结尾数据缺口 + 合规声明。
cnNum() 支持「十一」,修掉了旧版 CN[min(n-2,9)] 夹紧造成的重号。三条技能里的「输出排版」一节同时约束
agent 手写的解读稿(H1 + > 数据截止 … + ## 一、… + 末尾「引用时的几个坑」)。