基础不变量
版本、身份、幂等、审计等必须贯穿每个模块,不能单独包装成交付物。
REQUIREMENT MODULES
这里只说明科研用户遇到什么问题、系统需要提供什么,以及怎样才算满足需求。技术方案、接口和工程拆分由工程团队决定。
F1–F6 · 问题 → 需求 → 完成标准先校正层级
“隔离后才能安全执行”“审批要绑定版本”“动作要有回执”都应自然成立。 我们把它们作为跨模块不变量;只有能形成明确服务边界和交付物的部分,才称为工程模块。
版本、身份、幂等、审计等必须贯穿每个模块,不能单独包装成交付物。
每个模块只定义需要解决的问题、第一阶段范围和完成标准。
PDF、HPC、样本、仪器和临床等专业语义通过 package 贡献,不写进平台核心。
跨模块不变量
正式产物、审批和外部写入都绑定具体版本,修改后不能冒充原版本。
系统知道是谁在操作,并且只给他完成当前任务所需的权限。
同一操作重复请求也只能生效一次,执行后留下可以核对的结果。
失败、撤回、修改和人工决定都保留历史,不能被后来的结果覆盖。
不同科研场景会补充
概念解释
同一个操作无论请求一次还是重复请求多次,最终只产生一次效果。 它解决的是:系统没收到成功回执时,如何安全重试而不重复做事。
Agent 提交一个 HPC 训练任务,并携带唯一幂等键。
key = experiment-42-submit-v3训练任务已经进入队列,只是网络断开,Agent 不知道是否成功。
服务端返回第一次的任务 ID,不会再创建第二个训练任务。
result = existing job-781幂等不等于“出错就直接再点一次”。如果外部系统不支持幂等键,或者无法确认第一次是否生效,必须先查询和核对外部状态; 状态仍不确定时,应交给人处理,不能盲目重复执行。
六个需求模块
每个模块采用同一种表达方式,避免把技术名词、实现方案和用户需求混在一起。
保留重要历史版本,让研究人员能查看变化、恢复旧版本,并确认结论、运行和审批使用的是哪一版内容。
科研数据、代码和报告会被多次修改。旧内容容易被覆盖,结论引用的版本也容易说不清;如果每次小改都完整复制文件,还会产生大量重复存储。
多个线程可以同时操作不同界面,每个线程的鼠标、键盘和画面互不干扰。
多个 Agent 线程同时使用电脑时,一个线程的点击、输入或焦点切换可能进入另一个线程,造成误操作、数据泄漏或错误提交。
训练、分析和监测任务可以跨数小时或数天持续运行,不依赖用户一直打开客户端。
科研任务经常运行很久。电脑休眠、网络中断、客户端退出或服务重启后,任务状态容易丢失,也可能被重复提交。
多人可以围绕同一份科研对象共同编辑、审阅、决定和交班,并清楚知道谁做了什么。
科研协作涉及作者、数据人员、方法专家和负责人。仅共享一个文件,无法说明修改来源、审阅意见、最终决定和当前责任人。
研究人员可以在手机、电脑和网页之间接力工作,看到同一个任务、版本和决定。
科研工作发生在办公室、实验室和野外。用户换设备或暂时断网后,容易丢失进度、重复操作或错过需要及时处理的事件。
Agent 可以连接真实科研系统,在执行外部写入前让用户看清变化,并在执行后留下可核对的结果。
科研任务需要连接 HPC、数据库、实验记录系统和仪器。错误写入、重复提交或使用错误账号可能带来真实损失。
这页的边界
后续可以把每个模块放进真实科研闭环验证,但不在需求定义中提前规定技术栈和内部实现。
查看真实科研闭环