dsh-science
面向 DSH 的 Claude Science 式科研工作台:ReAct 研究循环引擎(research_* 工具)、带溯源的版本化工件(artifact_* 工具)与面向基因组/病原体/生物信息的 10 个科研技能。
安装
dsh plugin --profile web add dsh-science
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-science




面向 DeepSeek Harness 的 Claude Science 式科研工作台 —— 面向基因组 / 病原体 / 人类健康 / 生物信息项目。
一句话介绍:dsh-science —— 面向 DSH 的 Claude Science 式科研工作台:ReAct 研究循环引擎(research_ 工具)、带溯源的版本化工件(artifact_ 工具)、SSH 远程计算引擎(remote_* 工具,对应 Claude Science 的 Computer / Remote compute clusters),以及面向基因组/病原体/生物信息的 11 个科研技能。
- ReAct 研究循环引擎 ——
research_init/research_state/research_hypothesis/research_experiment/research_findings/research_phase/research_review/research_report,状态持久化在research-manifest.json(提问 → 假设 → 实验 → 观察 → 分析 → 结论 → 下一问题)。 - 版本化工件与溯源 ——
artifact_save/artifact_list/artifact_show/artifact_diff/artifact_verify/artifact_deprecate/artifact_reproduce:结果存为artifacts/<name>/v<N>/,附每文件 SHA-256、artifact.json溯源(命令/输入/环境/envFile)与追加式provenance.md。 - 远程计算引擎(SSH / 集群) ——
remote_host_add/remote_host_probe/remote_host_notes/remote_run/remote_status/remote_logs/remote_pull/remote_cancel等 16 个工具:用~/.ssh/config别名连接实验室工作站或 HPC 集群(零安装、零第三方依赖),工作站以 detached 进程、SLURM 走 sbatch 运行长时生信任务,断连不杀;提交前默认要求审批,且首次使用某主机需项目级授权(审批后写入本项目白名单);remote_status批量监控并自动迁移状态(running→succeeded/failed/killed),结束后remote_pull拉回输出(超过阈值的大文件留在主机并记录路径)。 - 远程主机配置 UI(bundle/profile 级) —— 设置面板新增「远程主机」页(对应 Claude Science 的 Settings > Compute > SSH hosts):主机列表/添加/探测/编辑/移除,以及各项目访问白名单与作业摘要。宿主侧 REST API(
webServer路由/dsh-science/remote-hosts/*,engines/remote-hosts-ui.mjs)+ 客户端 bundle(client/remote-hosts-ui/,由scripts/build-client-bundle.mjs生成),与远程引擎共用同一套数据文件。需重启 web 进程生效(见 [docs/remote-hosts-ui.md](docs/remote-hosts-ui.md))。 - 模型分档路由(Model Tier) —— 由配套 bundle [
dsh-model-tier](packages/dsh-model-tier/) 提供:同一会话内自动把辅助请求(会话标题、压缩)与子任务分流到轻量档,主对话走默认档、复杂任务按规则升级到强档,各档位可指向不同 provider(如强档 GLM-5.3 / 主档 deepseek-v4-flash / 轻档 minimax-M3),对应 Claude Code 的 Opus/Sonnet/Haiku 分级策略;基于 DSH 原生agent/request+llm/streamwaterfall 扩展点,provider 未注册时自动 no-op。安装 dsh-science 自动携带,也可单独装到任意 profile(dsh plugin add dsh-model-tier)。 - 11 个科研技能 —— research-loop、science-project-setup、artifact-provenance、scientific-reviewer、literature-connector、parallel-delegation、manuscript-writing、bioinformatics-toolkit、conda-environments、data-inventory、remote-compute。
四个引擎插件零第三方依赖(只用 Node 内置模块 + 系统 OpenSSH,共享 engines/core.mjs),注册标准 cordis 工具;配套的 dsh-model-tier 路由同样是零依赖。
既可作 profile bundle 安装(dsh plugin add),也可作 agent preset(「科学模式」)安装。
v0.2.0 新增:模型分档路由(配套 bundle dsh-model-tier)
对应 Claude Code 的 Opus/Sonnet/Haiku 分级策略:同一会话内,辅助请求(`purpose ∈
{session-title, compaction})与子任务(session.meta.origin === 'subagent'`)自动分流到
轻量档;主对话保持各自会话的模型选择(不干预);深链子任务(`delegationDepth ≥
subagentDepthStrong)与超长输入(escalateOnChars`,可选)升级到强档。还可选开启
LLM 前置分类器(routing.classify):每次用户提问 / 子任务派发前按复杂度分类
(执行 / 主力 / 深思)再路由。各档位为 {provider, model, reasoningEffort?},可跨
provider 配置。
以独立 bundle [dsh-model-tier](packages/dsh-model-tier/) 发布 —— dsh-science
依赖它并在自己的 cordis.patch.yml 里挂载,它也可以脱离 dsh-science 单独安装到任意
profile(dsh plugin add dsh-model-tier):
- id: model-tier
name: dsh-model-tier
config:
tiers:
strong: { provider: zai-coding-cn, model: glm-5.3 }
default: { provider: deepseek-official, model: deepseek-v4-flash }
light: { provider: opencode-go, model: minimax-m2.7 }
routing:
auxiliary: [session-title, compaction]
subagents: light
subagentDepthStrong: 3
- HOST 平面:挂在 profile bundle(
cordis.patch.yml),非 agent preset;所有会话与子代理统一生效。 - 安全护栏:tiers 未配置 → 惰性 no-op;目标 provider 未注册 → 不路由;轻档失败自动回退原路由(辅助功能不挂)。
- 验证:
node packages/dsh-model-tier/test/model-tier.test.mjs(路由决策矩阵单测,零依赖)+bash packages/dsh-model-tier/scripts/test-model-tier.sh(E2E:轻档指向本地 mock LLM,断言标题请求真的被路由)。
v0.2.0 新增:远程计算(Remote Compute)
对应 Claude Science 的 Remote compute clusters / Computer 能力,工作机制对照其官方文档:
- 主机注册与只读探测:
remote_host_add用~/.ssh/config别名(或 user@host;ProxyJump 等由 OpenSSH 自动处理),可选覆盖 port/identityFile;注册即探测 CPU/内存/GPU/CUDA/conda/module/Apptainer/sbatch/scratch 目录/SLURM 分区(remote_host_probe重探测)。主机注册表在$DSH_HOME/remotes/hosts.json。 - 作业提交:
remote_run把脚本与输入上传到<scratch>/<jobId>/(默认~/dsh-scratch);工作站以nohup+setsiddetached 进程运行(断连不杀),SLURM 集群自动走sbatch(可--time超时);默认超时 30 分钟;提交前默认经审批(等价于 Claude Science 的 "Run this job on <host>?" 卡)。 - 监控与反应:
remote_status批量探测(ps / squeue+sacct / done+exitcode 标记)并自动迁移状态;remote_logs尾随日志;remote_pull拉回输出、写pulled-manifest.json(>100MB 大文件留在主机并记录路径);remote_cancel取消(进程组终止 / scancel)。作业注册表在<项目根>/.dsh/remotes/jobs.json,跨会话持续。 - 主机 Details 文档:
remote_host_notes维护每台主机的备注(环境激活方式、分区/账号、约定),模型提交作业前会参考。 - 项目级访问白名单(允许访问的服务器列表,按 project 隔离):任何会连接主机的操作(注册探测 / probe / exec / run)默认都要求主机已在本项目白名单(
.dsh/remotes/allowlist.json);首次使用弹审批,批准后按项目持久化(等价于 Claude Science 审批卡的 "This project" 作用域)。项目根按优先级探测 research-manifest.json(研究项目)→ .dsh(工作区)→ .git → 会话目录——同一工作区里的多个研究项目各自独立,授权不会跨项目泄漏(拿不到会话工作目录时授权路径 fail-closed)。remote_host_allowlist审查、remote_host_revoke撤销、remote_host_allow显式授权(需审批);requireHostAccess: false关闭(无人值守)。
v0.1.1 加固(鲁棒性更新)
- 并发安全:manifest / 工件所有写操作经轻量文件锁(O_EXCL + 陈旧回收)串行 + 原子写(tmp+rename)——并行子代理不再互相覆盖
research-manifest.json/artifacts.json。 - 结构化错误码:
ERR_NOT_INIT/ERR_NOT_FOUND/ERR_VALIDATION/ERR_PATH/ERR_QUOTA/ERR_LOCK_TIMEOUT/ERR_IO,不再吞成无类型字符串。 - 假设状态机(proposed → testing → supported/refuted/inconclusive)与阶段只前进(回退需配置 allowPhaseRewind)。
- manifest ↔ 工件打通:
research_state实时合并工件索引;artifact_save回写清单 artifacts[]。 - **清单
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:3,最后更新 2026-08-18