🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

科研实验室工具包 snow-The/dsh-research-lab

DeepSeek Harness
snow-The8 天前有提交已提供中文文档扫描:含敏感能力

用 wiki 管理实验假设,评估台账与论文评审一站搞定

29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add snow-The/dsh-research-lab
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · tool
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 8 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@snow-the/dsh-research-lab(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/21 23:54:59

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 126 处,展示前 60 条)
  • 读取本地文件
    dist/index.js:18
    last = Number(readFileSync(THROTTLE_FILE, "utf8")) || 0;
  • 写入本地文件
    dist/index.js:27
    mkdirSync(dirname(THROTTLE_FILE), { recursive: true });
  • 写入本地文件
    dist/index.js:28
    writeFileSync(THROTTLE_FILE, String(Date.now()));
  • 发起网络请求
    dist/index.js:41
    return fetch(url, { headers, signal: AbortSignal.timeout(15e3) });
  • 写入本地文件
    dist/index.js:127
    fs.mkdirSync(p, { recursive: true });
  • 写入本地文件
    dist/index.js:171
    fs.writeFileSync(p, body, "utf8");
  • 写入本地文件
    dist/index.js:174
    fs.appendFileSync(log, "- " + stamp + " " + page.kind + ":" + page.id + " " + page.title.replace(/[ ]+/g, " ") + "\n", "utf8");
  • 读取本地文件
    dist/index.js:183
    if (!fs.existsSync(dir)) continue;
  • 读取本地文件
    dist/index.js:184
    for (const f of fs.readdirSync(dir)) {
  • 读取本地文件
    dist/index.js:187
    const text = fs.readFileSync(full, "utf8");
  • 写入本地文件
    dist/index.js:217
    fs.writeFileSync(idx, lines.join("\n") + "\n", "utf8");
  • 读取本地文件
    dist/index.js:231
    if (!fs.existsSync(file)) return [];
  • 读取本地文件
    dist/index.js:233
    for (const line of fs.readFileSync(file, "utf8").split("\n")) {
  • 发起网络请求
    dist/index.js:1221
    const res = await fetch(url, { headers: { "User-Agent": "dsh-research-lab/0.1" }, signal: AbortSignal.timeout(8e3) });
  • 发起网络请求
    dist/index.js:1234
    const res = await fetch(url, { headers: { "User-Agent": "dsh-research-lab/0.1" }, signal: AbortSignal.timeout(8e3) });
  • 执行外部命令固定命令
    dist/index.js:1254
    execSync("git clone --depth 1 https://github.com/" + repo + '.git "' + dir + '"', { stdio: "pipe", timeout: 12e4 });
  • 发起网络请求
    dist/index.js:1364
    response = await fetch(`${env.baseUrl}/${SERVICE}/${method}`, {
  • 读取密钥环境变量
    dist/index.js:1511
    const fromEnv = process.env.PADDLE_OCR_TOKEN;
  • 发起网络请求
    dist/index.js:1558
    const resp = await fetch(JOB_URL, { method: "POST", headers: { Authorization: "bearer " + token }, body: fd });
  • 发起网络请求
    dist/index.js:1565
    const r = await fetch(file, { headers: { "User-Agent": "Mozilla/5.0 dsh-research-lab" } });
  • 删除本地文件
    dist/index.js:1602
    fs5.unlinkSync(tmp);
  • 删除本地文件
    fuzz.mjs:6
    fs.rmSync(PROJ, { recursive: true, force: true });
  • 写入本地文件
    test-absorb.mjs:34
    mkdirSync(join(project, 'batch', 'out'), { recursive: true });
  • 写入本地文件
    test-absorb.mjs:36
    writeFileSync(join(project, 'batch', 'out', 'r0' + i + '.md'), '# report ' + i + '\n\n' + 'x'.repeat(1500) + '\n');
  • 写入本地文件
    test-absorb.mjs:60
    writeFileSync(join(project, 'batch', 'out', 'r03.md'), '# report 3 EDITED\n\n' + 'y'.repeat(1600) + '\n');
  • 删除本地文件递归
    test-absorb.mjs:67
    try { rmSync(project, { recursive: true, force: true }); } catch { }
  • 写入本地文件
    test-absorb.mjs:76
    mkdirSync(join(slow, 'batch', 'out'), { recursive: true });
  • 写入本地文件
    test-absorb.mjs:78
    writeFileSync(join(slow, 'batch', 'out', 's' + String(i).padStart(2, '0') + '.md'), '# speed ' + i + '\n\n' + ('token' + i + ' ').repeat(200));
  • 写入本地文件
    test-absorb.mjs:81
    writeFileSync(join(slow, 'batch', 'out', 'seed' + String(i).padStart(2, '0') + '.md'), '# seed ' + i + '\n\n' + ('corpus ' + i + ' ').repeat(120));
  • 删除本地文件递归
    test-absorb.mjs:89
    try { rmSync(slow, { recursive: true, force: true }); } catch { }
  • 写入本地文件
    test-all.mjs:178
    fs.mkdirSync(dir, { recursive: true });
  • 读取本地文件
    test-all.mjs:370
    if (!fs.existsSync(root)) return empty;
  • 读取本地文件
    test-all.mjs:373
    isDirectory = fs.statSync(root).isDirectory();
  • 读取本地文件
    test-all.mjs:383
    entries = fs.readdirSync(d, { withFileTypes: true });
  • 读取本地文件
    test-all.mjs:397
    st = fs.statSync(full);
  • 读取本地文件
    test-all.mjs:413
    const text = fs.readFileSync(f.full, "utf8").slice(0, 2e4).toWellFormed();
  • 读取本地文件
    test-all.mjs:617
    const lines = fs2.readFileSync(claimsFile(project), "utf8").split("\n").filter(Boolean);
  • 写入本地文件
    test-all.mjs:629
    fs2.mkdirSync(path2.dirname(claimsFile(project)), { recursive: true });
  • 写入本地文件
    test-all.mjs:632
    fs2.appendFileSync(claimsFile(project), JSON.stringify(claim) + "\n", "utf8");
  • 写入本地文件
    test-all.mjs:643
    fs2.writeFileSync(claimsFile(project), claims.map((x) => JSON.stringify(x)).join("\n") + "\n", "utf8");
  • 发起网络请求
    test-all.mjs:666
    const res = await fetch(url, { headers: { "User-Agent": "dsh-research-lab/0.1" }, signal: AbortSignal.timeout(8e3) });
  • 发起网络请求
    test-all.mjs:679
    const res = await fetch(url, { headers: { "User-Agent": "dsh-research-lab/0.1" }, signal: AbortSignal.timeout(8e3) });
  • 写入本地文件
    test-all.mjs:710
    mkdirSync3(dirname3(THROTTLE_FILE), { recursive: true });
  • 写入本地文件
    test-all.mjs:711
    writeFileSync2(THROTTLE_FILE, String(Date.now()));
  • 发起网络请求
    test-all.mjs:724
    return fetch(url, { headers, signal: AbortSignal.timeout(15e3) });
  • 执行外部命令固定命令
    test-all.mjs:972
    execSync("git clone --depth 1 https://github.com/" + repo + '.git "' + dir + '"', { stdio: "pipe", timeout: 12e4 });
  • 发起网络请求
    test-all.mjs:1179
    response = await fetch(`${env.baseUrl}/${SERVICE}/${method}`, {
  • 写入本地文件
    test-fuzz-ingest.mjs:19
    mkdirSync(proj, { recursive: true });
  • 写入本地文件
    test-fuzz-ingest.mjs:40
    const docs = join(root, 'docs'); mkdirSync(docs, { recursive: true });
  • 写入本地文件
    test-fuzz-ingest.mjs:41
    writeFileSync(join(docs, 'a.md'), '# A\n\nabout distillation');
  • 写入本地文件
    test-fuzz-ingest.mjs:42
    writeFileSync(join(docs, 'empty.md'), '');
  • 写入本地文件
    test-fuzz-ingest.mjs:43
    writeFileSync(join(docs, 'binary.bin'), Buffer.from(Array.from({ length: 4096 }, (_, i) => (i * 11) % 256)));
  • 写入本地文件
    test-fuzz-ingest.mjs:44
    writeFileSync(join(docs, 'big.md'), 'y'.repeat(4 * 1024 * 1024));
  • 删除本地文件递归
    test-fuzz-ingest.mjs:76
    try { rmSync(root, { recursive: true, force: true }); } catch { }
  • 写入本地文件
    test-ingest.mjs:33
    mkdirSync(docs, { recursive: true });
  • 写入本地文件
    test-ingest.mjs:35
    writeFileSync(join(docs, 'd' + String(i).padStart(2, '0') + '.md'), '# doc ' + i + '\n\n' + ('term' + i + ' ').repeat(60));
  • 写入本地文件
    test-ingest.mjs:65
    writeFileSync(join(docs, 'd07.md'), '# doc 7 EDITED\n\n' + 'changed '.repeat(80));
  • 删除本地文件递归
    test-ingest.mjs:72
    try { rmSync(project, { recursive: true, force: true }); } catch { }
  • 删除本地文件
    test-suite.mjs:9
    fs.rmSync(PROJ, { recursive: true, force: true });
  • 删除本地文件
    trial-gal2vec.mjs:6
    fs.rmSync(PROJ + '/.rlab', { recursive: true, force: true });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • wiki管理实验假设
  • 评测台账记录
  • arXiv摘要与综述

DeepSeek Harness 科研实验室工具包:AutoSci wiki、ASI-Bench 评测账本、自建 FTS5 检索、arXiv 摘要/综述、写作改写

README

由 DeepSeek 最新模型翻译生成
dsh-research-lab 面向 DeepSeek Harness 的研究实验室工具包:一套以 wiki 为中心、以评测严谨性为驱动的研究工作流。它提炼自 AutoSci(把 wiki 当作研究项目的中心)、ASI-Bench(评测严谨性)、daily-arXiv-ai-enhanced(摘要)、ChatPaper(论文评审)、nature-skills / research-writing-skill(学术写作)、Supervisor-Skills(资深评审直觉),以及真实蒸馏实验里踩过的坑(假设 → 结论的循环、eval 口径纪律)。 工具 | 工具 | 用途 | 灵感来源 | | rlab_wiki | 在 <project>/.rlab/wiki/ 下写 wiki 页面(experiment/literature/decision/todo),并重建索引 | AutoSci | | rlab_experiment | 假设 → 预测 → 证据 → 结论 → 总结页面 | AutoSci + 可证伪性纪律 | | rlab_bench | 按项目记录评测台账(bench.jsonl);标出口径不一致,比如混用 test/dev 划分 | ASI-Bench |
展开完整文档(README 剩余 1 节)
dsh-research-lab

面向 DeepSeek Harness 的研究实验室工具包:一套以 wiki 为中心、以评测严谨性为驱动的研究工作流。它提炼自 AutoSci(把 wiki 当作研究项目的中心)、ASI-Bench(评测严谨性)、daily-arXiv-ai-enhanced(摘要)、ChatPaper(论文评审)、nature-skills / research-writing-skill(学术写作)、Supervisor-Skills(资深评审直觉),以及真实蒸馏实验里踩过的坑(假设 → 结论的循环、eval 口径纪律)。

工具

| 工具 | 用途 | 灵感来源 |
| rlab_wiki | 在 <project>/.rlab/wiki/ 下写 wiki 页面(experiment/literature/decision/todo),并重建索引 | AutoSci |
| rlab_experiment | 假设 → 预测 → 证据 → 结论 → 总结页面 | AutoSci + 可证伪性纪律 |
| rlab_bench | 按项目记录评测台账(bench.jsonl);标出口径不一致,比如混用 test/dev 划分 | ASI-Bench |
| rlab_paper_review | 输入 arXiv id,输出对抗式 8 点评审清单(也适用于你自己的论文) | ChatPaper + ASI-Bench |
| rlab_arxiv_digest | 按关键词汇总近期 arXiv 论文 → <project>/.rlab/digests/<date>.md | daily-arXiv-ai-enhanced |
| rlab_writing | 按行定位的学术表达检查(被动语态、弱动词、模糊量词、废话、术语一致性) | nature-skills、research-writing-skill |
| rlab_related | 自建关键词检索:NLP 分词 + SQLite FTS5,不预设词表——词项从你的文档里用 TF-IDF 挖出来(英文词 + 中文 n-gram),再迭代扩展(检索 → 挖掘 → 合并 → 重复) | hamuleite 风格语料、Rocchio 相关反馈 |
| rlab_status | 一屏看清项目状态:wiki 计数、bench 报告、未完成 TODO | — |

磁盘布局

<project>/.rlab/
wiki/
index.md # auto-rebuilt
experiment/<id>.md # hypothesis → verdict
literature/<id>.md # paper notes (link from digests)
decision/<id>.md # ADRs: why you chose X
todo/<id>.md # open items
related.db # FTS5 corpus + auto-built lexicon (rlab_related)
bench.jsonl # one eval row per line (JSON)
digests/<date>.md # arXiv digests

Eval 口径纪律(rlab_bench)

每一行都必须写明 metric、split,MTEB 任务还要写 hf_subset。只要某个任务的历史记录混用了不同 split,报告就会告警——拿 test 分数和 dev 分数对比,正是论文骗自己(也骗审稿人)的经典方式。

安装

from ~/.dsh/profiles/web
pnpm add @snow-the/dsh-research-lab@file:../.dsh-starter/plugins/dsh-research-lab
add "dsh-research-lab" to dsh.profile.bundles, then restart dsh web

构建

pnpm install && pnpm build # tsc declarations + esbuild bundle → dist/
预览分享卡片长什么样 ↓snow-The/dsh-research-lab
分享 · DeepSeek Harness Hub
snow-The/dsh-research-lab

用 wiki 管理实验假设,评估台账与论文评审一站搞定

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部