dsh-weknora
Tencent/WeKnora把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
npm i -g dsh1024 once, then dsh1024 plugin --profile web add dsh-fund-research (counts toward the deepseek1024.com install ranking).Deterministic research reports for Chinese public mutual funds, on DeepSeek Harness.
*Every key number in every report traces back to a hashed source snapshot — gaps declared, never invented. Research only; not investment advice.*
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <name> add dsh-fund-research📖 Ecosystem knowledge base — measured data, not marketing: plugin development guide · plugin-selection data · maintenance criteria.
dsh plugin --profile web add dsh-fund-research # install (npm or tarball)
dsh plugin --profile web remove dsh-fund-research # uninstallRestart the profile after installing (bundle activation is restart-based). The shipped profiles compose the storage stack through dsh-base (dsh-storage + dsh-storage-json + dsh-storage-domain); the bundle patch mounts only the plugin row.
这个插件是 DSH 插件家族的一员(95 个,全部 Apache-2.0)。如果你在用,给个 star —— 它不会解锁任何功能,但会让下一个人在搜索里更容易找到它。
*English:* part of a 95 plugin family for DeepSeek Harness. If it is useful, a star helps the next person find it — nothing is gated behind it.
Deterministic research reports for Chinese public mutual funds, on DeepSeek Harness.
Every key number in every report traces back to a hashed source snapshot — gaps declared, never invented. Research only; not investment advice.
*Workflow overview: question → sealed sources → report. The examples below use the real command surface.*
Component · Version DeepSeek Harness · dsh-v0.2.1-rc.2 (peer range admits the alpha.2 line: >=0.1.2-rc.1 =0.1.5-alpha.1 =0.1.6-0 =0.1.7-0 =24.0.0 Package manager · pnpm@11.7.0 Platform · Windows / macOS / Linux (host-only plugin) Data sources · Tiantian Fund / Eastmoney public endpoints (no key, no login)
fund-reports/{code}/{YYYYMMDD-HHmmss}/ as report.md + manifest.json + snapshot.json. background: true runs it as a fund-report background job.snapshot.json through the optional dsh-data-quality service when it is installed, or through the built-in isomorphic fallback checker (builtin-fallback) otherwise. The appendix table records value ↔ path ↔ verdict.offline: true (config or tool argument) serves everything from the storage-domain snapshot layer or the newest on-disk version snapshot, with zero outbound requests. Ideal for tests and reproduction.asOfDate (ISO YYYY-MM-DD) truncates the NAV series to data on or before that date and stamps the snapshot + report with the cutoff; invalid or future dates fail loudly./.run-state.json records each pipeline stage (snapshot/report) with timestamps and an input fingerprint; resume: true continues from the first incomplete stage, reusing sealed artifacts, and rejects a fingerprint mismatch.sources-discovery.json (endpoint roster, primary/fallback resolution, per-source coverage and gaps, degradation reasons) and folds it into the report appendix as 数据源与缺口声明.codes accepts an array of fund codes; each fund runs the pipeline independently with per-fund failure isolation (failures become summary gaps), and the result is a summary card (code / asOf / seal hash / verdicts / failure reason)./.tracking.jsonl; includeComparison: true renders a deterministic 与上次对比 section (NAV range / scale / top holdings) with a gap declaration when no prior record exists.fund-review job reviews the sealed artifacts (gap-declaration completeness, traceability-table consistency, disclaimer) and writes review-note.md; it skips gracefully (recorded in run-state) when no jobs service is present.requested/succeeded/fieldsPresent/parseWarnings/degraded), rendered in the appendix and surfaced in tool values so downstream can downweight (never hard-filter) a low-quality source.includeWalkForward: true adds a 样本外稳定性摘要 section: deterministic rolling-window return/Sharpe sign persistence and mean/std, explicitly labelled as statistical description only, not a prediction.fund-research/snapshot and fund-research/report log-only events carry the code, version directory, manifest hash, and gap list (model-visible ⟺ logged) *when the host admits out-of-repo event types*; on 0.1.2-alpha.1–0.1.5-alpha.1 hosts the known-type catalog is build-generated in-repo, so the gate appends nothing and the tool results plus sealed artifacts are the audit trail.fund-research skill teaches the model the metric口径 (definitions), gap handling, and compliance wording. Computation stays in code.dsh plugin --profile web add github:PerryLink/dsh-fund-research> 用 fund_research 出一份 161725 的研究报告The agent calls fund_research({ code: "161725" }); a minute later the workspace holds:
fund-reports/161725/20260819-153012/
├── snapshot.json # raw extracted data + computed metrics + per-source sha256
├── sources-discovery.json # code-generated endpoint roster + coverage + gaps
├── report.md # the research report with the traceability appendix
└── manifest.json # snapshot/report hashes, parameters, verify engine, gaps.run-state.json sits at the report root and records the pipeline stages for resume: true. Every number in report.md's appendix carries a verified / mismatch / not-found / unverifiable verdict against snapshot.json — recompute any of them from raw.* with the documented口径 to audit the plugin itself.
These are the plugin's real entry points; install once, then call one.
Command
~~~sh fund_research({ code: "161725", sections: ["overview", "disclaimer"] }) ~~~
Output
~~~text 招商中证白酒指数(LOF)A(161725)研究报告已封存 — 仅供研究参考,不构成投资建议 版本目录 20261019-124928;报告 fund-reports/161725/20261019-124928/report.md manifest fund-reports/161725/20261019-124928/manifest.json(报告 sha256 f74b1446d544…) 数字回溯表核查(builtin-fallback):verified 5 / mismatch 0 / not-found 0 / unverifiable 0 采集方式:快照复用(offline);章节:overview、disclaimer ~~~
*Observed from README.md:99-113,149-161; test/tools.spec.ts:150-171; src/tools/research.ts:121-130*
Input
~~~text {"code":"161725","asOfDate":"2024-02-30"} ~~~
Output
~~~text isError=true; error.message=asOfDate must be a real calendar date, got "2024-02-30" ~~~
*Observed from plugins/dsh-fund-research/src/sources/snapshot.ts:167 (parseAsOfDate); plugins/dsh-fund-research/README.md:173 (invalid dates fail loudly); exercised through plugins/dsh-fund-research/test/harness.ts*
fund_snapshotAll keys are optional (defaults shown); invalid values fail loudly at load.
Key · Default · Description enabled · true · Master switch; false mounts nothing at all. promptSection · false · Register the short fund-research role statement in the deployment-wide system prompt. Off by default; true applies it to every session in the profile. eastmoneyBaseUrl · https://fund.eastmoney.com · Tiantian Fund pingzhongdata host. f10BaseUrl · https://fundf10.eastmoney.com · Tiantian Fund F10 host (holdings + manager pages). quoteBaseUrl · https://push2.eastmoney.com · Eastmoney quote host for per-stock valuation snapshots. quoteFallbackBaseUrl · https://push2delay.eastmoney.com · Fallback quote host tried per stock when the primary fails (Eastmoney's own delayed-quote host); '' disables it. requestIntervalMs · 1000 · Minimum gap between outbound requests (polite collection). timeoutMs · 15000 · Per-request timeout. retries · 2 · Retries per request with exponential backoff. cacheTtlHours · 12 · Storage-domain snapshot reuse window. riskFreeRate · 0.02 · Annual risk-free rate for the Sharpe ratio. offline · false · Never send requests; read the snapshot layer only. reportRoot · fund-reports · Workspace-relative (or absolute) report tree root. styleQuotes · true · Fetch per-stock valuation quotes for style attribution.
fund_researchArgument · Type · Description code · string · Six-digit fund code, e.g. "161725" (single fund). Mutually exclusive with codes. codes · string[] · Multiple six-digit fund codes: a fan-out with per-fund failure isolation (returns a summary). Mutually exclusive with code. sections · string[] · Section ids to render (overview/performance/holdings/style/manager/benchmark/risk/disclaimer). Default: all. offline · boolean · Read the snapshot layer only (no network). Default: plugin config. asOfDate · string · ISO 8601 date (YYYY-MM-DD) cutoff: only data on or before it is used (NAV series truncated). Empty = no cutoff; future dates fail loudly. resume · boolean · Resume the recorded .run-state.json run from the first incomplete stage (reuses sealed artifacts); rejects a fingerprint mismatch. Default: false. includeComparison · boolean · Render a deterministic 与上次对比 section against the previous .tracking.jsonl record; missing evidence is declared as a gap. Default: false. includeWalkForward · boolean · Render a deterministic 样本外稳定性摘要 (walk-forward) section: rolling-window return/Sharpe sign persistence and mean/std. Statistical description only, not a prediction. Default: false. background · boolean · Run as a fund-report background job; returns { kind: "background", jobId }. Default: false.
fund_snapshotArgument · Type · Description code (required) · string · Six-digit fund code. offline · boolean · Read the snapshot layer only. Default: plugin config. asOfDate · string · ISO 8601 date (YYYY-MM-DD) cutoff: only data on or before it is used. Empty = no cutoff; future dates fail loudly.
概览 overview · 业绩拆解 performance decomposition · 持仓穿透 holdings penetration · 风格归因 style attribution (simplified) · 经理画像 manager profile · 同类/指数基准对比 benchmark & peer comparison · 风险与缺口声明 risk & gaps · 免责声明 disclaimer · 附录:数字回溯表 traceability appendix.
fund.eastmoney.com/pingzhongdata/*.js, fundf10.eastmoney.com F10 pages, push2.eastmoney.com quotes) with a browser User-Agent and configurable polite pacing. No key, no login, no paid API, no anti-crawler circumvention.dsh_fund_research storage domain (latest snapshot per fund).src/events.ts: they append only when the host admits an out-of-repo type — its known-type set covers the vocabulary, or its Session.append takes an ignorable envelope. From 0.1.2-alpha.1 on (including 0.1.5-alpha.1) neither holds: KNOWN_SESSION_EVENT_TYPES is a build-generated in-repo catalog that excludes out-of-repo events by construction, and Session.append has no ignorable option, so the gate appends nothing — the tool results and sealed artifacts remain the reconstructable audit trail, and a failed append never changes a tool outcome.Session.append still cannot stamp an ignorable envelope, so audit-gate behavior is unchanged.promptSection: true) and, when enabled, is deployment-wide: it applies to every session in the profile that sees the fund tools, including sessions that never call them.dsh-data-quality service degrades to the built-in checker, and the engine used is recorded in the manifest and the appendix.var Data_* shape or an F10 table layout, the affected source throws a SourceParseError naming the field, and the section degrades to a declared gap (the core pingzhongdata block failing aborts the run loudly). This is deliberate — a silent misparse is worse than a declared gap.fundgz.1234567.com.cn realtime endpoint is dead and deliberately unused).pnpm install
pnpm run typecheck && pnpm run typecheck:ci && pnpm run typecheck:checkout # types, incl. CI-strict
pnpm test # 176 tests over real harness seams
pnpm run test:e2e # opt-in LIVE-network E2E (LIVE_E2E=1)
pnpm run build && pnpm run verify:artifacts # tsdown + tsc declarations
pnpm run verify:self-contained # no out-of-repo dependency specs
node scripts/check-readme-sync.mjs # five-language README gate
node scripts/check-endpoints.mjs # M3 endpoint-liveness probe (4 eastmoney hosts)
pnpm pack # tarballTests run the REAL Context/SessionStore/ToolRuntime/LocalJobRegistry/storage seam from the 0.1.7-rc.2 peers; the network is replaced only at the fetch boundary by saved real-response fixtures (fixtures/, fund 161725). Refresh fixtures with the collector scripts in .tmp/.
dsh · dsh-plugin · deepseek-harness · cordis · fund-research · mutual-fund · investment-research · finance · research-report
No external contributors yet — 0 community PRs/issues merged. Open an issue via the forms in .github/ISSUE_TEMPLATE/ or a pull request against main to be listed here.
This project is part of the DeepSeek Harness plugin family from PerryLink. The roster stays collapsed below so every README keeps a short first screen; expand it to see every row and its status.
Expand all plugins
Plugin · Status dsh-aqua-input-check · dsh-archive-check · dsh-auto-review · dsh-autotier · dsh-bid-ca-precheck · dsh-bid-qual-check · dsh-cert-mcp · dsh-checkpoint-rewind · dsh-click · dsh-composer-history · dsh-contract-stance · dsh-customs-doc-check · dsh-data-quality · dsh-demurrage-ledger · dsh-doublecheck · dsh-drill-script-check · dsh-eia-guide-check · dsh-emergency-plan · dsh-essay-rubric-check · dsh-evidence-check · dsh-export-ctl-check · dsh-fast · dsh-fmea-table-check · dsh-forecast-penalty · dsh-fund-research · dsh-github · dsh-gongwen-flow-check · dsh-gongwen-word-check · dsh-guard-plan-qc · dsh-hazchem-check · dsh-hazplan-check · dsh-hidden-risk-map · dsh-hs-classify · dsh-icd-rule-check · dsh-industry-research · dsh-lawcite-adapter · dsh-laya · dsh-lc-doc-check · dsh-learning-gap-check · dsh-library · dsh-local-ai · dsh-lsp-actions · dsh-mask · dsh-mcp-panel · dsh-medrec-qc · dsh-memento · dsh-nsfc-form-check · dsh-nurse-record-check · dsh-observe · dsh-origin-rvc-check · dsh-ota-review-check · dsh-output-styles · dsh-paper-doc-adapter · |