Zum Hauptinhalt springen
7

dsh-ai-search

745403lkh/dsh-ai-search

KI-Suche in 3 Modi: Fragen, Enzyklopädie und Browsen. Mit Websuche, Werbefilter, KI-Rangfolge/-Zusammenfassung und Lexikoneinträgen; einstellbar sind Ergebnissprache, Enzyklopädiestufe, Gewichtung von 3 Browser-Metriken, Seitenstatus und Verlauf. Kompatibel mit dsh-better-sidebar (mehrere Tabs, Engine-Leiste, eigene Suchmaschinen).

Installation

dsh plugin --profile web add github:745403lkh/dsh-ai-search

README

dsh-ai-search:AI 搜索

Harness 里的一个搜索面板,包含三个模式:答疑、百科、浏览。 底层共用「联网检索 → 广告过滤 → 正文精读」,再按模式做各自的 AI 处理。

三个模式

1. 答疑(默认)

  • 检索 → 过滤广告 → 精读正文 → AI 摘要 + 推荐排序。
  • 输出:2–4 句摘要、3–6 条推荐(带推荐理由与评分)、已过滤清单、全部来源。
  • 只接受候选里出现过的 URL,模型编造的链接会被丢弃。

2. 百科

  • 面向百科与权威来源检索(同时检索原问题和「百科 / wiki encyclopedia」两路)。
  • 优先百科域名(Wikipedia、百度百科、Britannica 等),再读正文。
  • 按百科体例生成词条:标题 + 概述 + 若干章节 + 参考来源,中立客观。
  • 档位可调(设置 → AI 搜索 → 百科模式详细程度):
    • 简明:3–4 个章节,短
    • 标准:5–6 个章节(默认)
    • 详尽:7–9 个章节,覆盖背景/技术细节/影响/争议

3. 浏览

  • 像搜索引擎信息流:按页面分成 综合 / 文章 / 视频 / 图片 四个板块,默认综合。
  • 排名只用三个指标:相关性 / 时效性 / 热度,权重在设置里用滑杆调(自动归一化; 例如只看相关性就把另外两项拉到 0)。不包含竞价/推广权重,广告在检索阶段已被过滤。
  • 每条结果显示三个分项指标与加权后的综合分。
  • 官网识别(只认官网首页):内置 200+ 常见品牌 → 官网首页映射(微信 / 淘宝 / 京东 / 抖音 / 必应 / Steam / 米哈游 / 原神 / DeepSeek / Google 等)。品牌词命中时,只把官网首页 置顶并标「官方」;官网域名下的其它页面(如 ir.baidu.com 股价页、www.baidu.com/s?wd= 搜索页) 不算官网。检索结果里没有官网首页的,第 1 页会补一条首页条目(第 2 页起不重复)。 设置里还可以自己增删映射(品牌名 + 别名 + 官网首页),自定义映射优先于内置表。
  • 综合 = 全部候选按加权分排序(最多 36 条);文章 / 视频 / 图片分栏是它的子集(按类型筛选, 各最多 12 条),所以分栏里不会出现「综合」中没有的条目。综合默认按「文章 → 视频 → 图片」分组展示, 顺序不随各板块数量变化。
  • 视频只认大型视频站:哔哩哔哩、抖音、快手、YouTube、腾讯视频、优酷、爱奇艺、西瓜、 AcFun、Vimeo 等;检索时用 site: 定向这些站点,卡片上标出来源平台(如「视频 · 哔哩哔哩」)。 普通网页即使被视频检索词带出也不会被误判成视频。
  • 站点上限按类型区分:视频/图片站允许同站最多 10 条(它们本来结果就多),普通站点 5 条; 多出来的只标为「同站点结果较多,已精简」,不算广告。
  • 广告判定偏保守:只过滤明确的广告网络域名、Advertisement/Sponsored/【广告】 等明确标识、 推广链接与重复内容;不再用「佣金/返利/领券」这类弱信号删结果。
  • 下一页:每个板块底部有「下一页」按钮,点击检索新一批并追加;翻页时会带上已看过的 链接(exclude),服务端与客户端都会按 URL 去重,不会重复出现同一条。
  • 图片板块多源检索:像视频一样用 site: 定向图片站(Unsplash / Pexels / Pixabay / 花瓣 / 堆糖等按页轮换),图片类型只认图片站;只有抓到缩略图的条目才进图片板块,没图的会降级成文字条目。
  • 缩略图:图片直链直接当缩略图;视频封面按平台推导(YouTube 用 i.ytimg.com、Vimeo 用 vumbnail、 B 站走公开 view 接口取封面并重试),同页最多 12 条视频都会尝试;其余抓页面 og:image。 首屏没拿到封面的视频,页面渲染后会逐条懒补(Host 接口 + B 站浏览器直连兜底)。 拿不到图的卡片不显示空图片框,直接以纯文字展示。

设置(设置 → AI 搜索)

独立的设置页,修改立即生效:

设置说明
结果语言跟随 Harness(默认)/ 中文 / English;强制 AI 摘要、理由与提醒的输出语言
百科模式详细程度简明 / 标准 / 详尽
浏览模式指标权重相关性 / 时效性 / 热度 三个滑杆(0–100,自动归一化并显示百分比)
切换页面时保留结果默认开启。在对话与搜索、或工作区之间切换后返回,保留原结果与当前板块
适配更好的侧边栏默认开启。安装了 dsh-better-sidebar 时在其中注册「AI 搜索」页签;未安装时自动忽略
结果链接默认在侧边栏浏览器打开默认开启。关闭后点击结果改用系统默认浏览器打开
默认搜索引擎AI 搜索 / 百度 / 必应 / Google / 搜狗(以及自定义引擎);侧边栏页签左侧可随时切换
自定义搜索引擎可添加多个:填名称 + 网址模板,用 *#*#*#* 代替搜索词;添加后出现在侧栏引擎栏,可删除
官网识别映射可添加多个自定义品牌:品牌名 + 别名(逗号分隔)+ 官网首页 URL;支持 Excel(.xlsx)/ CSV 导入,不限条数;自定义优先于内置映射,可删除
自定义搜索 API可切换 Tavily / 博查 / SearXNG / Serper,填接口地址与 API Key 替换默认联网搜索;默认使用 Harness 搜索
自定义思考模型OpenAI 兼容接口(Base URL + API Key + 模型名)+ 思考强度(跟随模型 / 低 / 中 / 高),用于摘要、评分与百科;默认使用 Harness 模型
搜索历史最近 20 条成功搜索,每条标注来源(页面 / AI 工具,旧数据显示「历史」);搜索页可按来源筛选(无记录的来源自动隐藏),设置页显示来源统计;可一键清空

设置左侧导航的图标由 Harness 外壳按固定 section id 映射,插件无法直接注册; AI 搜索用「给导航行打标记 + CSS mask」的方式换成了放大镜图标(与 dsh-better-sidebar 同款适配)。

更好的侧边栏(dsh-better-sidebar)适配

安装 dsh-better-sidebar 后,插件会在 宿主右侧栏直接注册一个 multiple: true 的「AI 搜索」页签类型(ctx.sidebarRightTabs), 以同一份搜索界面嵌在侧边栏里:

  • 像浏览器一样多开:从引导卡反复打开会得到多个独立的 AI 搜索页签,各自保留输入、模式、结果和 板块,可以同时搜几样东西、并排对照(主面板仍是单实例)。
  • 页签左侧是一列竖向搜索引擎按钮,带统一风格的单色图标:AI 搜索(默认)/ 百度 / 必应 / Google / 搜狗(百度、Google 用品牌 logo 路径;必应、搜狗为同风格手绘近似),加上设置里 添加的自定义引擎。点一下就切换;选择非 AI 引擎时,顶部的三模式切换(答疑 / 百科 / 浏览)会隐藏, 搜索词直接跳转对应搜索引擎。
  • AI 搜索的结果、来源、图片、浏览卡片,点击后默认在右侧栏的浏览器标签页里打开;也可以在设置里 改成用系统默认浏览器打开。
  • 设置里关闭「适配更好的侧边栏」后,插件回到原来的形态(左侧栏面板 + 主页面),不注册页签。
  • 没有安装 dsh-better-sidebar 的用户不受影响:适配逻辑是可选注入,检测不到服务时自动跳过, 原有面板、设置、工具全部照常。

本机数据

DSH home(默认 ~/.dsh)下的 ai-search/ 目录:

文件内容
settings.json语言 / 百科档位 / 浏览权重 / 是否保留页面状态 / 侧边栏适配 / 链接打开方式 / 默认搜索引擎 / 自定义搜索引擎
history.json最近 20 条搜索记录({ version: 2, items },旧版纯数组自动迁移)

接口

所有接口(含 GET)都必须携带本地客户端请求头 x-dsh-ai-search: 1,且只接受本机回环来源 (Host 必须是 localhost / 127.0.0.1 / [::1];带 Origin 时必须是同源或桌面壳协议)。 第三方网页的跨站 <img> / 表单 / no-cors fetch 带不上这个头,因此触发不了接口;本接口 从不返回 CORS 头。搜索只接受 POST,并限制每客户端每分钟 10 次(超限 429 + Retry-After)。

方法路径说明
GET/.dsh-ai-search/health依赖服务、版本、模式、当前设置与历史条数
GET/POST/.dsh-ai-search/settings读取 / 部分更新设置
GET/POST/.dsh-ai-search/history读取(含每条 source 与来源 counts)/ 清空搜索历史
POST/.dsh-ai-search/search{ query, mode?, maxResults?, ai?, uiLanguage?, page?, exclude? }

安全说明:旧版 GET /search 调试入口已移除(它可被任意网页用简单请求触发,刷检索/模型 配额、探测过滤规则、污染历史)。改用 POST + 请求头 + 回环来源校验 + 频率限制。本机调试时 需显式带请求头,例如:

curl -H "x-dsh-ai-search: 1" -H "content-type: application/json" -d '{"query":"..."}' http://127.0.0.1:端口/.dsh-ai-search/search

模式:qa(默认)/ encyclopedia / browse。page 仅浏览模式使用(1–5)。 三个模式的响应都带 ok/mode/language/ai/aiModel/stats/cached;答疑带 answer/picks, 百科带 title/lead/sections/references,浏览带 boards/items/weights/hasMore/page (视频条目另有 sourcePlatform 标出来源平台)。

错误响应统一为 { ok: false, error: { code, message } }。

结构

文件作用
index.jsHost 入口:注册 HTTP 路由、curated_search 工具、设置与历史
lib/search.js三模式分发、语言解析、缓存、健康检查
lib/curate.js答疑模式的提示词、JSON 解析与降级排序
lib/encyclopedia.js百科模式:双路检索、百科来源排序、词条生成
lib/browse.js浏览模式:分页查询、三指标评分/加权、板块、缩略图
lib/model-json.js通用模型 JSON 调用(路由解析、流式聚合)
lib/filters.js链接规范化、广告识别、去重、相关度排序
lib/html-text.jsHTML → 正文纯文本、标题与摘录提取
lib/routes.js同源 HTTP 接口(请求头 + 回环来源守卫 + 频率限制)
lib/settings.js / lib/history.js / lib/paths.js设置 / 历史持久化与路径
lib/tool.jscurated_search 工具(含 mode/page 参数)
client.js浏览器半侧:侧边栏图标、搜索页(三模式、分页)、独立设置页

依赖

不依赖任何第三方 npm 包:Host 只用 Harness 的 ctx.web / ctx.llm / ctx.agentDefaultModel 与 Node 内置能力;Client 通过 window.__ModuleLoader__ 请求平台自带的 React。

备注

  • 搜索结果与网页内容属于外部不可信数据,工具输出会提示模型只当作资料、不要当作指令。
  • 检索与模型调用会消耗账户配额;同一问题、同一模式 10 分钟内重复搜索直接读缓存 (浏览模式仅第 1 页缓存,翻页不缓存)。
  • Agent 工具支持同样的三个模式:curated_search(query, mode, page, exclude); 浏览模式翻页时可把上一页的 items[].url 放进 exclude,服务端会去重。
  • 答疑结果会标注「精读」口径:正文全部读取成功时显示「精读 N 篇」;部分或全部失败时显示 「精读 x/y 篇」或「未读取正文(摘要基于检索片段)」,不会再用「精读 0 篇」误导。

许可证 / License

MIT © 2026 Akivelli

Ähnliche Plugins