WeKnora
Tencent
Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:JPA957/dsh-web-search-anysearch
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
[English] | 中文
An AnySearch-backed search provider plugin for DeepSeek Harness, registered on the ctx.web seam (web-search-anysearch).
The plugin ships two halves, like the built-in providers:
anysearch search provider with round-robin key rotation and per-key cooldown failover, and installs a settings section so the configuration is editable in the web app.dsh plugin --profile web add @jpa957/dsh-web-search-anysearch
(or from a local checkout: dsh plugin --profile web add /path/to/dsh-web-search-anysearch)
The bundle's patch layer registers the provider automatically. To make it the web seam's default search backend, add the pin to your own patch layer, applied after the bundle's layer:
- id: web
config:
searchProvider: anysearch
fetchProvider: http
Migrating from a hand-mounted copy? Remove the old
- insert:row that pointed at the plugin file from your profile patch first — the bundle now supplies its own registration, and a duplicate id would fail the composition. Keep thesearchProvider: anysearchpin.
Open the web app's Settings → AnySearch tab: the page lets you set
ANYSEARCH_API_KEY. A comma-separated value forms a key pool.https://api.anysearch.com when blank.Edits are staged and written on Save; Discard reverts. The settings namespace is web-search-anysearch (the section the card edits), so the same configuration can also be managed through the settings document.
Keys are gathered from the credentials reference (comma-split), plus any composition-layer apiKey/apiKeys literals, deduplicated. Searches rotate round-robin; a key-scoped failure — rate limiting (HTTP 429 / "retry after N seconds", honoring the API's retry-after header), quota exhaustion, or auth rejection (401/403) — puts that key on cooldown (60s default, 10min for auth/quota) and retries the next key within the same search, up to six attempts. An exhausted pool aggregates one WEB_PROVIDER_ERROR naming the pool size, masked key, and the API's request_id. An empty pool searches anonymously.
Keys enter only through the credentials domain (Settings page or $ANYSEARCH_API_KEY), or through the composition config if you explicitly put them there. This repository contains no secrets; tests use obviously fake as_sk_unit-* keys. Diagnostics mask keys to their first ten characters.
WEB_ABORTED from the fetch, body-parse, and signal phases.content is preferred over snippet; truncated is always false because the web service owns the final maxResults bound (clamped to the API's documented 1-10).node tests/unit.mjs # offline unit tests (plain node, no framework)
node tests/client-bundle.mjs # client-bundle contract smoke test
node tests/live.mjs # live anonymous smoke test against the real endpoint
The browser half (lib/client.js) is a prebuilt, hand-maintained bundle in the client-module factory format — no build step is required. When installing from a git URL or npm, the committed lib/client.js is what the web app serves.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: anysearch、web-search。