{"_id":"@cocofhu/anime-find","_rev":"4-2c0b02dbfa5bf95fbb8e1494c415f375","name":"@cocofhu/anime-find","dist-tags":{"latest":"0.1.12"},"versions":{"0.1.9":{"name":"@cocofhu/anime-find","version":"0.1.9","keywords":["dsh","dsh-plugin","deepseek-harness","anime","mikan","bangumi"],"license":"MIT","_id":"@cocofhu/anime-find@0.1.9","maintainers":[{"name":"cocofhu","email":"cocofhu@outlook.com"}],"homepage":"https://github.com/cocofhu/anime-find#readme","bugs":{"url":"https://github.com/cocofhu/anime-find/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"18875eb653a896f70f33d5b7dd1166837f40c809","tarball":"https://registry.npmjs.org/@cocofhu/anime-find/-/anime-find-0.1.9.tgz","fileCount":22,"integrity":"sha512-E6Zg969ci49gT8wo5ee8+0dzhjckVitIS06hW5USTyOmInIAno/W13LdMuJqozqEUXTEkhywOvDdhCprNNSXXA==","signatures":[{"sig":"MEQCIHQZXUz6bozhdmXUXv6gAu4fdT6qxzoeOty/tXDCzIebAiAiBNcnBRzOBfEA7uk6L5bBnYrObkddPiTUgHINkWwkYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":809323},"main":"lib/host.js","type":"module","engines":{"node":">=22"},"exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"02059e149a3eb50a9ae4e2f3c3f2f0377588a25f","scripts":{"test":"npm run build && node --test lib/tests/*.test.js","build":"tsc -p tsconfig.json && mkdir -p lib/tests/fixtures && cp src/client.js lib/client.js && cp node_modules/hls.js/dist/hls.min.js lib/hls.min.js && cp src/tests/fixtures/* lib/tests/fixtures/","prepare":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"cocofhu","email":"cocofhu@outlook.com"},"repository":{"url":"git+https://github.com/cocofhu/anime-find.git","type":"git"},"_npmVersion":"10.9.8","description":"DeepSeek Harness 插件：对话内多源搜番，卡片详情、磁力复制与规则流媒体在线播放","directories":{},"_nodeVersion":"22.23.2","dependencies":{"hls.js":"^1.7.0","cheerio":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.17.0","devDependencies":{"typescript":"^7.0.2","@types/node":"^26.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-tools":"*","@deepseek-ai/schemastery":"*"},"_npmOperationalInternal":{"tmp":"tmp/anime-find_0.1.9_1787024468406_0.03225876121929594","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@cocofhu/anime-find","version":"0.1.10","keywords":["dsh","dsh-plugin","deepseek-harness","anime","mikan","bangumi"],"license":"MIT","_id":"@cocofhu/anime-find@0.1.10","maintainers":[{"name":"cocofhu","email":"cocofhu@outlook.com"}],"homepage":"https://github.com/cocofhu/anime-find#readme","bugs":{"url":"https://github.com/cocofhu/anime-find/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"50f90a73aa9dc58ee940793ed265d8224b81fa41","tarball":"https://registry.npmjs.org/@cocofhu/anime-find/-/anime-find-0.1.10.tgz","fileCount":22,"integrity":"sha512-VIoFmYlWbbcwUVa4+2ADTQjTB67ksK52XeSicc3/N0wP7caNZhFtJaUHOsUCtG87+RrEF5yPuA2d0W2FKb4z0g==","signatures":[{"sig":"MEUCIAr19RIWC1gPHVk6JdUC3HQ+gq+TMsn+YS19gn67ANhsAiEAye4UuRRp/vd/Q0fr7jSCY44U4YeHYdRSpHEpj1qupOY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":809324},"main":"lib/host.js","type":"module","engines":{"node":">=22"},"exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"d1c29fefa2ff6df95eff93256083cd7d14f93665","scripts":{"test":"npm run build && node --test lib/tests/*.test.js","build":"tsc -p tsconfig.json && mkdir -p lib/tests/fixtures && cp src/client.js lib/client.js && cp node_modules/hls.js/dist/hls.min.js lib/hls.min.js && cp src/tests/fixtures/* lib/tests/fixtures/","prepare":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"cocofhu","email":"cocofhu@outlook.com"},"repository":{"url":"git+https://github.com/cocofhu/anime-find.git","type":"git"},"_npmVersion":"10.9.8","description":"DeepSeek Harness 插件：对话内多源搜番，卡片详情、磁力复制与规则流媒体在线播放","directories":{},"_nodeVersion":"22.23.2","dependencies":{"hls.js":"^1.7.0","cheerio":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.17.0","devDependencies":{"typescript":"^7.0.2","@types/node":"^26.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-tools":"*","@deepseek-ai/schemastery":"*"},"_npmOperationalInternal":{"tmp":"tmp/anime-find_0.1.10_1787024741796_0.8231416872513568","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@cocofhu/anime-find","version":"0.1.11","keywords":["dsh","dsh-plugin","deepseek-harness","anime","mikan","bangumi"],"license":"MIT","_id":"@cocofhu/anime-find@0.1.11","maintainers":[{"name":"cocofhu","email":"cocofhu@outlook.com"}],"homepage":"https://github.com/cocofhu/anime-find#readme","bugs":{"url":"https://github.com/cocofhu/anime-find/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"12ea333722f7c661c6600545744ae25118952acb","tarball":"https://registry.npmjs.org/@cocofhu/anime-find/-/anime-find-0.1.11.tgz","fileCount":22,"integrity":"sha512-cJ1IiP0C4nEo09SihwSTlfzDjzBaH3yxtNrlNDDMZtlHrLlwTuIEtdzdEWiJNMzH+W94LbKJucKxwW4Tiy6OKA==","signatures":[{"sig":"MEUCIESzCr8PWZIlUPwpKpbEijEXnb9OKPKRXk95sDFLIn5AAiEA58qqRLC3Rn0cI6h+5PWVS49Dpfbub3NafHhgURNzzcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cocofhu%2fanime-find@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":809324},"main":"lib/host.js","type":"module","engines":{"node":">=22"},"exports":{".":"./lib/host.js","./client":"./lib/client.js","./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"66f21a9836b33709041aa72853a2edadb771a87b","scripts":{"test":"npm run build && node --test lib/tests/*.test.js","build":"tsc -p tsconfig.json && mkdir -p lib/tests/fixtures && cp src/client.js lib/client.js && cp node_modules/hls.js/dist/hls.min.js lib/hls.min.js && cp src/tests/fixtures/* lib/tests/fixtures/","prepare":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8f20eda0-0521-4e5b-b47c-88ab44ead8f2"}},"repository":{"url":"git+https://github.com/cocofhu/anime-find.git","type":"git"},"_npmVersion":"12.0.2","description":"DeepSeek Harness 插件：对话内多源搜番，卡片详情、磁力复制与规则流媒体在线播放","directories":{},"_nodeVersion":"24.19.0","dependencies":{"hls.js":"^1.7.0","cheerio":"^1.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.17.0","devDependencies":{"typescript":"^7.0.2","@types/node":"^26.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"*","@deepseek-ai/dsh-tools":"*","@deepseek-ai/schemastery":"*"},"_npmOperationalInternal":{"tmp":"tmp/anime-find_0.1.11_1787025144775_0.027823759716208984","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@cocofhu/anime-find","version":"0.1.12","description":"DeepSeek Harness 插件：对话内多源搜番，卡片详情、磁力复制与规则流媒体在线播放","homepage":"https://github.com/cocofhu/anime-find#readme","bugs":{"url":"https://github.com/cocofhu/anime-find/issues"},"repository":{"type":"git","url":"git+https://github.com/cocofhu/anime-find.git"},"type":"module","main":"lib/host.js","exports":{".":"./lib/host.js","./client":"./lib/client.js","./cordis.patch.yml":"./cordis.patch.yml","./package.json":"./package.json"},"keywords":["dsh","dsh-plugin","deepseek-harness","anime","mikan","bangumi"],"license":"MIT","publishConfig":{"access":"public"},"packageManager":"pnpm@11.17.0","engines":{"node":">=22"},"scripts":{"build":"tsc -p tsconfig.json && mkdir -p lib/tests/fixtures && cp src/client.js lib/client.js && cp node_modules/hls.js/dist/hls.min.js lib/hls.min.js && cp src/tests/fixtures/* lib/tests/fixtures/","prepare":"npm run build","test":"npm run build && node --test lib/tests/*.test.js","typecheck":"tsc -p tsconfig.json --noEmit"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"]}},"peerDependencies":{"@deepseek-ai/cordis":"*","@deepseek-ai/dsh-settings":"*","@deepseek-ai/dsh-tools":"*","@deepseek-ai/schemastery":"*","react":"^18.2.0"},"dependencies":{"cheerio":"^1.1.2","hls.js":"^1.7.0"},"devDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"0.1.0-rc.8","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1","@types/node":"^26.2.0","typescript":"^7.0.2"},"gitHead":"a772e4d74608469507a48bf5bfe8445cd567064f","_id":"@cocofhu/anime-find@0.1.12","_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-f3PECXZCXmUnOwfgDjUeHW/F+vRXx1nSuQIqsqEg921AXP8c8jtNbmLjCCMaqucLq0v0L9dzJ8hGrOuQwTK5aw==","shasum":"ed012b2c625d93d7c2ad517144e5e39f180bd605","tarball":"https://registry.npmjs.org/@cocofhu/anime-find/-/anime-find-0.1.12.tgz","fileCount":23,"unpackedSize":814833,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cocofhu%2fanime-find@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHJ2euV83ujIdItugCbMoQWva2aBdwpGgPJspMKxasBwAiEAxsIrCali/IY7lKdwKdKKSbvDkpZhCIV/DC2CRzP6jAs="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8f20eda0-0521-4e5b-b47c-88ab44ead8f2"}},"directories":{},"maintainers":[{"name":"cocofhu","email":"cocofhu@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/anime-find_0.1.12_1787156972347_0.4112404787488184"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-18T03:41:08.240Z","modified":"2026-08-19T16:29:32.805Z","0.1.9":"2026-08-18T03:41:08.557Z","0.1.10":"2026-08-18T03:45:41.998Z","0.1.11":"2026-08-18T03:52:24.950Z","0.1.12":"2026-08-19T16:29:32.487Z"},"bugs":{"url":"https://github.com/cocofhu/anime-find/issues"},"license":"MIT","homepage":"https://github.com/cocofhu/anime-find#readme","keywords":["dsh","dsh-plugin","deepseek-harness","anime","mikan","bangumi"],"repository":{"type":"git","url":"git+https://github.com/cocofhu/anime-find.git"},"description":"DeepSeek Harness 插件：对话内多源搜番，卡片详情、磁力复制与规则流媒体在线播放","maintainers":[{"name":"cocofhu","email":"cocofhu@outlook.com"}],"readme":"# anime-find\n\n![anime-find](docs/banner.jpg)\n\n[![CI](https://github.com/cocofhu/anime-find/actions/workflows/ci.yml/badge.svg)](https://github.com/cocofhu/anime-find/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/@cocofhu/anime-find.svg)](https://www.npmjs.com/package/@cocofhu/anime-find)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nDeepSeek Harness 搜番插件。在对话中搜索番剧，以可点击卡片展示结果，并在详情面板中查看字幕组、磁力链接和种子文件。\n\n## 功能\n\n- 聚合 [Mikan](https://mikanani.me)、[AniBT](https://anibt.net) 和 [AnimeGarden](https://animes.garden)\n- 在对话流中展示番剧封面、标题、评分、格式和资源数量\n- 根据 Asia/Shanghai 时区识别当前新番季度\n- 支持「还有吗」「换一批」等追问并分页展示更多结果\n- 点击卡片后按字幕组和集数浏览资源，并可查看 Bangumi 介绍、评分和短评\n- 支持复制磁力链接和打开 `.torrent` 文件\n- 可选流媒体 Tab：按搜索结果显示用户规则解析出的可播源，并在同页选集播放\n- 可在 Harness 插件设置中启用来源、调整结果数量和站点地址\n- 在插件设置中查看当前版本，并手动检查 GitHub 正式 Release\n\n## 环境要求\n\n- Node.js 22 或更高版本\n- DeepSeek Harness Web\n\n## 安装\n\n从 [npm](https://www.npmjs.com/package/@cocofhu/anime-find) 安装：\n\n```sh\ndsh plugin --profile web add @cocofhu/anime-find\n```\n\n本地开发：\n\n```sh\ndsh plugin --profile web add /absolute/path/to/anime-find\n```\n\n安装后重启 `dsh web`，并强制刷新浏览器页面。不要用 `github:cocofhu/anime-find` 或无前缀的 `anime-find` 安装：git 源会跑 `prepare`；旧包名已迁到 `@cocofhu/anime-find`。\n\n## 使用\n\n可以直接对 Agent 说：\n\n> 搜一下无职转生，看看有没有磁力\n\n> 最近有哪些好看的动漫\n\n> 还有吗\n\n插件向 Agent 提供 `anime_find_search` 工具。搜索完成后，对话中会显示可点击卡片；点击卡片即可查看字幕组与下载资源。\n\n### 资源详情\n\n按字幕组浏览集数、复制磁力链接或打开种子文件：\n\n![资源详情：无职转生第三季的磁力与种子列表](docs/screenshot-resources.png)\n\n### 流媒体播放\n\n在详情中切换到流媒体，选择剧集后可在对话中直接播放：\n\n![流媒体播放：无职转生第三季在线播放](docs/screenshot-streaming.png)\n\n## 配置\n\n打开 **设置 → 插件 → 插件配置 → 搜番**：\n\n- **搜索源**：默认仅启用 Mikan，可选 AniBT 和 AnimeGarden\n- **搜索结果上限**：每批返回的卡片数量\n- **站点地址**：各来源的服务地址，可按需替换镜像\n\n保存后立即生效。用户配置落在 Harness 用户目录 `$DSH_HOME/settings.yaml` 的 `anime-find:` 段（由 dsh 设置服务原子写入）。版本与安装来源为只读信息，不会写入该段。\n从旧版升级时，若仍存在 `$DSH_HOME/anime-find.json` 且 yaml 中尚无该用户段，插件会把 json 导入 `anime-find:` 后将原文件改名为 `anime-find.json.bak`；若 yaml 里已有用户配置则跳过导入，仍只改名备份，之后不再读取 json。\n\n### 流媒体播放\n\n流媒体默认开启，并内置一条可静态解析的试点规则（xfdm）。打开 **设置 → 插件 → 插件配置 → 搜番**\n可关闭总开关、启停或替换规则 JSON。规则须为可静态解析的 CSS 或受限 XPath 子集，至少包含\n`name`、`baseURL`、`searchURL`、`searchList`、`searchName`、`searchResult`、`chapterRoads`\n和 `chapterResult`。`{{keyword}}` 或 `{{query}}` 会替换为搜索关键词。\n\n播放地址支持两种取法：`playURL` 既可以是指向 `src`/`href` 的选择器，也可以写成\n`script:player_aaaa.url`，从播放页内联脚本对象里读取（MacCMS 站点常用，按同级\n`encrypt` 字段自动处理 URL 编码或 base64）。\n\n当媒体位于站点之外的 CDN 时，用 `mediaHosts` 显式声明这些域名，只有声明过的域才会\n被解析和代理放行；私网、回环和链路本地地址始终拒绝。\n\n`mediaHeaders` 只作用于媒体请求，值留空表示不发送该头。同一站点的不同 CDN 要求可能\n相反（有的必须带 `Referer`，有的带了就报错），所以键名含点时视为域名，其下的头只对该\n域及其子域生效：\n\n```json\n{\n  \"mediaHosts\": [\"cdn-a.example\", \"cdn-b.example\"],\n  \"mediaHeaders\": { \"cdn-b.example\": { \"referer\": \"\" } }\n}\n```\n\n流媒体 Tab 只显示已解析出剧集的源；单集不能播放时可换源或打开源站。媒体请求仅会代理到\n已启用规则的域名及其声明的 `mediaHosts`（HLS playlist 会重写分片链接），不提供开放代理。首期不支持依赖\nKazumi WebView 拦截的动态规则，也不会自动同步社区规则仓库。受限 XPath 支持常见的\n`//tag`、层级、序号、属性与属性包含谓词；脚本、函数和文本匹配谓词仍不支持。插件不托管任何内容，请仅\n访问你有权观看的内容并遵守来源站点条款。\n\n也可通过 `cordis.patch.yml` 设置默认来源：\n\n```yaml\n- id: anime-find\n  config:\n    sources: [mikan]\n```\n\n## 数据与网络\n\n启用某个来源后，插件会向对应站点发送搜索和详情请求。封面通过插件服务转发，配置仅保存在本机，不会写入仓库。\n\n详情卡在有 Bangumi subject ID 时，会通过 Host 使用插件配置的 User-Agent 和超时设置请求 Bangumi 条目信息；介绍、评分和基础信息来自公开 v0 API。短评由 Host 代理 Bangumi 的非公开 p1 接口，最多展示 5 条。该接口可能变更或不可用，届时短评 Tab 会自动隐藏，不影响介绍和资源浏览；本期不使用 HTML 抓取后备。\n\nBangumi 的介绍和短评只在用户点击详情卡后加载和渲染，不会写入提供给模型的工具正文。\n\n请遵守来源站点的使用条款，并仅将下载能力用于你有权访问的内容。\n\n## 版本与更新\n\n在 **设置 → 插件 → 插件配置 → 搜番** 的「版本与更新」区块中，可手动检查\nGitHub 上的最新正式 Release。打开设置页不会自动检查，也不会使用预发布版或草稿\nRelease。\n\n发现新版本时，保留显示以下官方命令供参考。点击「更新」并确认后，插件会自动使用\n当前 profile 执行该命令、拉起新的 `dsh web`（可能使用不同端口），然后自动跳转到新\n地址：\n\n```sh\ndsh plugin --profile web update @cocofhu/anime-find\n```\n\n当前以 `link:` 或 `file:` 本地方式安装时，页面仍会显示版本对比，但禁止自动更新，\n以免覆盖开发环境。若仓库尚未发布正式 Release，检查结果会显示「暂无可用 Release，无法判断是否有更新」。\n\n## 开发\n\n```sh\npnpm install --frozen-lockfile\npnpm typecheck\npnpm test\npnpm build\n```\n\n源码位于 `src/`，构建结果输出到 `lib/`。`lib/` 不提交到版本库，安装或发布时由 `prepare` 脚本生成。\n\n### Harness + MiniMax 中国站验收\n\n使用隔离的 `DSH_HOME` 部署本地插件时，需要先为 Harness 注册模型提供方；否则 Web 首次引导无法创建会话，也无法触发 `anime_find_search` 和 ToolView。密钥只通过环境变量传入，不要写入仓库或 `settings.yaml`：\n\n```sh\nexport MINIMAX_KEY_CN='...'\nexport DSH_HOME=\"$(mktemp -d)\"\n\nmkdir -p \"$DSH_HOME\"\ncat >\"$DSH_HOME/settings.yaml\" <<'EOF'\nllm-pi-ai:\n  providers:\n    minimax-cn:\n      apiKeyEnv: MINIMAX_KEY_CN\n      api: openai-completions\n      baseURL: https://api.minimaxi.com/v1\n      models:\n        - id: MiniMax-M3\nEOF\n\nnpx @deepseek-ai/dsh web\n```\n\n随后在 **设置 → 模型** 选择 `minimax-cn / MiniMax-M3`，并从另一个终端安装本地插件：\n\n```sh\nDSH_HOME=\"$DSH_HOME\" npx @deepseek-ai/dsh plugin --profile web add /absolute/path/to/anime-find\n```\n\n在新会话中请求搜番，确认工具视图的「流媒体」Tab、可播源卡片、选集和播放器路径。该配置仅用于验收；流媒体规则和任何第三方站点授权仍须由测试者自行提供。\n\n## 故障排查\n\n- **页面停在 Loading plugins**：确认 `pnpm build` 成功，重启 `dsh web` 后强制刷新\n- **`ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED`**：改用 npm 安装 `dsh plugin --profile web add @cocofhu/anime-find`，不要走 git 源或旧包名 `anime-find`\n- **loader 报 `requires options.id` 或 `requires options.key`**：`settings.plugin.item` 在部分 Harness 版本是 list slot（要 `id`），在 rc7 起是 keyed slot（要 `key`）。客户端必须同时注册 `id` 和 `key`；Host 通过 `installSettingsSection` 登记 `anime-find` 命名空间后才会分发配置卡\n- **搜番卡片未出现**：开启新对话，并确认 `anime_find_search` 已加载\n- **本季结果较少**：提高结果上限，或在设置中启用 AniBT / AnimeGarden\n- **来源请求失败**：检查网络与对应站点地址；单个来源失败不会阻止其他来源返回结果\n\n## 参与贡献\n\n提交 Issue 或 Pull Request 前请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。安全问题请按 [SECURITY.md](SECURITY.md) 私下报告。\n\n## 许可证\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}