dsh-web-search-pro 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +75 -6
  3. package/assets/skills/dsh-web-search-pro/SKILL.md +1 -1
  4. package/assets/skills/dsh-web-search-pro/references/sources.md +11 -2
  5. package/catalog/sources.v1.json +20 -12
  6. package/lib/actions/search.js +5 -4
  7. package/lib/actions/search.js.map +1 -1
  8. package/lib/actions/sources.js +42 -25
  9. package/lib/actions/sources.js.map +1 -1
  10. package/lib/cli/builtin-specs.js +306 -0
  11. package/lib/cli/builtin-specs.js.map +1 -0
  12. package/lib/cli/chain.js +192 -0
  13. package/lib/cli/chain.js.map +1 -0
  14. package/lib/cli/chains-spec.js +98 -0
  15. package/lib/cli/chains-spec.js.map +1 -0
  16. package/lib/cli/engine.js +83 -0
  17. package/lib/cli/engine.js.map +1 -0
  18. package/lib/cli/opencli.js +105 -0
  19. package/lib/cli/opencli.js.map +1 -0
  20. package/lib/cli/probe.js +128 -0
  21. package/lib/cli/probe.js.map +1 -0
  22. package/lib/cli/runner.js +374 -0
  23. package/lib/cli/runner.js.map +1 -0
  24. package/lib/cli/spec.js +416 -0
  25. package/lib/cli/spec.js.map +1 -0
  26. package/lib/client/SettingsCard.js +1 -1
  27. package/lib/client/SettingsCard.js.map +1 -1
  28. package/lib/client/form-specs.js +2 -0
  29. package/lib/client/form-specs.js.map +1 -1
  30. package/lib/client/form.js +14 -3
  31. package/lib/client/form.js.map +1 -1
  32. package/lib/client/locales.js +4 -0
  33. package/lib/client/locales.js.map +1 -1
  34. package/lib/client/validators.js +15 -0
  35. package/lib/client/validators.js.map +1 -1
  36. package/lib/client.js +1425 -3
  37. package/lib/client.js.map +1 -1
  38. package/lib/config.js +4 -0
  39. package/lib/config.js.map +1 -1
  40. package/lib/deps.js +109 -102
  41. package/lib/deps.js.map +1 -1
  42. package/lib/engine-error.js +19 -0
  43. package/lib/engine-error.js.map +1 -0
  44. package/lib/engines.js +31 -114
  45. package/lib/engines.js.map +1 -1
  46. package/lib/pipeline/candidates.js.map +1 -1
  47. package/lib/pipeline/run.js +4 -2
  48. package/lib/pipeline/run.js.map +1 -1
  49. package/lib/providers/builtin.js +10 -14
  50. package/lib/providers/builtin.js.map +1 -1
  51. package/lib/providers/platforms.js +114 -55
  52. package/lib/providers/platforms.js.map +1 -1
  53. package/lib/providers/registry.js.map +1 -1
  54. package/lib/router.js +63 -6
  55. package/lib/router.js.map +1 -1
  56. package/lib/types/cli/builtin-specs.d.ts +30 -0
  57. package/lib/types/cli/chain.d.ts +83 -0
  58. package/lib/types/cli/chains-spec.d.ts +39 -0
  59. package/lib/types/cli/engine.d.ts +43 -0
  60. package/lib/types/cli/opencli.d.ts +38 -0
  61. package/lib/types/cli/probe.d.ts +53 -0
  62. package/lib/types/cli/runner.d.ts +87 -0
  63. package/lib/types/cli/spec.d.ts +176 -0
  64. package/lib/types/client/form-specs.d.ts +1 -1
  65. package/lib/types/client/locales.d.ts +4 -0
  66. package/lib/types/client/validators.d.ts +6 -0
  67. package/lib/types/config.d.ts +11 -0
  68. package/lib/types/deps.d.ts +25 -23
  69. package/lib/types/engine-error.d.ts +12 -0
  70. package/lib/types/engines.d.ts +16 -9
  71. package/lib/types/index.d.ts +4 -0
  72. package/lib/types/pipeline/candidates.d.ts +2 -0
  73. package/lib/types/pipeline/run.d.ts +2 -1
  74. package/lib/types/providers/platforms.d.ts +15 -3
  75. package/lib/types/providers/registry.d.ts +3 -0
  76. package/lib/types/router.d.ts +13 -0
  77. package/lib/types/util.d.ts +6 -1
  78. package/lib/util.js +7 -3
  79. package/lib/util.js.map +1 -1
  80. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # 更新记录
2
2
 
3
+ ## 0.2.1(2026-10-07)
4
+
5
+ 独立 CLI 适配层。兼容范围与 0.2.0 相同(DSH `>=0.2.0-rc.2 <0.2.1-0`,可选 `@anweat/dsh-browser ^0.2.0`),没有破坏性变更。
6
+
7
+
8
+ - 新增声明式 CLI 适配层(`src/cli/`):规格校验(只读保证:子命令白名单 + 全局拒绝表 + 拒绝读取 Cookie / 带凭据的 flag)、不经 shell 的执行器(最小环境、UTF-8、超时 / 取消 / 输出上限、结构化错误)、本地带缓存的契约探测(同名但契约不同的程序报 `incompatible`)。
9
+ - 内置规格:bili、yt-dlp、twitter 迁到规格执行器;新增 xhs、zhihu、rdt、omnireach、独立 opencli(按 `opencli list` 的 search 命令)、gh,以及按文档的 wx-search-cli、tanso;每个规格记录已验证版本与验证程度(live / contract-only / docs-only)。
10
+ - 每个平台是一条有序后端链(独立 CLI → 独立 OpenCLI → dsh-browser),新增 `platformBackends`、`cliAdapters` 设置;新增平台 `wechat`(公众号)与多源 `omnireach`、`tanso`;`sources.deps` / `sources.status` 显示每个 CLI 的安装状态与每条后端的就绪 / 跳过原因。
11
+ - 默认值写入 README 快速使用并有测试固定:Jev 默认关闭,博查只在配置了 Key 时使用。
12
+ - 平台搜索结果标明实际使用的后端(`Platform: bilibili (via bili)`,输出新增可选字段 `backend`,历史与证据包同样记录);后端链顺延时在说明里列出被跳过的后端与原因。
13
+ - `sources.status` 的平台摘要按后端链的真实状态显示:`ready`(有后端现在就能运行)、`login unverified`(只能依赖你自己的浏览器会话,本地无法确认)、`needs login`、`unavailable`,并给出下一步(例如自行运行 `xhs login`)。
14
+ - `bili` 返回的无视频号条目改用条目自带的链接;没有任何链接的条目跳过并在说明里注明数量。
15
+ - 需要登录的 CLI(xhs、zhihu、rdt)只在本地已有保存的登录信息时才运行(只检查文件是否存在);插件不会触发登录,也不会让 CLI 读取浏览器 Cookie。
16
+ - 验证:774 项插件测试、94 项 bench 测试、类型检查、peer 范围、构建与客户端 bundle 检查通过;真实宿主(DSH 0.2.0-rc.2)上全默认配置可用,`bili` 与 `omnireach` 两条后端实测通过。xhs、zhihu、rdt、twitter、独立 opencli 的搜索只核对了命令契约,未用真实登录态验证。
17
+
3
18
  ## 0.2.0(2026-10-05)
4
19
 
5
20
  正式发布 0.2.0 基线。继承下方 rc.1 的工具面、来源、证据管线与兼容范围;真实验证的宿主仍为 DSH 0.2.0-rc.2,可选 Browser 0.2.0。
package/README.md CHANGED
@@ -12,6 +12,7 @@
12
12
  | `0.1.15` | `dsh-v0.1.7-rc.2` + Browser `0.1.15` | 精确锁定该宿主版本;**仍停留在 DSH 0.1.x 宿主或 dsh-browser 0.1.x 的用户请使用这一版**(后续不再更新) |
13
13
  | `0.1.17` | `dsh-v0.1.7-rc.2` ~ `dsh-v0.2.0-rc.2` + Browser `0.1.17` | 过渡版本,已不再演进;新功能不会回到这条线 |
14
14
  | `0.2.0`(正式版) | **只支持 `dsh-v0.2.0-rc.2` 这一条线**(peer `>=0.2.0-rc.2 <0.2.1-0`)+ 可选 `@anweat/dsh-browser ^0.2.0` | 第一个 0.2.0 线版本,**破坏性变更**(见 [CHANGELOG.md](./CHANGELOG.md));711 项单元测试、94 项 bench 测试,`pnpm run test:peers` 两种解析模式检查,真实 Host(DSH 0.2.0-rc.2)验收 |
15
+ | `0.2.1` | 同 `0.2.0`(peer `>=0.2.0-rc.2 <0.2.1-0` + 可选 `@anweat/dsh-browser ^0.2.0`) | 独立 CLI 适配层与平台后端链,无破坏性变更(见 [CHANGELOG.md](./CHANGELOG.md));774 项单元测试、94 项 bench 测试,真实 Host(DSH 0.2.0-rc.2)验收 |
15
16
 
16
17
  **支持范围**:DSH `>=0.2.0-rc.2 <0.2.1-0`,可选配套浏览器插件 `@anweat/dsh-browser ^0.2.0`(即 0.2.x,不含 0.3)。
17
18
 
@@ -34,9 +35,9 @@
34
35
 
35
36
  ```bash
36
37
  # 默认安装(面向 dsh-v0.2.0-rc.2 宿主;浏览器插件可选,需要读取渲染页 / 浏览器平台时一起装):
37
- dsh plugin --profile web add @anweat/dsh-browser@0.2.0 dsh-web-search-pro@0.2.0
38
+ dsh plugin --profile web add @anweat/dsh-browser@0.2.0 dsh-web-search-pro@0.2.1
38
39
  # 不需要浏览器能力时,只装本插件即可:
39
- dsh plugin --profile web add dsh-web-search-pro@0.2.0
40
+ dsh plugin --profile web add dsh-web-search-pro@0.2.1
40
41
  # 或本地目录 / tarball:
41
42
  dsh plugin --profile web add ../dsh-browser ./dsh-web-search-pro
42
43
  # 重启(web profile 关闭了 HMR):
@@ -54,7 +55,7 @@ dsh --profile web
54
55
  先确认宿主是 `dsh-v0.2.0-rc.2`,浏览器插件(如果装了)是 `@anweat/dsh-browser@0.2.0`;两者都需要作为 profile 的直接依赖。
55
56
 
56
57
  ```bash
57
- dsh plugin --profile web add @anweat/dsh-browser@0.2.0 dsh-web-search-pro@0.2.0
58
+ dsh plugin --profile web add @anweat/dsh-browser@0.2.0 dsh-web-search-pro@0.2.1
58
59
  ```
59
60
 
60
61
  > **不再支持旧线**:宿主仍是 DSH 0.1.x,或浏览器插件仍是 `@anweat/dsh-browser` 0.1.x,请不要升级,停留在 `dsh-web-search-pro@0.1.15`。只升级本插件、保留旧浏览器插件时,本插件照常工作,但所有浏览器相关能力都会返回上面的 `CAPABILITY_UNAVAILABLE`,`sources.status` 显示 `browser: legacy (unsupported)`。
@@ -80,6 +81,8 @@ dsh plugin --profile web add @anweat/dsh-browser@0.2.0 dsh-web-search-pro@0.2.0
80
81
  "DeepSeek Harness community feedback",指定 exa、fresh=true、返回 8 条来源。
81
82
  ```
82
83
 
84
+ **开箱默认值(不改任何设置)**:默认关闭 Jev(`evidence.jevMode: off`,证据评分用本地规则,不调用任何模型,也不需要任何模型 Key);只有配置了博查 Key(`bochaApiKey` / `BOCHA_SEARCH_API_KEY` 或凭据引用)才会使用博查,没配置时博查不在引擎列表里,也不会被自动规划选中。默认引擎是 `seam`、`exa`、`ddg`、`bing`、`jina`(Exa 可走无 Key 的 MCP 回退,ddg / bing 免 Key)。**Defaults out of the box:** Jev is off by default (`evidence.jevMode: off`; evidence scoring uses the local rules and no model is called, no model key is needed); Bocha is used only when you configure a key (`bochaApiKey` / `BOCHA_SEARCH_API_KEY` / a credentials ref) — without one it is not in the engine list and never planned.
85
+
83
86
  模型通常不需要先翻目录:`web_index()` 根目录直接给出搜索与读取两个最常用调用,随包的 skill `dsh-web-search-pro` 带有证据模式的工作示例;没有 skill 服务时根目录附一段精简指南。
84
87
 
85
88
  | 情形 | 推荐入口 | 说明 |
@@ -97,7 +100,7 @@ dsh plugin --profile web add @anweat/dsh-browser@0.2.0 dsh-web-search-pro@0.2.0
97
100
 
98
101
  ### 平台来源
99
102
 
100
- 每个平台(GitHub、GitHub 代码 / Issues、B站、YouTube、V2EX、arXiv、PubMed、小红书、Twitter / X、Reddit、Instagram、Facebook、RSS、知乎、微博、豆瓣、贴吧、抖音、快手,以及你的 `customPlatforms`)都是来源注册表里 `kind: platform` 的 provider:有描述符(语言、任务类型、站点域名、所需浏览器能力 / 登录 / CLI / Token)和适配器,与网页引擎走同一条路径(探测、冷却、并发合并、`shapeSources`、重试说明、历史)。Twitter 是**一个** provider,内部按原顺序依次尝试 OpenCLI 与 twitter-cli。`sources.status` 在同一张列表里按维度报告它们的就绪状态(浏览器安装、已绑定登录、设置开关);目录条目用 `provider` 指向同名 id。
103
+ 每个平台(GitHub、GitHub 代码 / Issues、B站、YouTube、V2EX、arXiv、PubMed、小红书、Twitter / X、Reddit、Instagram、Facebook、RSS、知乎、微博、豆瓣、贴吧、抖音、快手,以及你的 `customPlatforms`)都是来源注册表里 `kind: platform` 的 provider:有描述符(语言、任务类型、站点域名、所需浏览器能力 / 登录 / CLI / Token)和适配器,与网页引擎走同一条路径(探测、冷却、并发合并、`shapeSources`、重试说明、历史)。每个平台是**一个** provider,内部是一条有序的**后端链**(独立 CLI → 独立 OpenCLI → dsh-browser 的 OpenCLI / 搜索页),顺序可用 `platformBackends` 改,详见下面的 [CLI 适配](#cli-适配--cli-adapters)。`sources.status` 在同一张列表里按维度报告它们的就绪状态(浏览器安装、已绑定登录、设置开关);目录条目用 `provider` 指向同名 id。
101
104
 
102
105
  - `search.run platform=zhihu query=…` 只搜这个平台,历史类型仍为 `platform`;`engines=zhihu` 在经典搜索里同样可用。`url`(RSS)、`authProfile`、`rulePack` 随 `platform` 传,`browserBindings` 补全后两者。
103
106
  - **证据模式**:`platform` 可与 `task` / `profile` / `needs` / `constraints` 同用——该平台成为 S1 / S2 的显式来源,之后门限、读取前几页(有 Browser 时自动升级)、评分、证据包照常。
@@ -394,10 +397,75 @@ OpenCLI 用于已有站点 adapter 或复用 Chrome 登录会话。推荐顺序
394
397
  | 评分模型 | `evidence.judge.mode`(off / shadow / control / hybrid,同时写旧键 `jevMode` / `scorer` 保持一致)、`hybridBorderline`、provider 下拉(内置预设 + 自定义 id)、`maxJevQuestions`、`allowLlm`;覆盖判定 `evidence.coverage` 的模式、provider、阈值;用量上限 `evidence.budget`(单次 / 每日 / 时区 / 按 provider);自定义 provider JSON(与服务端同一套校验,拒绝在定义里放密钥,只放 `keyRef` 名) |
395
398
  | 提示词(rubric) | 列出内置 rubric 与生效版本;逐个覆盖(版本、模板、等级、字符上限),按 `rubrics.ts` 的规则校验(未知变量、必需变量、等级数、版本必须不同于内置);“恢复默认”删除覆盖 |
396
399
  | 来源 | 来源策略(`evidence.sourcePolicy`、`sources.priority`、`sources.disabled`)、博查(Key 引用名、接口地址、长摘要)、七个需 Key 的来源(Key 引用名、写入式密钥、接口地址)、每个来源的请求额度(`sources.budget.<id>.total` / `daily`,已用 / 剩余见 `web_call sources.status`)、`searxngUrl`、`openalexMailto`,以及匿名来源参考表;各来源的实时就绪状态由 `web_call sources.status` 显示 |
397
- | 服务凭据 / 运行时与后端 / 高级 | Exa、Jina、GitHub 凭据引用与密钥;CLI、OpenCLI、Agent Reach、Playwright;缓存、排序加权、平台规则、自定义平台、浏览器绑定 |
400
+ | 服务凭据 / 运行时与后端 / 高级 | Exa、Jina、GitHub 凭据引用与密钥;CLI、OpenCLI、Agent Reach、Playwright、**平台后端顺序 `platformBackends`、自定义 CLI 适配 `cliAdapters`(JSON,校验与服务端共用)**;缓存、排序加权、平台规则、自定义平台、浏览器绑定 |
398
401
 
399
402
  校验与服务端共用同一批纯函数(`pipeline/rubrics-spec.ts`、`judges/providers-spec.ts`、`judges/calibration-spec.ts`、`coverage.ts`、`budget-spec.ts`),它们不引入 Node 模块,客户端 bundle 仍只依赖宿主模块表里的少数模块(`pnpm run test:client-bundle` 检查)。
400
403
 
404
+ ## CLI 适配 / CLI adapters
405
+
406
+ **中文** 平台不再几乎只靠 dsh-browser 内置的 OpenCLI:本插件有一层声明式的 CLI 适配(`src/cli/`)。一个适配规格 `CliAdapterSpec` 写明:命令名(`bins`,包名可与命令名不同,记在 `packageNote`)、探测契约(`probe`:`--version`、最低版本、`--help` 里必须出现的子命令 / 参数)、搜索命令(`search.argv` 是**数组**,只有 `{query}`、`{count}` 两个占位符,永不经过 shell)、输出格式(`json` / `ndjson` / `yaml` / `text`)与字段映射、`emptyWhen` / `notLoggedInPatterns`、环境变量白名单(`env.required` / `passthrough`,只写名字)、超时与输出上限。执行器按 UTF-8 解码,超时 / 取消 / 输出超限都有结构化错误:`CLI_NOT_FOUND`、`CLI_CONTRACT_MISMATCH`、`CLI_NOT_LOGGED_IN`(提示“请自行运行 `<cli> login`”)、`ENGINE_EMPTY`、`CLI_FAILED`;错误文字里不会出现环境变量的值。
407
+
408
+ **只读保证**(内置和用户自定义规格同样适用):规格必须声明 `allowedSubcommands`,argv 里用到的子命令都得在其中,且不得命中全局拒绝表(`login`、`logout`、`post`、`comment`、`delete*`、`like`、`follow`、`favorite`、`upvote`、`save`、`subscribe`、`publish`、`ask`、`article`、`pin`、`setup`、`init`、`install`、`update` 等);会读取浏览器 Cookie 或把凭据放进参数的 flag(`--cookie-source`、`--cookies-from-browser`、`--token`、`--password`……)一律拒绝。插件**永不运行任何登录命令**,也不代用户登录:需要登录的 CLI 由你自己运行它的 `login`;没有已保存登录的 xhs / rdt / zhihu 不会被运行(它们在没有登录时会自己去读浏览器 Cookie)。子进程只拿到最小环境(PATH、HOME、代理、证书,加规格点名的变量),不继承你整个环境。
409
+
410
+ **探测**只在本地:找命令、跑 `--version` 和规格里的 `--help`,检查版本与契约,缓存 60 秒;**不搜索、不登录**。同名但契约不同的程序(如 PyPI 上另一个 `bili-cli`)报 `incompatible` 并写明原因,不会被当成可用。`sources.deps` 显示每个 CLI 的 `installation`(missing / detected / incompatible)、版本、适配验证程度;`sources.status` 的每个平台带 `chain`:每条后端的顺序、状态、被跳过的原因。
411
+
412
+ | 内置规格 | 命令 | 已验证版本(2026-10-06) | 验证程度 |
413
+ |---|---|---|---|
414
+ | `bili`(bilibili) | `bili` | 0.6.2 | **live**:真实只读搜索并解析 |
415
+ | `gh`(github / github-issues / github-code 的回退) | `gh` | 2.101.0 | **live**(仓库搜索);issues / code 按帮助页字段,未运行 |
416
+ | `omnireach`(`wechat` 与多源 `omnireach`) | `omnireach` | 0.19.0-alpha | **live**(`--on wechat`);多源命令未运行 |
417
+ | `yt-dlp`(youtube) | `yt-dlp` | 2026.08.19 | contract-only:帮助与版本,未运行搜索 |
418
+ | `twitter` | `twitter` | 0.8.5 | contract-only:需要你的 Token,未运行搜索 |
419
+ | `xhs`(xiaohongshu) | `xhs` | 0.6.4 | contract-only:帮助 + 已装包源码里的输出形状;搜索需要你的登录 |
420
+ | `zhihu` | `zhihu`(PyPI `pyzhihu-cli`) | 0.2.4 | contract-only(同上) |
421
+ | `rdt`(reddit) | `rdt` | 0.4.2 | contract-only(同上) |
422
+ | 独立 `opencli`(按站点) | `opencli` | 1.8.8 | contract-only:只用 `opencli list -f json` 里有只读 `search` 命令的站点,输出用 `-f json` |
423
+ | `wx-search-cli`(wechat 第二后端) | `wx-search-cli` | 0.1.0 | contract-only:帮助与版本已在真实安装上探测;输出形状按上游 README / 源码,未运行搜索 |
424
+ | `tanso` | `tanso` | 2.0.2 | docs-only:按上游 README,未安装;只选 `bocha_web` 与 `zhihu_search` |
425
+
426
+ 目录里另有只列条目、没有适配的 `douyin-cli`(它的 README 没写搜索记录的字段)。contract-only 的字段映射来自工具自己的帮助 / 源码,并有标成 “constructed” 的夹具测试;它们在真实登录后的输出上还没被确认。
427
+
428
+ **默认后端链**(`platformBackends` 可改,未列出的平台用默认顺序):
429
+
430
+ | 平台 | 默认链 |
431
+ |---|---|
432
+ | xiaohongshu | `opencli`(独立)→ `xhs` → `browser-opencli`(dsh-browser) |
433
+ | reddit | `rdt` → `opencli` → `browser-opencli` |
434
+ | zhihu | `zhihu` → `browser-search`(dsh-browser 搜索页) |
435
+ | twitter | `twitter` → `opencli` → `browser-opencli` |
436
+ | bilibili / youtube | `bili` / `yt-dlp` |
437
+ | github、github-issues、github-code | `rest`(现有 REST)→ `gh` |
438
+ | wechat(公众号,新) | `omnireach` → `wx-search-cli` |
439
+ | omnireach(多源,不自动选入) | `omnireach` |
440
+ | instagram / facebook | `browser-opencli`;weibo、douban、tieba、douyin、kuaishou:`browser-search` |
441
+
442
+ 链上缺失、不兼容或未登录的后端被跳过并记下原因;只有整条链都不可用时平台才不可用,错误会列出每条后端缺什么、该安装或运行什么。M0 冷却、并发合并、输出整形、证据模式与显式 `platform` 的语义不变。
443
+
444
+ **启用一个 CLI**:按 `sources.deps` 给出的命令安装(`sources.install` 需要你的审批),再**自己**运行它的登录命令(`xhs login`、`rdt login`、`zhihu login`、`gh auth login`;twitter 用环境变量 `TWITTER_AUTH_TOKEN` / `TWITTER_CT0`)。想优先用它,就改链序:
445
+
446
+ web-search-pro:
447
+ platformBackends:
448
+ xiaohongshu: [xhs, opencli, browser-opencli]
449
+ cliAdapters: # 自定义只读适配(同样的校验),注册为平台 custom-cli:mytool
450
+ mytool:
451
+ bins: [mytool]
452
+ packageNote: 'mytool (npm i -g mytool)'
453
+ platforms: [mytool]
454
+ probe: { versionArgs: ['--version'], helpArgs: ['search', '--help'], mustContain: ['--json'] }
455
+ allowedSubcommands: [search]
456
+ search:
457
+ argv: [search, '{query}', '--limit', '{count}', '--json']
458
+ maxCount: 10
459
+ output: { format: json, itemsPath: data, fields: { url: url, title: title, snippet: summary } }
460
+ env: {}
461
+ needsLogin: false
462
+ timeoutMs: 30000
463
+ maxOutputBytes: 1048576
464
+
465
+ 无效的 `cliAdapters` 条目被忽略,原因出现在 `sources.status` 的 `notes`;设置面板里两项都有 JSON 编辑器,校验与服务端是同一批函数。
466
+
467
+ **English** Platforms no longer depend almost entirely on dsh-browser's bundled OpenCLI. A declarative adapter layer (`src/cli/`) describes each standalone CLI: `bins` (the package name may differ from the command, see `packageNote`), a contract `probe` (version floor, subcommands / flags that must appear in `--help`), a `search.argv` ARRAY with `{query}` / `{count}` placeholders (never a shell string), the output format and field mapping, `env.required` / `passthrough` NAMES only, timeout and output cap. The runner decodes UTF-8 and maps failures to `CLI_NOT_FOUND`, `CLI_CONTRACT_MISMATCH`, `CLI_NOT_LOGGED_IN` (hint: run `<cli> login` yourself), `ENGINE_EMPTY`, `CLI_FAILED`; environment values never appear in errors. **Read-only guarantee** for built-in and user specs alike: every command word must be in the spec's `allowedSubcommands` and none may match the global deny-list (login, logout, post, comment, delete*, like, follow, favorite, upvote, save, subscribe, publish, ask, article, pin, setup, init, ...); flags that read browser cookies or carry credentials are rejected. The plugin never runs a login and never logs in for you; xhs / rdt / zhihu are not run without a saved login (without one they read your browser cookies themselves). Children get a minimal environment. Probes are local (version + help, cached 60 s), never search or log in; a same-named program with another contract is `incompatible`. The table above lists each built-in spec with the verified version and how far it was checked (live / contract-only / docs-only). Each platform has an ordered backend chain (table above, configurable with `platformBackends`); skipped backends show their reason in `sources.status` (`providers[].chain`) and in the error when the whole chain is down. Your own adapters go in `cliAdapters` (validated by the same rules; registered as `custom-cli:<id>`).
468
+
401
469
  ## 外部依赖(按需)
402
470
 
403
471
  多数后端需要系统额外安装的工具;插件提供 `sources.deps` / `sources.install` 动作检测与安装:
@@ -406,7 +474,8 @@ OpenCLI 用于已有站点 adapter 或复用 Chrome 登录会话。推荐顺序
406
474
  |---|---|---|
407
475
  | bili-cli `0.6.2` | B站后端 | `uv tool install --force git+https://github.com/public-clis/bilibili-cli@489607468f967e0e11f3cdff6efc022d011e982a` |
408
476
  | yt-dlp | YouTube 后端 | `uv tool install yt-dlp` / `pip install yt-dlp` |
409
- | opencli | 小红书/Twitter/Reddit/IG/FB | 由 dsh-browser 内置;扩展未连接时用 `opencli doctor` 诊断 |
477
+ | opencli(dsh-browser 内置) | 小红书/Twitter/Reddit/IG/FB 的 `browser-opencli` 后端 | 由 dsh-browser 内置;扩展未连接时用 `opencli doctor` 诊断 |
478
+ | 其余适配 CLI(独立 `opencli`、`xhs`、`zhihu`、`rdt`、`omnireach`、`gh`、`wx-search-cli`、`tanso`) | 见上面的 [CLI 适配](#cli-适配--cli-adapters) | `sources.deps` 列出安装命令;登录由你自己完成 |
410
479
  | twitter-cli(命令 `twitter`) | Twitter 平台的 CLI 回退(执行 `twitter search`,另需环境变量 `TWITTER_AUTH_TOKEN` 与 `TWITTER_CT0`) | `uv tool install twitter-cli` / `pipx install twitter-cli` / `pip install twitter-cli` |
411
480
  | agent-reach(可选) | 仅作安装助手,本插件不直接执行它;装了它**不代表** Twitter 搜索可用 | `uv tool install agent-reach` / `pip install agent-reach` |
412
481
  | mcporter | 无裸 API Key 时的 Exa MCP 回退 | `npm i -g mcporter` |
@@ -62,7 +62,7 @@ Name sources only when you have a reason:
62
62
  ```
63
63
 
64
64
  - `engines` takes ids from `search.recommend` / `sources.status` (aliases like `ddg` work; an unknown id lists the valid ones). Explicit engines are tried in order.
65
- - `platform` searches one site (`github`, `v2ex`, `bilibili`, `rss` with `url`, `zhihu`, `xiaohongshu`, `twitter`, ...). With `task`/`profile` it is the evidence source (gate, page reads and scoring as usual). If it is unavailable the call fails with what is missing: tell the user, or pass `allowFallback:true` to search the web engines instead. Browser and login platforms need dsh-browser (`references/sources.md`).
65
+ - `platform` searches one site (`github`, `v2ex`, `bilibili`, `rss` with `url`, `zhihu`, `xiaohongshu`, `twitter`, ...). With `task`/`profile` it is the evidence source (gate, page reads and scoring as usual). If it is unavailable the call fails with what is missing: tell the user, or pass `allowFallback:true` to search the web engines instead. Platforms run a backend chain; logins are the user's job (`references/sources.md`).
66
66
  - **来源策略**: nothing configured = anonymous / free sources (English: Exa's keyless route, then ddg / bing; Chinese: ddg / bing). Sources the user configured a key for are promoted for their language; the user's settings `sources: {priority, disabled, budget}` are rankings and caps (a used-up source is skipped, never an error). `engines` always wins. Tiers: `references/sources.md`.
67
67
 
68
68
  ## 4. Constraints
@@ -31,8 +31,17 @@ Order of precedence for the automatic plan: (1) `engines` / `platform` in the ca
31
31
  | `jina` | any | `JINA_API_KEY` |
32
32
 
33
33
  - **Self-hosted**: `searxng` needs `searxngUrl` in settings (no public instance is built in).
34
- - **CLI** (`sources.deps` lists them, `sources.install` installs one when the user asks): `bili`, `yt-dlp`, `twitter` (also needs `TWITTER_AUTH_TOKEN` and `TWITTER_CT0`), `mcporter`, `agent-reach` (optional helper).
35
- - **Browser-based** (need dsh-browser and a saved login): `zhihu`, `weibo`, `douban`, `tieba`, `douyin`, `kuaishou`, and OpenCLI platforms (`reddit`, `xiaohongshu`, `instagram`, `facebook`). `twitter` is one source with two backends tried in order: the OpenCLI bridge (dsh-browser), then twitter-cli.
34
+ - **CLI** (`sources.deps` lists them with `installation`: missing / detected / incompatible; `sources.install` installs one when the user asks): `bili`, `yt-dlp`, `twitter` (also needs `TWITTER_AUTH_TOKEN` and `TWITTER_CT0`), `xhs`, `zhihu`, `rdt`, `omnireach`, `gh`, `wx-search-cli`, `tanso`, standalone `opencli`, the user's own `cliAdapters`, `mcporter`, `agent-reach` (optional helper). See "Backend chains" below.
35
+ - **Browser-based** (need dsh-browser and a saved login): `weibo`, `douban`, `tieba`, `douyin`, `kuaishou`, and the dsh-browser OpenCLI legs of `instagram` / `facebook` (and the last legs of `xiaohongshu`, `reddit`, `twitter`, `zhihu`).
36
+
37
+ ## Backend chains (CLI adapters)
38
+
39
+ Every platform is ONE source with an ordered chain of backends; the first usable one answers, empty or failing ones fall through. `sources.status` shows each platform's `chain` (order, state, why a backend is skipped). Defaults: `xiaohongshu`: opencli (standalone) > xhs > browser-opencli; `reddit`: rdt > opencli > browser-opencli; `zhihu`: zhihu > browser-search; `twitter`: twitter > opencli > browser-opencli; `bilibili`: bili; `youtube`: yt-dlp; `github`, `github-issues`, `github-code`: rest > gh; `wechat` (公众号): omnireach > wx-search-cli; `omnireach` (multi-source, never planned on its own). The user can reorder with `platformBackends: { <platform>: [ids] }` and add read-only adapters in `cliAdapters` (platform `custom-cli:<id>`); an invalid entry is ignored and explained in `sources.status` `notes`.
40
+
41
+ - A backend that is not installed, has another contract (`incompatible`, with the reason) or is not logged in is skipped. When the whole chain is down the error names every backend and what to install or run. Report it; do not retry.
42
+ - **Login is the user's job.** Never run `xhs login`, `rdt login`, `zhihu login`, `gh auth login` or anything like them, and never pass cookie options. Tell the user to run the CLI's own login. xhs, rdt and zhihu are not run until a saved login exists (without one they read browser cookies themselves).
43
+ - Verification differs per adapter (`sources.deps` shows it): `live` (bili, gh repos, omnireach wechat), `contract-only` (help probed, no login-bound search run: xhs, zhihu, rdt, twitter, yt-dlp, wx-search-cli, standalone opencli), `docs-only` (tanso, from upstream docs). Treat contract-only and docs-only results as experimental.
44
+ - The plugin only ever runs read commands (search); posting, liking, following and the like are refused by the adapter spec itself.
36
45
 
37
46
  ## Platforms (one site or community)
38
47
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "dsh-web-search-pro/source-catalog",
3
3
  "version": 1,
4
- "updated": "2026-10-03",
4
+ "updated": "2026-10-06",
5
5
  "description": "Known search sources, pure data. It never executes anything: only adapters registered in the provider registry can run; this file explains what is missing and how to set it up.",
6
6
  "entries": [
7
7
  {"id":"seam","label":"DeepSeek native search (ctx.web)","kind":"api","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["general"],"resultKinds":["web"],"auth":"anonymous","costTier":"anonymous","requires":{"service":"ctx.web"},"provider":"seam","rank":60,"install":"Provided by the DSH host web capability; configure a web provider in the host.","license":"depends on the host provider","cost":"decided by the host provider behind ctx.web","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["one general web query through whatever provider the host selected"],"notFor":["evidence of independence: the upstream index is unknown"]},
@@ -10,21 +10,21 @@
10
10
  {"id":"bing","label":"Bing (RSS)","kind":"api","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["general","news_fact","experience","compare","docs_code"],"resultKinds":["web"],"auth":"anonymous","costTier":"anonymous","provider":"bing","sourceFamily":"bing","install":"None (RSS endpoint, no key).","license":"free endpoint, no SLA","cost":"free","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["keyless fallback next to DuckDuckGo"],"notFor":["native freshness or domain filters (only operators in the query)"]},
11
11
  {"id":"jina","label":"Jina AI search","kind":"api","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["general"],"resultKinds":["web"],"auth":"key","costTier":"free-quota","keyEnv":["JINA_API_KEY"],"provider":"jina","install":"Set JINA_API_KEY (or jinaApiKey).","license":"proprietary API service","cost":"free-quota: every new key has 10M free tokens, one time; a search costs >=10,000 tokens (https://jina.ai/reader/, 2026-10-04)","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["general web search when a Jina key exists"],"notFor":["keyless use: s.jina.ai answers 401 without a key"]},
12
12
  {"id":"bocha","label":"Bocha (博查) web search","kind":"api","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["general","news_fact","experience","compare","docs_code"],"resultKinds":["web"],"auth":"key","costTier":"paid","keyEnv":["BOCHA_SEARCH_API_KEY","BOCHA_JEV_API_KEY"],"provider":"bocha","rank":10,"install":"Open a search balance or package at open.bochaai.com and set BOCHA_SEARCH_API_KEY (the Jev key of the same account is the fallback). Optional cap: sources.budget.bocha.","license":"proprietary API service","cost":"paid: per request from a balance or package; no free allowance on the official pages (open.bochaai.com, 2026-10-04)","url":"https://open.bochaai.com","verification":{"status":"verified","date":"2026-10-04","note":"4 live requests on api.bocha.cn: success shape, include / exclude and freshness range confirmed; api.bochaai.com takes the same key"},"recommendedFor":["Chinese web search with domain and date-range filters"],"notFor":["accounts without a search package (403 no balance)"]},
13
- {"id":"github","label":"GitHub search","kind":"api","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["docs_code","compare"],"resultKinds":["code"],"auth":"anonymous","costTier":"anonymous","keyEnv":["GITHUB_TOKEN","GH_TOKEN"],"provider":"github","platform":"github","sourceFamily":"github","install":"None; GITHUB_TOKEN (optional) raises the rate limit. Also search.run platform=github-code / github-issues.","license":"proprietary API service","cost":"free within GitHub API limits","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["repositories, code and issues","library comparisons"],"notFor":["natural-language questions (the query is reduced to keywords)","general web knowledge"]},
14
- {"id":"github-code","label":"GitHub code search","kind":"api","operations":["search"],"languages":["*"],"regions":["global"],"auth":"key","costTier":"free-quota","keyEnv":["GITHUB_TOKEN","GH_TOKEN"],"sourceFamily":"github","license":"proprietary API service","cost":"free-quota: a free GitHub token is required; free within the REST search rate limits (https://docs.github.com/en/rest/search/search, 2026-10-04)","verification":{"status":"unverified","note":"REST search API; code search needs an authenticated request"},"profiles":["docs_code"],"resultKinds":["code"],"provider":"github-code","platform":"github-code","install":"Set GITHUB_TOKEN (or settings githubToken): code search needs an authenticated request.","recommendedFor":["finding real usages of an API or a config key in public code"],"notFor":["use without a token","natural-language questions"]},
13
+ {"id":"github","label":"GitHub search","kind":"api","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["docs_code","compare"],"resultKinds":["code"],"auth":"anonymous","costTier":"anonymous","keyEnv":["GITHUB_TOKEN","GH_TOKEN"],"provider":"github","platform":"github","sourceFamily":"github","install":"None for the REST client; GITHUB_TOKEN (optional) raises the rate limit. If REST is unavailable the gh CLI is the fallback (`gh auth login` is yours to run). Also search.run platform=github-code / github-issues.","license":"proprietary API service","cost":"free within GitHub API limits","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["repositories, code and issues","library comparisons"],"notFor":["natural-language questions (the query is reduced to keywords)","general web knowledge"]},
14
+ {"id":"github-code","label":"GitHub code search","kind":"api","operations":["search"],"languages":["*"],"regions":["global"],"auth":"key","costTier":"free-quota","keyEnv":["GITHUB_TOKEN","GH_TOKEN"],"sourceFamily":"github","license":"proprietary API service","cost":"free-quota: a free GitHub token is required; free within the REST search rate limits (https://docs.github.com/en/rest/search/search, 2026-10-04)","verification":{"status":"unverified","note":"REST search API; code search needs an authenticated request"},"profiles":["docs_code"],"resultKinds":["code"],"provider":"github-code","platform":"github-code","install":"Set GITHUB_TOKEN (or settings githubToken), or install gh and run `gh auth login` yourself: code search needs an authenticated request.","recommendedFor":["finding real usages of an API or a config key in public code"],"notFor":["use without a token","natural-language questions"]},
15
15
  {"id":"github-issues","label":"GitHub issues and pull requests","kind":"api","operations":["search"],"languages":["*"],"regions":["global"],"auth":"anonymous","costTier":"anonymous","keyEnv":["GITHUB_TOKEN","GH_TOKEN"],"sourceFamily":"github","license":"proprietary API service","cost":"free within GitHub API limits","verification":{"status":"unverified","note":"REST search API; no live check recorded"},"profiles":["docs_code","experience"],"resultKinds":["forum"],"provider":"github-issues","platform":"github-issues","install":"None; GITHUB_TOKEN (optional) raises the rate limit.","recommendedFor":["known bugs, workarounds and maintainer answers for an error message"],"notFor":["general web knowledge"]},
16
- {"id":"bilibili","label":"Bilibili (bili CLI)","kind":"cli","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["video"],"auth":"anonymous","costTier":"anonymous","requires":{"cli":"bili"},"provider":"bilibili","platform":"bilibili","install":"uv tool install --force git+https://github.com/public-clis/bilibili-cli (pinned revision; sources.deps shows the command).","license":"Apache-2.0 (public-clis/bilibili-cli)","cost":"free","verification":{"status":"verified","note":"shipped built-in; CLI contract probed by sources.deps"},"recommendedFor":["Chinese video tutorials and reviews"],"notFor":["text-first factual questions","another PyPI package named bilibili-cli (different contract)"]},
17
- {"id":"youtube","label":"YouTube (yt-dlp)","kind":"cli","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["experience"],"resultKinds":["video"],"auth":"anonymous","costTier":"anonymous","requires":{"cli":"yt-dlp"},"provider":"youtube","platform":"youtube","install":"uv tool install yt-dlp (or pip install yt-dlp).","license":"Unlicense (yt-dlp)","cost":"free","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["video talks, demos and tutorials"],"notFor":["transcripts (not wired into this plugin)"]},
16
+ {"id":"bilibili","label":"Bilibili (bili CLI)","kind":"cli","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["video"],"auth":"anonymous","costTier":"anonymous","requires":{"cli":"bili"},"provider":"bilibili","platform":"bilibili","install":"uv tool install --force git+https://github.com/public-clis/bilibili-cli (pinned revision; sources.deps shows the command).","license":"Apache-2.0 (public-clis/bilibili-cli)","cost":"free","verification":{"status":"verified","date":"2026-10-06","version":"0.6.2","note":"bili search --type video --max 2 --json parsed live; contract probed by sources.deps"},"recommendedFor":["Chinese video tutorials and reviews"],"notFor":["text-first factual questions","another PyPI package named bilibili-cli (different contract)"]},
17
+ {"id":"youtube","label":"YouTube (yt-dlp)","kind":"cli","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["experience"],"resultKinds":["video"],"auth":"anonymous","costTier":"anonymous","requires":{"cli":"yt-dlp"},"provider":"youtube","platform":"youtube","install":"uv tool install yt-dlp (or pip install yt-dlp).","license":"Unlicense (yt-dlp)","cost":"free","verification":{"status":"unverified","date":"2026-10-06","version":"2026.08.19","note":"contract-only: help probed, flags and print template from the shipped backend; no search run"},"recommendedFor":["video talks, demos and tutorials"],"notFor":["transcripts (not wired into this plugin)"]},
18
18
  {"id":"v2ex","label":"V2EX","kind":"api","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["forum"],"auth":"anonymous","costTier":"anonymous","provider":"v2ex","platform":"v2ex","install":"None.","license":"free public site","cost":"free","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["Chinese developer community experience"],"notFor":["English questions","official documentation"]},
19
19
  {"id":"arxiv","label":"arXiv","kind":"api","operations":["search"],"languages":["en"],"regions":["global"],"profiles":["academic"],"resultKinds":["paper"],"auth":"anonymous","costTier":"anonymous","provider":"arxiv","platform":"arxiv","sourceFamily":"arxiv","install":"None.","license":"free public API","cost":"free","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["preprints in CS, physics, maths"],"notFor":["biomedicine (use PubMed)","peer-review status"]},
20
20
  {"id":"pubmed","label":"PubMed","kind":"api","operations":["search"],"languages":["en"],"regions":["global"],"profiles":["academic"],"resultKinds":["paper"],"auth":"anonymous","costTier":"anonymous","provider":"pubmed","platform":"pubmed","sourceFamily":"pubmed","install":"None.","license":"free public API (NCBI)","cost":"free","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["biomedical and life-science literature"],"notFor":["computer science papers"]},
21
- {"id":"twitter","label":"Twitter / X (twitter-cli)","kind":"cli","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["experience","news_fact"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","keyEnv":["TWITTER_AUTH_TOKEN","TWITTER_CT0"],"requires":{"cli":"twitter"},"platform":"twitter","install":"Either dsh-browser with a logged-in X session (OpenCLI, tried first), or twitter-cli: uv tool install twitter-cli and export TWITTER_AUTH_TOKEN / TWITTER_CT0 (sources.deps).","license":"unknown","cost":"free (your account)","verification":{"status":"unverified","note":"command probe only checks `twitter search --help`"},"recommendedFor":["live reactions and announcements by accounts"],"notFor":["anonymous use","a different program named twitter on PATH"],"provider":"twitter"},
22
- {"id":"xiaohongshu","label":"Xiaohongshu (小红书) via OpenCLI","kind":"cli","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"platform":"xiaohongshu","install":"Install the dsh-browser plugin (bundles OpenCLI) and log in to the site in its browser; check with browser_opencli_status.","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","verification":{"status":"unverified","note":"shipped backend runs `opencli xiaohongshu search`; not re-verified on a pinned OpenCLI version"},"recommendedFor":["Chinese lifestyle and product experience notes"],"notFor":["use without dsh-browser and a logged-in session"],"provider":"xiaohongshu"},
23
- {"id":"reddit","label":"Reddit via OpenCLI","kind":"cli","operations":["search"],"languages":["en"],"regions":["global"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"platform":"reddit","install":"Install the dsh-browser plugin (bundles OpenCLI) and log in to the site in its browser; check with browser_opencli_status.","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","verification":{"status":"unverified","note":"shipped backend runs `opencli reddit search`; not re-verified on a pinned OpenCLI version"},"recommendedFor":["English community experience threads"],"notFor":["use without dsh-browser and a logged-in session"],"provider":"reddit"},
21
+ {"id":"twitter","label":"Twitter / X: twitter-cli, OpenCLI, dsh-browser","kind":"cli","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["experience","news_fact"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","keyEnv":["TWITTER_AUTH_TOKEN","TWITTER_CT0"],"requires":{"cli":"twitter"},"platform":"twitter","install":"Default chain: twitter-cli (uv tool install twitter-cli; export TWITTER_AUTH_TOKEN / TWITTER_CT0), standalone OpenCLI, then dsh-browser OpenCLI. Reorder with platformBackends.","license":"unknown","cost":"free (your account)","verification":{"status":"unverified","date":"2026-10-06","version":"0.8.5","note":"contract-only: twitter-cli help probed; no search run (needs your tokens)"},"recommendedFor":["live reactions and announcements by accounts"],"notFor":["anonymous use","a different program named twitter on PATH"],"provider":"twitter"},
22
+ {"id":"xiaohongshu","label":"Xiaohongshu (小红书): OpenCLI, xhs, dsh-browser","kind":"cli","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","platform":"xiaohongshu","install":"Default chain: standalone OpenCLI (npm i -g @jackwener/opencli + its Chrome bridge, your own login), then xhs (uv tool install xiaohongshu-cli; run `xhs login` yourself), then dsh-browser OpenCLI. Reorder with platformBackends.","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","verification":{"status":"unverified","date":"2026-10-06","note":"contract-only: opencli 1.8.8 command table and xhs 0.6.4 help probed; no search run (needs your login)"},"recommendedFor":["Chinese lifestyle and product experience notes"],"notFor":["use with no backend installed or logged in","high-volume crawling"],"provider":"xiaohongshu"},
23
+ {"id":"reddit","label":"Reddit: rdt, OpenCLI, dsh-browser","kind":"cli","operations":["search"],"languages":["en"],"regions":["global"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","platform":"reddit","install":"Default chain: rdt (uv tool install git+https://github.com/public-clis/rdt-cli; run `rdt login` yourself), standalone OpenCLI, then dsh-browser OpenCLI. Reorder with platformBackends.","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","verification":{"status":"unverified","date":"2026-10-06","note":"contract-only: rdt 0.4.2 help probed and output shape read from its source; no search run (needs your login)"},"recommendedFor":["English community experience threads"],"notFor":["use with no backend installed or logged in"],"provider":"reddit"},
24
24
  {"id":"instagram","label":"Instagram via OpenCLI","kind":"cli","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"platform":"instagram","install":"Install the dsh-browser plugin (bundles OpenCLI) and log in to the site in its browser; check with browser_opencli_status.","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","verification":{"status":"unverified","note":"shipped backend runs `opencli instagram search`; not re-verified on a pinned OpenCLI version"},"recommendedFor":["visual social posts"],"notFor":["use without dsh-browser and a logged-in session"],"provider":"instagram"},
25
25
  {"id":"facebook","label":"Facebook via OpenCLI","kind":"cli","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"platform":"facebook","install":"Install the dsh-browser plugin (bundles OpenCLI) and log in to the site in its browser; check with browser_opencli_status.","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","verification":{"status":"unverified","note":"shipped backend runs `opencli facebook search`; not re-verified on a pinned OpenCLI version"},"recommendedFor":["public posts and pages"],"notFor":["use without dsh-browser and a logged-in session"],"provider":"facebook"},
26
26
  {"id":"rss","label":"RSS / Atom feeds","kind":"api","operations":["read"],"languages":["*"],"regions":["global"],"profiles":["news_fact"],"resultKinds":["web"],"auth":"anonymous","costTier":"anonymous","platform":"rss","install":"None; pass the feed URL as the url of search.run platform=rss.","license":"free","cost":"free","verification":{"status":"verified","note":"shipped built-in"},"recommendedFor":["latest items of a known feed or blog"],"notFor":["keyword search across the web"],"provider":"rss"},
27
- {"id":"zhihu","label":"Zhihu (知乎) search page","kind":"browser","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"platform":"zhihu","install":"Install dsh-browser, run scripts/save-login.mjs for the site and bind it with browserBindings.","license":"n/a (reads the site you are logged in to)","cost":"free (your account)","verification":{"status":"unverified","note":"best-effort selectors on the rendered search page; they break when the markup changes"},"recommendedFor":["Chinese Q&A and long-form answers"],"notFor":["use without a saved login","high-volume or unattended crawling"],"provider":"zhihu"},
27
+ {"id":"zhihu","label":"Zhihu (知乎): zhihu-cli, dsh-browser search page","kind":"cli","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","platform":"zhihu","install":"Default chain: zhihu-cli (PyPI pyzhihu-cli; run `zhihu login` yourself), then the dsh-browser search page with a saved login (browserBindings).","license":"n/a (reads the site you are logged in to)","cost":"free (your account)","verification":{"status":"unverified","date":"2026-10-06","version":"0.2.4","note":"contract-only: zhihu-cli help probed, output shape read from its source; no search run (needs your login)"},"recommendedFor":["Chinese Q&A and long-form answers"],"notFor":["use without a login","high-volume or unattended crawling","the Access-Secret zhihu CLI (a different tool)"],"provider":"zhihu"},
28
28
  {"id":"weibo","label":"Weibo (微博) search page","kind":"browser","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"platform":"weibo","install":"Install dsh-browser, run scripts/save-login.mjs for the site and bind it with browserBindings.","license":"n/a (reads the site you are logged in to)","cost":"free (your account)","verification":{"status":"unverified","note":"best-effort selectors on the rendered search page; they break when the markup changes"},"recommendedFor":["Chinese real-time public reaction"],"notFor":["use without a saved login","high-volume or unattended crawling"],"provider":"weibo"},
29
29
  {"id":"douban","label":"Douban (豆瓣) search page","kind":"browser","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"platform":"douban","install":"Install dsh-browser, run scripts/save-login.mjs for the site and bind it with browserBindings.","license":"n/a (reads the site you are logged in to)","cost":"free (your account)","verification":{"status":"unverified","note":"best-effort selectors on the rendered search page; they break when the markup changes"},"recommendedFor":["Chinese reviews of books, films and music"],"notFor":["use without a saved login","high-volume or unattended crawling"],"provider":"douban"},
30
30
  {"id":"tieba","label":"Baidu Tieba (贴吧) search page","kind":"browser","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"platform":"tieba","install":"Install dsh-browser, run scripts/save-login.mjs for the site and bind it with browserBindings.","license":"n/a (reads the site you are logged in to)","cost":"free (your account)","verification":{"status":"unverified","note":"best-effort selectors on the rendered search page; they break when the markup changes"},"recommendedFor":["Chinese forum discussion"],"notFor":["use without a saved login","high-volume or unattended crawling"],"provider":"tieba"},
@@ -46,8 +46,8 @@
46
46
  {"kind":"api","operations":["search"],"regions":["cn"],"profiles":["general","news_fact","experience","compare","docs_code"],"resultKinds":["web"],"auth":"key","costTier":"paid","license":"proprietary API service","verification":{"status":"unverified","note":"contract from the official guide, API reference and error-code page; never called live (no key)"},"notFor":["GLM generated answers: only raw search_result is used; the query is cut to 70 characters"],"id":"zhipu","label":"Zhipu (智谱) web search","languages":["zh"],"keyEnv":["ZHIPU_API_KEY"],"install":"Set ZHIPU_API_KEY (or keyedSources.zhipu.apiKey / a credentials ref); key from open.bigmodel.cn. Standalone web_search endpoint, search_std. Inactive until a key is set.","cost":"paid: no free allowance stated; search_std 0.01 CNY, search_pro 0.03 CNY per request (docs.bigmodel.cn web-search guide, 2026-10-04)","url":"https://docs.bigmodel.cn/cn/guide/tools/web-search","recommendedFor":["second Chinese search source with one domain filter and a recency window"],"provider":"zhipu","rank":30},
47
47
  {"kind":"api","operations":["search"],"regions":["cn"],"profiles":["general","news_fact","experience","compare","docs_code"],"resultKinds":["web"],"auth":"key","costTier":"free-quota","license":"proprietary API service","verification":{"status":"unverified","note":"official page contradicts itself on the auth header: both Authorization and X-Appbuilder-Authorization are sent; never called live (no key)"},"notFor":["chat-completions generated answers: only web references are used; query cut to 72 units"],"id":"baidu-qianfan","label":"Baidu Qianfan (千帆) AI search","languages":["zh"],"keyEnv":["QIANFAN_API_KEY"],"install":"Set QIANFAN_API_KEY (or BAIDU_API_KEY / keyedSources.baidu-qianfan.apiKey); AppBuilder key from the Baidu AI cloud console. Inactive until a key is set.","cost":"free-quota: 100 calls per day, then paid post-payment (https://ai.baidu.com/ai-doc/AppBuilder/pmaxd1hvy)","url":"https://ai.baidu.com/ai-doc/AppBuilder/pmaxd1hvy","recommendedFor":["Chinese general web search with site, exclude and date-range filters"],"provider":"baidu-qianfan","rank":40,"sourceFamily":"baidu"},
48
48
  {"kind":"api","operations":["search"],"regions":["global"],"profiles":["general","news_fact","experience","compare","docs_code"],"resultKinds":["web"],"auth":"key","costTier":"paid","license":"proprietary API service","verification":{"status":"unverified","note":"no adapter yet; facts from vendor documentation"},"notFor":["use before an adapter exists in this plugin"],"id":"parallel","label":"Parallel Search API / CLI","languages":["en"],"keyEnv":["PARALLEL_API_KEY"],"sourceFamily":"parallel","install":"Planned adapter for /v1/search; or parallel-cli (OAuth or key).","cost":"paid: metered plan; no free allowance confirmed","url":"https://docs.parallel.ai/integrations/cli","recommendedFor":["higher limits than the anonymous MCP tier"]},
49
- {"id":"wx-search-cli","label":"wx-search-cli (WeChat articles)","kind":"cli","operations":["search","read"],"languages":["zh"],"regions":["cn"],"profiles":["news_fact","experience","general"],"resultKinds":["social"],"auth":"anonymous","costTier":"anonymous","requires":{"cli":"wx-search"},"install":"npm i -g wx-search-cli (Node); no adapter in this plugin yet.","license":"MIT","cost":"free","url":"https://github.com/tjx666/wx-search-cli","verification":{"status":"unverified","note":"not installed or run by this plugin"},"recommendedFor":["WeChat official-account articles via Sogou search"],"notFor":["stable unattended use: Sogou redirects and captchas change"]},
50
- {"id":"omnireach","label":"OmniReach CLI / MCP","kind":"cli","operations":["search","fetch","read"],"languages":["zh","en"],"regions":["global","cn"],"profiles":["experience","general"],"resultKinds":["social","web"],"auth":"login","costTier":"free-quota","requires":{"cli":"omnireach"},"install":"Python package from github.com/Daily-AC/omnireach; some platforms use its Chrome bridge or OpenCLI.","license":"MIT","cost":"free","url":"https://github.com/Daily-AC/omnireach","verification":{"status":"unverified","note":"not installed or run by this plugin"},"recommendedFor":["WeChat discovery, author work lists and media text"],"notFor":["assuming zero-config for every platform"]},
49
+ {"id":"wx-search-cli","label":"wx-search-cli (WeChat articles)","kind":"cli","operations":["search","read"],"languages":["zh"],"regions":["cn"],"profiles":["news_fact","experience","general"],"resultKinds":["social"],"auth":"anonymous","costTier":"anonymous","requires":{"cli":"wx-search-cli"},"install":"npm i -g wx-search-cli (Node). Second backend of the wechat platform; documented contract only.","license":"MIT","cost":"free","url":"https://github.com/tjx666/wx-search-cli","verification":{"status":"unverified","date":"2026-10-06","version":"0.1.0","note":"contract-only: help and version probed on a real install; output shape from the upstream README and source; no search run"},"recommendedFor":["WeChat official-account articles via Sogou search"],"notFor":["stable unattended use: Sogou redirects and captchas change"]},
50
+ {"id":"omnireach","label":"OmniReach CLI / MCP","kind":"cli","operations":["search","fetch","read"],"languages":["zh","en"],"regions":["global","cn"],"profiles":["experience","general"],"resultKinds":["social","web"],"auth":"anonymous","costTier":"anonymous","requires":{"cli":"omnireach"},"install":"Python package from github.com/Daily-AC/omnireach (uv tool install). search.run platform=omnireach runs its default sources; browser-backed sources stay opt-in in the tool.","license":"MIT","cost":"free","url":"https://github.com/Daily-AC/omnireach","verification":{"status":"unverified","date":"2026-10-06","version":"0.19.0-alpha","note":"contract probed; only the wechat source was run live (see the wechat entry); the multi-source command was not run"},"recommendedFor":["WeChat discovery, author work lists and media text"],"notFor":["assuming zero-config for every platform","private or logged-in sources (use their own CLI)"],"provider":"omnireach","platform":"omnireach"},
51
51
  {"id":"opencli-tieba","label":"OpenCLI Tieba (贴吧)","kind":"cli","operations":["search","read"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"rank":70,"invoke":"dsh-browser: browser_opencli_catalog, then browser_opencli_run tieba","install":"Bundled with the dsh-browser plugin; needs its browser bridge and, for most sites, a logged-in session (browser_opencli_catalog lists the real commands).","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","url":"https://github.com/jackwener/OpenCLI/blob/main/docs/adapters/index.md","verification":{"status":"unverified","note":"commands from the OpenCLI adapter index (2026-09-30 research); verify against the installed version"},"recommendedFor":["commands: search, read"],"notFor":[]},
52
52
  {"id":"opencli-hupu","label":"OpenCLI Hupu (虎扑)","kind":"cli","operations":["search","read"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"rank":70,"invoke":"dsh-browser: browser_opencli_catalog, then browser_opencli_run hupu","install":"Bundled with the dsh-browser plugin; needs its browser bridge and, for most sites, a logged-in session (browser_opencli_catalog lists the real commands).","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","url":"https://github.com/jackwener/OpenCLI/blob/main/docs/adapters/index.md","verification":{"status":"unverified","note":"commands from the OpenCLI adapter index (2026-09-30 research); verify against the installed version"},"recommendedFor":["commands: search, detail"],"notFor":[]},
53
53
  {"id":"opencli-zhihu","label":"OpenCLI Zhihu (知乎)","kind":"cli","operations":["search","read","comments"],"languages":["zh"],"regions":["cn"],"profiles":["experience","general"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"rank":70,"invoke":"dsh-browser: browser_opencli_catalog, then browser_opencli_run zhihu","install":"Bundled with the dsh-browser plugin; needs its browser bridge and, for most sites, a logged-in session (browser_opencli_catalog lists the real commands).","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","url":"https://github.com/jackwener/OpenCLI/blob/main/docs/adapters/index.md","verification":{"status":"unverified","note":"commands from the OpenCLI adapter index (2026-09-30 research); verify against the installed version"},"recommendedFor":["commands: search, question, answer-detail, answer-comments"],"notFor":[]},
@@ -69,6 +69,14 @@
69
69
  {"id":"opencli-xiaoyuzhou","label":"OpenCLI Xiaoyuzhou (小宇宙)","kind":"cli","operations":["read","transcript"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["audio"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"rank":70,"invoke":"dsh-browser: browser_opencli_catalog, then browser_opencli_run xiaoyuzhou","install":"Bundled with the dsh-browser plugin; needs its browser bridge and, for most sites, a logged-in session (browser_opencli_catalog lists the real commands).","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","url":"https://github.com/jackwener/OpenCLI/blob/main/docs/adapters/index.md","verification":{"status":"unverified","note":"commands from the OpenCLI adapter index (2026-09-30 research); verify against the installed version"},"recommendedFor":["commands: podcast, episode, transcript (no `search`)"],"notFor":["keyword search: no `search` command listed"]},
70
70
  {"id":"opencli-toutiao","label":"OpenCLI Toutiao (头条)","kind":"cli","operations":["read","trending"],"languages":["zh"],"regions":["cn"],"profiles":["news_fact"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"rank":70,"invoke":"dsh-browser: browser_opencli_catalog, then browser_opencli_run toutiao","install":"Bundled with the dsh-browser plugin; needs its browser bridge and, for most sites, a logged-in session (browser_opencli_catalog lists the real commands).","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","url":"https://github.com/jackwener/OpenCLI/blob/main/docs/adapters/index.md","verification":{"status":"unverified","note":"commands from the OpenCLI adapter index (2026-09-30 research); verify against the installed version"},"recommendedFor":["commands: articles, hot, recommend (no `search`)"],"notFor":["keyword search: no `search` command listed"]},
71
71
  {"id":"opencli-v2ex","label":"OpenCLI V2EX (OpenCLI)","kind":"cli","operations":["read","trending"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["forum"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"rank":70,"invoke":"dsh-browser: browser_opencli_catalog, then browser_opencli_run v2ex","install":"Bundled with the dsh-browser plugin; needs its browser bridge and, for most sites, a logged-in session (browser_opencli_catalog lists the real commands).","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","url":"https://github.com/jackwener/OpenCLI/blob/main/docs/adapters/index.md","verification":{"status":"unverified","note":"commands from the OpenCLI adapter index (2026-09-30 research); verify against the installed version"},"recommendedFor":["commands: hot, latest, topic (no `search`)"],"notFor":["keyword search through OpenCLI: use the built-in v2ex engine"]},
72
- {"id":"opencli-quark","label":"OpenCLI Quark (夸克)","kind":"cli","operations":["read"],"languages":["zh"],"regions":["cn"],"profiles":[],"resultKinds":["files"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"rank":70,"invoke":"dsh-browser: browser_opencli_catalog, then browser_opencli_run quark","install":"Bundled with the dsh-browser plugin; needs its browser bridge and, for most sites, a logged-in session (browser_opencli_catalog lists the real commands).","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","url":"https://github.com/jackwener/OpenCLI/blob/main/docs/adapters/index.md","verification":{"status":"unverified","note":"commands from the OpenCLI adapter index (2026-09-30 research); verify against the installed version"},"recommendedFor":["commands: cloud-drive operations"],"notFor":["web or content search: a cloud-drive adapter"]}
72
+ {"id":"opencli-quark","label":"OpenCLI Quark (夸克)","kind":"cli","operations":["read"],"languages":["zh"],"regions":["cn"],"profiles":[],"resultKinds":["files"],"auth":"login","costTier":"free-quota","requires":{"browser":true},"rank":70,"invoke":"dsh-browser: browser_opencli_catalog, then browser_opencli_run quark","install":"Bundled with the dsh-browser plugin; needs its browser bridge and, for most sites, a logged-in session (browser_opencli_catalog lists the real commands).","license":"Apache-2.0 (OpenCLI)","cost":"free (your account)","url":"https://github.com/jackwener/OpenCLI/blob/main/docs/adapters/index.md","verification":{"status":"unverified","note":"commands from the OpenCLI adapter index (2026-09-30 research); verify against the installed version"},"recommendedFor":["commands: cloud-drive operations"],"notFor":["web or content search: a cloud-drive adapter"]},
73
+ {"id":"wechat","label":"WeChat official accounts (公众号): OmniReach, wx-search-cli","kind":"cli","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"anonymous","costTier":"anonymous","provider":"wechat","platform":"wechat","rank":70,"install":"Default chain: omnireach (uv tool install from Daily-AC/omnireach; `--on wechat`, Sogou, no key), then wx-search-cli (npm i -g wx-search-cli).","license":"MIT (OmniReach, wx-search-cli)","cost":"free; Sogou rate limits and captchas apply","url":"https://github.com/Daily-AC/omnireach","verification":{"status":"verified","date":"2026-10-06","version":"0.19.0-alpha","note":"omnireach search --on wechat --json returned parsed WeChat articles; wx-search-cli is docs-only"},"recommendedFor":["WeChat official-account articles on Chinese policy, industry and product topics"],"notFor":["stable unattended use: Sogou captchas make real_url empty","non-WeChat sources"]},
74
+ {"id":"xhs","label":"xhs (xiaohongshu-cli)","kind":"cli","operations":["search","read","comments"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"cli":"xhs"},"rank":60,"install":"uv tool install xiaohongshu-cli; run `xhs login` yourself (it reads your browser cookies). The plugin only runs `xhs search` and only with a saved login.","license":"see the upstream repository","cost":"free (your account)","url":"https://github.com/jackwener/xiaohongshu-cli","verification":{"status":"unverified","date":"2026-10-06","version":"0.6.4","note":"contract-only: help probed; output shape from the installed source; no search run"},"recommendedFor":["Chinese lifestyle and product experience notes"],"notFor":["write commands (post, like, comment, follow) are never run","use without a saved login"],"invoke":"search.run platform=xiaohongshu (a backend of its chain; set it first in platformBackends to prefer it)"},
75
+ {"id":"zhihu-cli","label":"zhihu-cli (pyzhihu-cli)","kind":"cli","operations":["search","read"],"languages":["zh"],"regions":["cn"],"profiles":["experience","compare"],"resultKinds":["qa"],"auth":"login","costTier":"free-quota","requires":{"cli":"zhihu"},"rank":60,"install":"uv tool install pyzhihu-cli (the command is `zhihu`); run `zhihu login` yourself. Not the Access-Secret zhihu-cli of dawnswwwww.","license":"see the upstream repository","cost":"free (your account)","url":"https://github.com/BAIGUANGMEI/zhihu-cli","verification":{"status":"unverified","date":"2026-10-06","version":"0.2.4","note":"contract-only: help probed; output shape from the installed source; no search run"},"recommendedFor":["Chinese Q&A and long-form answers"],"notFor":["publishing commands (ask, article, pin, vote) are never run","use without a saved login"],"invoke":"search.run platform=zhihu (a backend of its chain; set it first in platformBackends to prefer it)"},
76
+ {"id":"rdt","label":"rdt (rdt-cli)","kind":"cli","operations":["search","read"],"languages":["en"],"regions":["global"],"profiles":["experience"],"resultKinds":["social"],"auth":"login","costTier":"free-quota","requires":{"cli":"rdt"},"rank":60,"install":"uv tool install git+https://github.com/public-clis/rdt-cli; run `rdt login` yourself (it extracts browser cookies). The plugin only runs `rdt search` and only with a saved login.","license":"see the upstream repository","cost":"free (your account)","verification":{"status":"unverified","date":"2026-10-06","version":"0.4.2","note":"contract-only: help probed; --compact --json shape from the installed source; no search run"},"recommendedFor":["English community experience threads"],"notFor":["write commands (comment, upvote, save, subscribe) are never run","use without a saved login"],"invoke":"search.run platform=reddit (a backend of its chain; set it first in platformBackends to prefer it)"},
77
+ {"id":"opencli","label":"OpenCLI (standalone)","kind":"cli","operations":["search"],"languages":["*"],"regions":["global","cn"],"profiles":["experience","general"],"resultKinds":["social","web"],"auth":"login","costTier":"free-quota","requires":{"cli":"opencli"},"rank":65,"install":"npm i -g @jackwener/opencli plus its Browser Bridge extension in your own Chrome (independent of dsh-browser). Used per site, only where `opencli list` shows a read `search` command.","license":"Apache-2.0","cost":"free (your account)","url":"https://github.com/jackwener/OpenCLI","verification":{"status":"unverified","date":"2026-10-06","version":"1.8.8","note":"contract-only: `opencli list -f json` command table read; -f json is the documented output option; no site search run"},"recommendedFor":["sites the table lists with a read search command: xiaohongshu, reddit, twitter, zhihu, weixin, hackernews, ..."],"notFor":["sites without a search command (douyin, v2ex, xiaoyuzhou, toutiao)","write commands (login, post, like, ...) are never run"]},
78
+ {"id":"gh","label":"GitHub CLI (gh)","kind":"cli","operations":["search"],"languages":["*"],"regions":["global"],"profiles":["docs_code","compare"],"resultKinds":["code"],"auth":"login","costTier":"free-quota","requires":{"cli":"gh"},"rank":55,"install":"brew install gh (or winget install GitHub.cli); run `gh auth login` yourself. Fallback backend of github, github-issues and github-code.","license":"MIT","cost":"free within GitHub API limits","url":"https://cli.github.com","verification":{"status":"verified","date":"2026-10-06","version":"2.101.0","note":"gh search repos --json … parsed live; issues and code searches follow the documented JSON fields"},"recommendedFor":["repositories, issues and code with your own GitHub login"],"notFor":["use without gh auth login"],"invoke":"search.run platform=github (a backend of its chain; set it first in platformBackends to prefer it)"},
79
+ {"id":"tanso","label":"Tanso (Bocha / Zhihu API CLI)","kind":"cli","operations":["search"],"languages":["zh"],"regions":["cn"],"profiles":["news_fact","general"],"resultKinds":["web"],"auth":"key","costTier":"paid","keyEnv":["BOCHA_API_KEY","ZHIHU_ACCESS_SECRET"],"requires":{"cli":"tanso"},"provider":"tanso","platform":"tanso","rank":80,"install":"npm i -g @geekjourneyx/tanso, then `tanso config init` and put your own keys in its config. search.run platform=tanso runs only the bocha_web and zhihu_search sources.","license":"MIT","cost":"paid: your own Bocha / Zhihu keys, billed by those providers (no free allowance confirmed for this route)","url":"https://github.com/geekjourneyx/tanso","verification":{"status":"unverified","date":"2026-10-06","version":"2.0.2","note":"docs-only: contract from the upstream README; not installed or run"},"recommendedFor":["an API-contract reference for Bocha and Zhihu from the command line"],"notFor":["use instead of the built-in Bocha provider when you only need Bocha","the Volcengine answer source (never selected)"]},
80
+ {"id":"douyin-cli","label":"douyin-cli (tamnd)","kind":"cli","operations":["search","trending"],"languages":["zh"],"regions":["cn"],"profiles":["experience"],"resultKinds":["video"],"auth":"anonymous","costTier":"anonymous","requires":{"cli":"douyin"},"rank":90,"install":"brew install tamnd/tap/douyin or go install github.com/tamnd/douyin-cli/cmd/douyin@latest. Catalog only: no adapter, because the README does not document the search record fields.","license":"Apache-2.0","cost":"free","url":"https://github.com/tamnd/douyin-cli","verification":{"status":"unverified","date":"2026-10-06","version":"0.1.1","note":"docs-only: README read; output record fields undocumented, so no adapter spec was written"},"recommendedFor":["the open hot-search board (douyin hot)"],"notFor":["search from a datacenter or non-China IP: the README says it exits with code 4 behind the anti-bot wall","assuming a stable login-free search"]}
73
81
  ]
74
82
  }
@@ -80,7 +80,7 @@ export const SEARCH_ACTIONS = [
80
80
  startPublishedDate: { type: 'string', description: 'Exa only: ISO published-date lower bound.' },
81
81
  endPublishedDate: { type: 'string', description: 'Exa only: ISO published-date upper bound.' },
82
82
  category: { type: 'string', description: 'Exa only: search category.' },
83
- platform: { type: 'string', description: 'Search one platform instead (' + PLATFORM_IDS.join(', ') + ', or a customPlatforms key). Chinese communities and OpenCLI platforms need dsh-browser and a login. With task/profile the platform is the evidence source; if it is unavailable that is an error (allowFallback=true searches the web engines instead).' },
83
+ platform: { type: 'string', description: 'Search one platform instead (' + PLATFORM_IDS.join(', ') + ', or a customPlatforms key). Each platform runs an ordered backend chain (standalone CLIs, OpenCLI, dsh-browser); logins are yours to do, see sources.status. With task/profile the platform is the evidence source; if it is unavailable that is an error (allowFallback=true searches the web engines instead).' },
84
84
  allowFallback: { type: 'boolean', description: 'Evidence mode with an explicit platform: if it is unavailable (no browser, login, CLI or token) search the web engines instead of failing; the pack says so.' },
85
85
  url: { type: 'string', description: 'platform=rss only: the feed URL.' },
86
86
  authProfile: { type: 'string', description: 'platform only: domain-scoped dsh-browser auth profile.' },
@@ -94,6 +94,7 @@ export const SEARCH_ACTIONS = [
94
94
  platform: { type: 'string' },
95
95
  sources: { type: 'array', required: true, items: { type: 'object', additionalProperties: false, properties: { url: { type: 'string', required: true }, title: { type: 'string' }, snippet: { type: 'string' }, publishedAt: { type: 'string' }, lowConfidence: { type: 'boolean' } } } },
96
96
  engine: { type: 'string', required: true },
97
+ backend: { type: 'string' },
97
98
  enginesTried: { type: 'array', items: { type: 'string' } },
98
99
  fromCache: { type: 'boolean', required: true },
99
100
  fallbackNote: { type: 'string' },
@@ -148,7 +149,7 @@ export const SEARCH_ACTIONS = [
148
149
  return runEvidence(query, { platform: { id: resolved.id, ...resolved.url ? { url: resolved.url } : {}, ...resolved.authProfile ? { authProfile: resolved.authProfile } : {}, ...resolved.rulePack ? { rulePack: resolved.rulePack } : {} } });
149
150
  }
150
151
  const result = await ctx.router.search({ query: args.query ?? '', count: args.count ?? 8, fresh: args.fresh ?? false, multi: false, signal: ctx.signal, platform: request });
151
- return { platform: args.platform, sources: result.sources, engine: result.engine, ...result.enginesTried ? { enginesTried: result.enginesTried } : {}, fromCache: result.fromCache, ...result.fallbackNote ? { fallbackNote: result.fallbackNote } : {} };
152
+ return { platform: args.platform, sources: result.sources, engine: result.engine, ...result.backend ? { backend: result.backend } : {}, ...result.enginesTried ? { enginesTried: result.enginesTried } : {}, fromCache: result.fromCache, ...result.fallbackNote ? { fallbackNote: result.fallbackNote } : {} };
152
153
  }
153
154
  for (const key of ['url', 'authProfile', 'rulePack'])
154
155
  if (args[key] !== undefined)
@@ -188,7 +189,7 @@ export const SEARCH_ACTIONS = [
188
189
  render(value) {
189
190
  const v = value;
190
191
  if (v.platform !== undefined)
191
- return 'Platform: ' + v.platform + ' (via ' + v.engine + (v.fromCache ? ', cached' : '') + ')\n\n' + formatSources(v.sources) + (v.fallbackNote ? '\n\n' + v.fallbackNote : '');
192
+ return 'Platform: ' + v.platform + ' (via ' + (v.backend ?? v.engine) + (v.fromCache ? ', cached' : '') + ')\n\n' + formatSources(v.sources) + (v.fallbackNote ? '\n\n' + v.fallbackNote : '');
192
193
  const tried = v.enginesTried ?? [];
193
194
  const pack = value;
194
195
  if (pack.resultId !== undefined && pack.evidence && pack.needs && pack.coveredNeeds && pack.gaps && pack.verification) {
@@ -233,7 +234,7 @@ export const SEARCH_ACTIONS = [
233
234
  if (language && language !== 'zh' && language !== 'en')
234
235
  throw new ActionArgError('language must be zh or en');
235
236
  const { router } = ctx;
236
- const cli = await detectDeps();
237
+ const cli = await detectDeps({ config: ctx.dynamic() });
237
238
  const availability = new Map(cli.map(value => [value.id, value.available]));
238
239
  const catalog = loadCatalog();
239
240
  const cfg = ctx.dynamic();
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/actions/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/actions/search.ts"],"names":[],"mappings":"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"}