DeepSeek Harness 插件:为中国公募基金生成确定性研究报告
52.8/100
综合分
66
GitHub 星标
1,352
npm 周下载
—/5
用户评分
数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-fund-researchnpm 源 · dsh-fund-research 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-fund-research @ 0.5.1
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 02:38:48
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 66 处,展示前 54 条)
- 读取本地文件lib/index.js:1512
entries = await readdir(fundDir); - 读取本地文件lib/index.js:1517
const text = await readFile(path.join(fundDir, entry, "snapshot.json"), "utf8"); - 写入本地文件lib/index.js:1996
await mkdir(versionDir, { recursive: true }); - 写入本地文件lib/index.js:1999
await writeFile(target, json, "utf8"); - 写入本地文件lib/index.js:2018
await writeFile(reportPathAbs, markdown, "utf8"); - 写入本地文件lib/index.js:2036
await writeFile(manifestPathAbs, manifestJson, "utf8"); - 读取本地文件lib/index.js:2105
root = JSON.parse(await readFile(resolveDataset(request.dataset), "utf8")); - 读取本地文件lib/index.js:2330
const text = await readFile(runStatePath(reportRootAbs), "utf8"); - 写入本地文件lib/index.js:2381
await mkdir(reportRootAbs, { recursive: true }); - 写入本地文件lib/index.js:2382
await writeFile(runStatePath(reportRootAbs), JSON.stringify(map, null, 2), "utf8"); - 读取本地文件lib/index.js:2457
const text = await readFile(trackingPath(reportRootAbs), "utf8"); - 读取本地文件lib/index.js:2523
const snapshotText = await readFile(path.join(versionDir, "snapshot.json"), "utf8"); - 读取本地文件lib/types/sources/snapshot.js:76
entries = await readdir(fundDir); - 读取本地文件lib/types/sources/snapshot.js:83
const text = await readFile(path.join(fundDir, entry, 'snapshot.json'), 'utf8'); - 读取本地文件lib/types/run-state.js:48
const text = await readFile(runStatePath(reportRootAbs), 'utf8'); - 写入本地文件lib/types/run-state.js:95
await mkdir(reportRootAbs, { recursive: true }); - 写入本地文件lib/types/run-state.js:96
await writeFile(runStatePath(reportRootAbs), JSON.stringify(map, null, 2), 'utf8'); - 写入本地文件lib/types/tracking.js:56
await mkdir(reportRootAbs, { recursive: true }); - 写入本地文件lib/types/tracking.js:57
await appendFile(trackingPath(reportRootAbs), `${JSON.stringify(record)}\n`, 'utf8'); - 读取本地文件lib/types/tracking.js:66
const text = await readFile(trackingPath(reportRootAbs), 'utf8'); - 读取本地文件lib/types/review.js:25
const snapshotText = await readFile(path.join(versionDir, 'snapshot.json'), 'utf8'); - 读取本地文件lib/types/review.js:27
const manifest = JSON.parse(await readFile(path.join(versionDir, 'manifest.json'), 'utf8')); - 读取本地文件lib/types/review.js:28
const reportText = await readFile(path.join(versionDir, 'report.md'), 'utf8'); - 写入本地文件lib/types/review.js:60
await writeFile(path.join(versionDir, 'review-note.md'), markdown, 'utf8'); - 写入本地文件lib/types/report.js:327
await mkdir(versionDir, { recursive: true }); - 写入本地文件lib/types/report.js:330
await writeFile(target, json, 'utf8'); - 写入本地文件lib/types/report.js:346
await writeFile(reportPathAbs, markdown, 'utf8'); - 写入本地文件lib/types/report.js:364
await writeFile(manifestPathAbs, manifestJson, 'utf8'); - 读取本地文件lib/types/verify-bridge.js:64
root = JSON.parse(await readFile(resolveDataset(request.dataset), 'utf8')); - 读取本地文件lib/types/tools/shared.js:61
return await readFile(file, 'utf8'); - 写入本地文件lib/types/tools/shared.js:69
await writeFile(path.join(versionDir, 'sources-discovery.json'), JSON.stringify(discovery, null, 2), 'utf8'); - 写入本地文件lib/types/tools/shared.js:413
await mkdir(versionDir, { recursive: true }); - 写入本地文件lib/types/tools/shared.js:416
await writeFile(snapshotAbs, snapshotJson, 'utf8'); - 写入本地文件lib/types/tools/shared.js:418
await writeFile(discoveryAbs, JSON.stringify(discovery, null, 2), 'utf8'); - 写入本地文件lib/types/tools/shared.js:420
await writeFile(cardAbs, `${renderSnapshotCard(snapshot)}\n`, 'utf8'); - 读取本地文件lib/types/index.js:62
return existsSync(join(candidate, 'fund-research', 'SKILL.md')) ? candidate : undefined; - 读取本地文件src/index.ts:106
return existsSync(join(candidate, 'fund-research', 'SKILL.md')) ? candidate : undefined - 写入本地文件src/report.ts:456
await mkdir(versionDir, { recursive: true }) - 写入本地文件src/report.ts:459
await writeFile(target, json, 'utf8') - 写入本地文件src/report.ts:481
await writeFile(reportPathAbs, markdown, 'utf8') - 写入本地文件src/report.ts:500
await writeFile(manifestPathAbs, manifestJson, 'utf8') - 读取本地文件src/review.ts:42
const snapshotText = await readFile(path.join(versionDir, 'snapshot.json'), 'utf8') - 读取本地文件src/review.ts:44
const manifest = JSON.parse(await readFile(path.join(versionDir, 'manifest.json'), 'utf8')) as ReportManifest - 读取本地文件src/review.ts:45
const reportText = await readFile(path.join(versionDir, 'report.md'), 'utf8') - 写入本地文件src/review.ts:74
await writeFile(path.join(versionDir, 'review-note.md'), markdown, 'utf8') - 读取本地文件src/run-state.ts:105
const text = await readFile(runStatePath(reportRootAbs), 'utf8') - 写入本地文件src/run-state.ts:156
await mkdir(reportRootAbs, { recursive: true }) - 写入本地文件src/run-state.ts:157
await writeFile(runStatePath(reportRootAbs), JSON.stringify(map, null, 2), 'utf8') - 读取本地文件src/sources/snapshot.ts:93
entries = await readdir(fundDir) - 读取本地文件src/sources/snapshot.ts:99
const text = await readFile(path.join(fundDir, entry, 'snapshot.json'), 'utf8') - 写入本地文件src/tracking.ts:92
await mkdir(reportRootAbs, { recursive: true }) - 写入本地文件src/tracking.ts:93
await appendFile(trackingPath(reportRootAbs), `${JSON.stringify(record)}\n`, 'utf8') - 读取本地文件src/tracking.ts:102
const text = await readFile(trackingPath(reportRootAbs), 'utf8') - 读取本地文件src/verify-bridge.ts:106
root = JSON.parse(await readFile(resolveDataset(request.dataset), 'utf8'))
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-attachment@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-jobs@deepseek-ai/dsh-jobs-local@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-skill@deepseek-ai/dsh-skill-filesystem@deepseek-ai/dsh-storage给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
2 张 · 点击查看大图功能亮点
- 生成公募基金研究报告
最近更新
在 GitHub 查看全部 →v0.5.12026-10-24
· [0.5.1] - 2026-10-24
· 修复
· 把 zod 锁定在 4.4.3,在宿主包对齐前忽略 dependabot 的版本升级。npm-minor-patch 分组把 zod@4.6.7 和宿主的 4.4.3 一起拉了进来,重复的 ZodType 标识会让 tsc 报错。精确锁定后只保留一份 zod 标识。
v0.5.02026-10-23
· [0.5.0] - 2026-10-23
· 变更
· 基金研究系统提示词段落现在改为按需开启,并按工具限定范围(issue #17)。此前该段落从插件的配置档根上下文全局注册,导致配置档里每个会话都套上「基金研究助手」人设,连无关工作也受影响。promptSection 现在默认 false,设为 true 可恢复该段落。开启后它按 1900 顺序注册(工具指引档位),渲染时返回文本,除非组装范围内能看到 fund_snapshot / fund_research,否则返回空;文案也不再声称助手身份。设为 true 仍对整个部署生效,只要范围能看到这些工具,包括从不调用它们的会话;要按会话隔离,请把这一行挂到预设里。五份 README 都记录了该键和按需开启的语义。
v0.4.252026-10-18
· [0.4.25] - 2026-10-18
· 变更
· 把 tsdown/typescript(以及存在时的 @types/react)从运行时依赖移到 devDependencies。Git 安装仍会构建:pnpm 会为 git 依赖安装 devDependencies 并运行 prepare;npm 的 tarball 会带上构建好的 lib/。运行时依赖树不再携带构建链。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成📊 dsh-fund-research
- 1024 store channel:先执行一次 npm i -g dsh1024,再执行 dsh1024 plugin --profile web add dsh-fund-research(计入 deepseek1024.com 安装排行)。
dshfind
在 DeepSeek Harness 上,为中国公募基金生成确定性研究报告。
每份报告里的每个关键数字都能追溯到一份带哈希的源快照 —— 缺口如实声明,绝不编造。仅供研究,不构成投资建议。
dsh-doctor
DSH Market
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <name> add dsh-fund-research
📖 生态知识库 —— 实测数据,不是营销话术:插件开发指南 · 插件选型数据 · 维护标准。
安装与卸载
dsh plugin --profile web add dsh-fund-research # install (npm or tarball)
dsh plugin --profile web remove dsh-fund-research # uninstall
安装后重启配置档(bundle 激活依赖重启)。
展开完整文档(README 剩余 1 节)
📊 dsh-fund-research
- 1024 store channel:先执行一次 npm i -g dsh1024,再执行 dsh1024 plugin --profile web add dsh-fund-research(计入 deepseek1024.com 安装排行)。
dshfind
在 DeepSeek Harness 上,为中国公募基金生成确定性研究报告。
每份报告里的每个关键数字都能追溯到一份带哈希的源快照 —— 缺口如实声明,绝不编造。仅供研究,不构成投资建议。
dsh-doctor
DSH Market
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <name> add dsh-fund-research
📖 生态知识库 —— 实测数据,不是营销话术:插件开发指南 · 插件选型数据 · 维护标准。
安装与卸载
dsh plugin --profile web add dsh-fund-research # install (npm or tarball)
dsh plugin --profile web remove dsh-fund-research # uninstall
安装后重启配置档(bundle 激活依赖重启)。随附的配置档通过 dsh-base 组合存储栈(dsh-storage + dsh-storage-json + dsh-storage-domain);bundle 补丁只挂载插件那一行。
⭐ 如果它帮到了你
这个插件是 DSH 插件家族的一员(95 个,全部 Apache-2.0)。如果你在用,给个 star —— 它不会解锁任何功能,但会让下一个人在搜索里更容易找到它。
中文: 属于 DeepSeek Harness 的 95 个插件家族的一员。如果它对你有用,点个 star 能帮下一个人找到它——没有任何功能靠 star 解锁。
dsh-fund-research 是什么?
在 DeepSeek Harness 上,为中国公募基金生成确定性的研究报告。
每份报告里的每个关键数字都能追溯到一份带哈希的源快照——缺口如实声明,绝不编造。仅供研究,不构成投资建议。
dsh-fund-research 的工作流示意图:问题 → 封存源 → 报告。
工作流概览:问题 → 封存源 → 报告。下面的示例都用真实的命令接口。
兼容性
| 组件 | 版本 |
| DeepSeek Harness | dsh-v0.2.1-rc.2(peer 范围接受 alpha.2 线:>=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0)。在这条线上,Session.append 的第三个参数只对 surface-eligible 类型是 SurfaceIntent,所以 fund-research/ 审计事件保持不追加(工具结果和封存的快照/报告仍是审计线索)。2026-09-24 验证(双 typecheck 标尺 + 176 项测试)。 |
| Node.js | ^22.19.0 \|\| >=24.0.0 |
| 包管理器 | pnpm@11.7.0 |
| 平台 | Windows / macOS / Linux(仅宿主插件) |
| 数据源 | 天天基金 / 东方财富公开接口(无需密钥,无需登录) |
你能得到什么
- fund_research 工具——输入一个基金代码,输出一份带版本号的 Markdown 研究报告:概览、业绩拆解、持仓穿透、简化风格归因、经理配置档、风险与缺口声明、免责声明,以及一张数字可追溯性附录,把每个关键数字映射到它的快照 JSON 路径和校验结论。封存到 fund-reports/{code}/{YYYYMMDD-HHmmss}/,包含 report.md + manifest.json + snapshot.json。background: true 会把它作为 fund-report 后台任务运行。
- fund_snapshot 工具——一张轻量快照卡(最新净值、已披露阶段收益、规模、经理、前三大持仓),封存到该基金的当日目录。
- 确定性指标,零模型算术——区间/年化收益、波动率、最大回撤、Sharpe;前 N 集中度、HHI、行业分布、季度环比持仓对比;规模-价值风格分档;经理任职时长与同类对比。全部是对封存快照的纯函数。
- 可追溯性是一等特性——封存之前,每个关键数字都会对照封存的 snapshot.json 校验:装了可选的 dsh-data-quality 服务就走它,否则走内置的同构兜底校验器(builtin-fallback)。附录表记录 值 ↔ 路径 ↔ 结论。
- 诚实的缺口——数据源失败或降级时,会在受影响的章节里明确声明数据缺口。插件绝不用编造的数字填补缺口。
- 离线模式 — offline: true(配置或工具参数)下,所有内容都从存储域快照层或磁盘上最新的版本快照提供,零对外请求。适合测试和复现。
- asOf 截止 — asOfDate(ISO YYYY-MM-DD)把 NAV 序列截断到该日期及之前的数据,并把截止日期写入快照和报告;非法日期或未来日期会直接报错。
- 检查点续跑 — <reportRoot>/.run-state.json 记录每个流水线阶段(snapshot/report)的时间戳和输入指纹;resume: true 从第一个未完成的阶段继续,复用已封存产物,指纹不匹配则拒绝。
- 数据源发现记录 — 每次采集都会封存一份代码生成的 sources-discovery.json(端点清单、主/备解析、各源覆盖与缺口、降级原因),并折叠进报告附录,作为「数据源与缺口声明」。
- 多基金扇出 — codes 接受基金代码数组;每只基金独立跑流水线,单只失败互相隔离(失败记为汇总缺口),结果是汇总卡片(code / asOf / 封存哈希 / 判定 / 失败原因)。
- 跟踪台账 — 每次成功封存都会向 <reportRoot>/.tracking.jsonl 追加一行确定性记录;includeComparison: true 渲染确定性的「与上次对比」小节(NAV 区间 / 规模 / 前十大持仓),没有历史记录时给出缺口声明。
- 只读复核 — 封存后,fund-review 任务复核封存产物(缺口声明完整性、可追溯表一致性、免责声明),写出 review-note.md;没有 jobs 服务时优雅跳过(记入 run-state)。
- 各源质量信号 — 每个源都带确定性质量元数据(requested/succeeded/fieldsPresent/parseWarnings/degraded),在附录中渲染,并透出到工具返回值,下游可据此降权(绝不硬过滤)低质量源。
- 滚动前推稳定性摘要 — includeWalkForward: true 增加「样本外稳定性摘要」小节:确定性的滚动窗口收益/Sharpe 符号持续性与均值/标准差,明确标注仅为统计描述,不是预测。
- 会话审计事件(依赖宿主) — fund-research/snapshot 和 fund-research/report 的 log-only 事件携带代码、版本目录、manifest 哈希和缺口列表(模型可见 ⟺ 已记录),前提是宿主接受仓库外事件类型;在 0.1.2-alpha.1–0.1.5-alpha.1 宿主上,已知类型目录由构建在仓库内生成,因此这道闸门不追加任何内容,工具结果加封存产物就是审计轨迹。
- 方法论技能 — 内置 fund-research 技能,教模型指标口径(定义)、缺口处理和合规措辞。计算始终留在代码里。
快速开始
dsh plugin --profile web add github:PerryLink/dsh-fund-research
用 fund_research 出一份 161725 的研究报告智能体调用 fund_research({ code: "161725" });一分钟后,工作区里出现:
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 放在报告根目录,记录流水线各阶段,供 resume: true 使用。report.md 附录里的每个数字都对照 snapshot.json 给出 verified / mismatch / not-found / unverifiable 判定——按文档口径从 raw. 重算其中任意一个,就能审计插件本身。
示例
下面是插件的真实入口;安装一次,然后调用其中一个。
详细示例
命令
~~~sh
fund_research({ code: "161725", sections: ["overview", "disclaimer"] })
输出
~~~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
摘自 README.md:99-113,149-161; test/tools.spec.ts:150-171; src/tools/research.ts:121-130
失败分支
输入
~~~text
{"code":"161725","asOfDate":"2024-02-30"}
输出
~~~text
isError=true; error.message=asOfDate must be a real calendar date, got "2024-02-30"
摘自 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_snapshot
配置
所有键都可选(默认值如下);值不合法时在加载阶段直接报错。
| 键 | 默认值 | 说明 |
| enabled | true | 总开关;设为 false 时什么都不挂载。 |
| promptSection | false | 在部署级系统提示词里注册简短的基金研究角色声明。默认关闭;设为 true 后对配置档内每个会话生效。 |
| eastmoneyBaseUrl | https://fund.eastmoney.com | 天天基金 pingzhongdata 主机。 |
| f10BaseUrl | https://fundf10.eastmoney.com | 天天基金 F10 主机(持仓页 + 经理页)。 |
| quoteBaseUrl | https://push2.eastmoney.com | 东方财富行情主机,用于逐只股票的估值快照。 |
| quoteFallbackBaseUrl | https://push2delay.eastmoney.com | 主行情主机失败时逐只股票尝试的备用行情主机(东方财富自家的延迟行情主机);设为 '' 关闭。 |
| requestIntervalMs | 1000 | 两次对外请求之间的最小间隔(礼貌采集)。 |
| timeoutMs | 15000 | 单次请求超时。 |
| retries | 2 | 单次请求的重试次数,采用指数退避。 |
| cacheTtlHours | 12 | 存储域快照复用窗口。 |
| riskFreeRate | 0.02 | 计算 Sharpe 比率用的年化无风险利率。 |
| offline | false | 不发送任何请求,只读快照层。 |
| reportRoot | fund-reports | 报告树根目录,相对工作区或绝对路径。 |
| styleQuotes | true | 抓取个股估值行情,用于风格归因。 |
工具与界面
fund_research
| 参数 | 类型 | 说明 |
| code | string | 六位基金代码,例如 "161725"(单只基金)。与 codes 互斥。 |
| codes | string[] | 多个六位基金代码:并发拉取,单只基金失败不影响其他基金(返回汇总结果)。与 code 互斥。 |
| sections | string[] | 要渲染的章节 id(overview/performance/holdings/style/manager/benchmark/risk/disclaimer)。默认:全部。 |
| offline | boolean | 只读快照层(不走网络)。默认:取插件配置。 |
| asOfDate | string | ISO 8601 日期(YYYY-MM-DD)截止点:只使用该日期及之前的数据(净值序列截断)。留空 = 不设截止;未来日期会直接报错。 |
| resume | boolean | 从第一个未完成的阶段继续执行已记录的 .run-state.json 运行(复用已封存的产物);指纹不匹配时拒绝。默认:false。 |
| includeComparison | boolean | 渲染确定性的「与上次对比」章节,对照上一条 .tracking.jsonl 记录;缺失的证据会声明为缺口。默认:false。 |
| includeWalkForward | boolean | 渲染确定性的「样本外稳定性摘要」(walk-forward)章节:滚动窗口收益/Sharpe 符号持续性与均值/标准差。仅作统计描述,不是预测。默认:false。 |
| background | boolean | 作为 fund-report 后台任务运行;返回 { kind: "background", jobId }。默认:false。 |
fund_snapshot
| 参数 | 类型 | 说明 |
| code(必填) | string | 六位基金代码。 |
| offline | boolean | 只读快照层。默认:取插件配置。 |
| asOfDate | string | ISO 8601 日期(YYYY-MM-DD)截止点:只使用该日期及之前的数据。留空 = 不设截止;未来日期会直接报错。 |
报告章节
概览 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 页面、push2.eastmoney.com 行情),使用浏览器 User-Agent 和可配置的礼貌限速。不需要密钥,不需要登录,不调用付费 API,不绕过反爬。
- 写入仅限会话工作区内配置的报告根目录,以及 dsh_fund_research 存储域(每只基金的最新快照)。
- 绝不执行远程 JavaScript(只扫描 pingzhongdata 块,不执行),绝不存储凭据,绝不交易。
- 会话事件是只写日志的审计记录,它们经过 src/events.ts 里一道自适应闸门:只有当宿主接受仓库外的事件类型时才会追加——宿主的已知类型集合覆盖了这套词汇,或者它的 Session.append 接受 ignorable 信封。从 0.1.2-alpha.1 起(包括 0.1.5-alpha.1),这两个条件都不成立:KNOWN_SESSION_EVENT_TYPES 是构建时生成的仓库内目录,按构造就排除仓库外事件,而 Session.append 没有 ignorable 选项,所以闸门什么都不追加——工具结果和封存产物仍是可重建的审计线索,追加失败也绝不会改变工具结果。
- 0.1.5-alpha.1(适配于 2026-09-09):在新基线上重新验证了闸门——目录仍排除仓库外事件,Session.append 仍无法盖上 ignorable 信封,所以审计闸门行为不变。
- 0.1.5-rc.1(适配于 2026-09-10):依赖锁定版本移到已发布的 0.1.5-rc.1 线;没有接缝变更影响本插件的行为。
- 0.1.5-rc.2(适配于 2026-09-11):依赖锁定版本移到已发布的 0.1.5-rc.2 线;没有接缝变更影响本插件的行为。
- 基金研究角色声明是可选开启的(promptSection: true),一旦启用就是部署级生效:配置档里每个能看到基金工具的会话都会应用它,包括从不调用这些工具的会话。
安全边界
- 基金代码在接触任何路径或 URL 之前,先校验为恰好六位数字;报告根目录解析在会话工作区内部。
- 源数据在获取时做哈希(SHA-256);封存清单让你能发现两次运行之间上游的静默改动。
- 校验从不阻塞封存:可选的 dsh-data-quality 服务坏掉时,降级到内置检查器,所用引擎记录在清单和附录里。
- 上报政策见 SECURITY.md。
已知限制
- 上游结构漂移。 解析器按设计就是严格的:如果天天基金改了某个 var Data_ 的形状或 F10 表格布局,受影响的源会抛出 SourceParseError 并指明字段,该节降级为已声明的缺口(核心 pingzhongdata 块失败则大声中止运行)。这是有意为之——静默误解析比已声明的缺口更糟。
- 风格归因是估算口径。 固定规模档(≥1000亿 / 300–1000亿 / <300亿)和 PE 档,加上持仓内五分位——不参考全市场分布。报告会标注这一点。
- 持仓是季度披露数据(披露滞后);F10 页面带最近两个季度。
- 单 code 调用是一只基金;codes 是对多只基金的扇出。 不做跨基金组合分析,不做 PDF 年报,不做实时行情(fundgz.1234567.com.cn 实时端点已失效,有意不用)。
Web UI 的「交付物」轮次行,依据的是变更类工具的调用卡片;本插件产出的文件通过工具调用卡片的随行位置(基金的报告目录)呈现,不按单个文件分行。
开发
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 # tarball
测试跑的是 0.1.7-rc.2 对等依赖里真实的 Context/SessionStore/ToolRuntime/LocalJobRegistry/存储接缝;只在 fetch 边界用保存下来的真实响应夹具(fixtures/,基金 161725)替换网络。用 .tmp/ 里的采集脚本刷新夹具。
主题
dsh · dsh-plugin · deepseek-harness · cordis · fund-research · mutual-fund · investment-research · finance · research-report
贡献者
- PerryLink — 维护者:采集/指标/报告封存流水线、端点存活探测、CI 与发布,以及五语文档。
- dsh-fund-research contributors — 基础构建(插件契约、配置 schema、工具、测试、打包)的集体作者。
暂无外部贡献者 —— 已合并 0 个社区 PR/issue。想出现在这里,请通过 .github/ISSUE_TEMPLATE/ 里的表单提 issue,或向 main 提 pull request。
PerryLink DSH 插件家族
本项目属于 PerryLink 的 DeepSeek Harness 插件家族。下面这份名单默认折叠,好让每份 README 的首屏都保持简短;展开即可看到每一行及其状态。
展开全部插件
| 插件 | 状态 |
| 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 | |
| dsh-permission-rules | |
| dsh-permit-report-check | |
| dsh-pipeline-check | |
| dsh-pleading-draft | |
| dsh-plugin-doctor | |
| dsh-plugin-guide | |
| dsh-plugin-kit | |
| dsh-plugin-upgrade | |
| dsh-policy-brief-draft | |
| dsh-power-loss-split | |
| dsh-power-ticket-check | |
| dsh-ppap-check | |
| dsh-protest-deadline | |
| dsh-railway-window | |
| dsh-repair-order-qc | |
| dsh-research-report | |
| dsh-review-reply-check | |
| dsh-rulefile-check | |
| dsh-safety-brief-check | |
| dsh-score | |
| dsh-session-sync | |
| dsh-site-log-check | |
| dsh-skill-pack-security | |
| dsh-soe-decision-check | |
| dsh-soilwater-check | |
| dsh-sop-sync-check | |
| dsh-spc-gbt-adapter | |
| dsh-talk | |
| dsh-tender-extract | |
| dsh-tender-matrix | |
| dsh-test-drive | |
| dsh-ticktick | |
| dsh-translate | |
| dsh-warranty-calc | |
| dsh-budget | 🧊 已冻结 — 见仓库 README |
| dsh-claude-move | 🧊 已冻结 — 见仓库 README |
| dsh-defend | 🧊 已冻结 — 见仓库 README |
| dsh-draw | 🧊 已冻结 — 见仓库 README |
| dsh-reach | 🧊 已冻结 — 见仓库 README |
| dsh-background-agents | 🚫 已退役 — 见仓库 README |
| dsh-session-pin | 🚫 已退役 — 见仓库 README |
| dsh-team-rooms | 🚫 已退役 — 见仓库 README |预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
PerryLink/dsh-fund-research
DeepSeek Harness 插件:为中国公募基金生成确定性研究报告
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,197已汉化DSH
71.7
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2