【S1W3 交叉评测】Scienith 科研端到端一体化AI工作台 — 评测意见 #7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
交叉评测意见
评测项目: JunjieCai/scienith-research-booster — 科研端到端一体化AI工作台
评测日期: 2026-05-19
1. 项目理解
Scienith(又名 ResearchFlow AI)是一个面向研究生和青年科研人员的「端到端科研一体化 AI 工作台」。项目试图覆盖从研究方向输入、文献检索与解析、信息汇总、课题生成、研究方案设计、数据分析、结果解读、论文写作到期刊选择的完整科研链路。核心理念是:现有工具(Elicit、SciSpace、Zotero、Paperpal 等)各自解决单一环节,用户需要在多个工具间复制粘贴,而 Scienith 希望通过统一项目上下文串联全流程,降低科研训练门槛。
当前交付的是一个 React + TypeScript + Ant Design 纯前端 prototype,使用硬编码 mock 数据(以肿瘤免疫治疗响应率预测为场景)展示 11 个阶段的交互流程。项目附带 10 个 Skill 规范(
skills/*/SKILL.md),以及技术架构、竞品分析、上下文流转和用户验证的设计文档。2. 项目亮点
Skill 体系设计扎实,可靠性护栏意识突出。10 个 Skill 文件中,每一个都定义了明确的输入、输出格式和可靠性要求。例如
literature-query/SKILL.md明确要求"不能凭记忆编造题名、作者、DOI 或期刊"(第 48 行),paper-reading/SKILL.md规定"只基于用户提供材料或可访问原文进行总结"(第 49 行)。这在 AI+科研类项目中是极为关键的差异化设计——多数竞品(如 ChatGPT 通用问答)不区分依据与推测,而此项目从 Skill 级别就强制区分。上下文流转设计清晰且可操作。
docs/context-flow.md明确定义了 10 个 Skill 的输入输出依赖关系和ResearchProjectContext数据结构(第 25-44 行),画出了完整的 DAG 链路(第 10-19 行),并标注了 6 个人工确认节点(第 72-79 行)。这不是泛泛的流程描述,而是可以直接转化为后端 API 契约的设计。spec.md第 204-213 行也定义了完整的端到端使用流程,与 Skill 链路一一对应。竞品分析有实质性差异化定位。
docs/competitor-analysis.md不是陈列功能列表,而是明确将差异化假设拆为三点:端到端上下文串联(第 20-23 行)、面向科研训练(第 24-27 行)、可靠性护栏前置(第 28-31 行)。特别值得注意的是第 36-43 行列出了 5 个"仍需验证的问题",包括"端到端串联是否真的比多个单点工具组合更高效",体现了设计者对自己核心假设的清醒认识——这在早期项目中较为少见。Mock 数据选材专业且场景自洽。
src/App.tsx中的 mock 数据围绕"肿瘤免疫治疗响应率预测"构建:8 篇文献覆盖综述、研究论文、方法论文、机制研究、真实世界研究、多组学研究和 AI 方法(第 114-227 行),5 个候选课题有创新性/可行性评分和验证路径(第 229-280 行),信息汇总表按主题分类并标注置信度(第 282-328 行)。数据本身构成了一条符合学术逻辑的证据链,说明设计者对自己描述的领域有真正理解,而不是随便填几个假标题。用户验证计划具体可执行。
docs/user-validation-plan.md不是空泛的"找用户测一下",而是定义了 8 步测试任务(第 23-33 行)、定量指标(完成率、耗时、1-5 分评分)和定性反馈项(第 34-51 行),并设计了对照实验——用户用传统方式 vs 用 prototype 完成同一任务(第 55-66 行)。第一轮成功标准也设定了具体门槛(第 70-76 行),比如"至少 2 名用户愿意在真实任务中继续试用"。3. 当前不足
Prototype 与 Skill 体系之间存在断裂。10 个 Skill 文件定义了详细的输入输出契约(如
research-question-generation/SKILL.md第 24-27 行的输出格式),但src/App.tsx中的所有数据都是硬编码的一维数组,没有任何代码读取或执行 Skill 规范。用户点击"生成 mock 文献列表"不过是 switch 到一个预先填好的<Table>(第 676-681 行),点击课题卡片只是切换selectedQuestion状态(第 760 行)。Skill 文件本质上是一组未被引用的静态文档,与运行时代码零关联。App.tsx 单文件 1045 行,严重违反组件化原则。全部 UI 逻辑(状态管理、11 个阶段的渲染、数据定义、表格列配置、子组件定义)塞在
src/App.tsx一个文件里。PaperSummary(第 998-1012 行)、InsightBox(第 1014-1020 行)、Metric(第 1022-1034 行)、WritingBlock(第 1036-1043 行)虽然被抽出为函数组件,但全部定义在同一个文件中,没有模块导出。src/目录只有 3 个文件(App.tsx、main.tsx、App.css),对于一个声称要支撑 10 个 Skill 的产品,这种结构意味着每增加一个新功能都会让文件更快失控。项目上下文未实现,端到端的核心卖点是视觉假象。
docs/context-flow.md定义了一个精心设计的ResearchProjectContext对象(第 26-44 行),包含project_profile、literature_queries、paper_reading_notes、candidate_questions等字段,但代码中只有一个布尔值projectCreated(src/App.tsx第 415 行)和零散的独立useState。阶段之间没有数据流转——你在文献查询阶段看到的文献列表不会自动出现在论文解析阶段的下拉选项中(虽然它们共享同一个literatureData变量,但那是因为它是全局常量,而非从"上一个阶段"传递过来的)。这对一个以"端到端上下文串联"为核心差异化假设(docs/competitor-analysis.md第 20-23 行)的项目来说,是原型阶段最关键的功能缺位。缺少任何形式的 AI 集成路径。
docs/architecture.md第 30-37 行的"AI 后端选型规划"列出了 LLM、embedding、向量数据库等技术路线,但package.json中没有任何与 AI/LLM 相关的依赖(没有 langchain、openai SDK、transformers 等),src/目录中没有 API 调用代码、没有 prompt 模板、没有 streaming 处理逻辑。对于一个 S1W3 半决赛的"AI+应用"项目,一份至少能跑通的 LLM call demo(哪怕调一个 mock API 返回示例结果)会比当前纯静态 mock 更有说服力。缺少测试、构建验证和工程基础设施。
package.json的build脚本包含tsc --noEmit做类型检查(第 8 行),但没有 ESLint、Prettier、Husky、Jest/Vitest 测试框架、CI 配置文件或 Dockerfile。docs/user-validation-plan.md计划邀请 3-5 名用户测试,但项目本身没有任何自动化测试来保证 mock 数据的一致性或 UI 行为的正确性。没有.env或配置管理方案——未来的 API key、数据库连接、文献源配置全无着落。10 个 Skill 缺少三个关键设计维度。第一,迭代与修正机制:所有 Skill 都是单向流水线(从 intake → journal),但真实科研中用户会反复修正研究问题、追加文献、调整分析方法。当前规范中没有一个 Skill 定义了"如何处理上游变更"或"如何回退到之前阶段"。第二,冲突与不确定性消解:
literature-synthesis/SKILL.md要求识别"争议点"(第 17 行),但没有定义争议如何影响下游——如果两篇高优先级文献结论相反,课题生成阶段应该怎么处理?第三,Skill 复用与组合:例如paper-writing需要复用literature-synthesis的结果作为引言依据,但 Skill 规范之间通过口头描述("下游消费者")而非可执行的接口契约来连接。4. 下一步建议
优先实现最小 AI 闭环,哪怕只接一个 Skill。建议从
literature-query+paper-reading+literature-synthesis三个 Skill 开始,接入一个真实的 LLM API(如 OpenAI/Claude),用结构化 prompt 实现"输入研究方向 → 调用 Semantic Scholar API 检索 → LLM 对检索结果做结构化摘要 → 横向对比生成研究空白"。这比继续完善 10 个 Skill 的 mock 界面更有说服力,能直接验证核心差异化假设"端到端是否比单点工具高效"。拆分 App.tsx,按 Skill 做组件化重构。建议结构:
src/components/stages/IntakeStage.tsx、LiteratureStage.tsx等每个阶段一个文件;src/context/ProjectContext.tsx用 React Context 或 Zustand 实现ResearchProjectContext的状态管理;src/data/mock/集中管理 mock 数据。这样每次新增或修改一个 Skill,只需改动对应的 stage 组件,而非在一个千行文件中翻找。让阶段间数据真正流转起来。最直接的方式:在
ProjectContext中维护literatureList、selectedPapers、synthesisResult、researchQuestions等字段。当用户在 literature 阶段点击某篇论文后,reading 阶段自动展示该论文的解析;当 synthesis 完成后,question 阶段自动带上研究空白作为生成提示。这比你想象的要简单——核心只是把当前分散的useState提升到一个共享 Context,就能让"端到端"从一个视觉概念变为功能现实。将 Skill 文件从文档变为可执行规范。当前
skills/*/SKILL.md是纯 Markdown。建议至少为每个 Skill 定义一个 TypeScript 接口(如interface LiteratureQueryOutput { strategy: RetrievalStrategy; papers: Paper[]; trends: string[] }),并存放在src/skills/types.ts中。这样 Skill 规范就成为代码的类型约束——任何实现必须满足输出接口,任何 UI 组件消费 Skill 输出时也有类型安全保障。这是把文档变成契约的最小可行步骤。补充 Skill 迭代与冲突消解逻辑。至少为
literature-synthesis和research-question-generation增加一个"冲突处理"字段(如conflicting_evidence: Array<{claim_a, claim_b, resolution}>)。在research-design中增加"假设修订"能力——如果后续数据分析结果与原假设矛盾,允许用户标记并回流到 question 阶段重新选题。这会让 Skill 链路从单向流水线变成有反馈回路的真实科研过程。增加第一性工程基础设施。至少在仓库中添加:一个
.env.example(列出未来需要的环境变量)、一个简单的vitest配置 + 对 mock 数据一致性的测试(如"literatureData 中的 key 值是否被 synthesisRows.references 正确引用")、一个 Git hooks 配置(pre-commit 跑tsc --noEmit)。这些投入很小(合计不到 2 小时),但能显著提升项目在评委眼中的完成度。5. 综合评价
项目方向清晰且差异化定位明确——"端到端科研工作流 + 可靠性护栏 + 面向科研训练"的组合在现有竞品中确实存在空白。Skill 体系和设计文档的质量高于同级原型项目的常见水平,尤其是可靠性要求和用户验证计划的细致程度值得肯定。但当前交付物的核心矛盾在于:产品愿景和文档设计已达半决赛水准,而工程实现仍停留在纯静态 mock 阶段——10 个 Skill 是文档而非代码,端到端是视觉而非功能,项目上下文是概念而非运行态数据。建议下一阶段集中火力打通"文献查询→解析→汇总→课题生成"这 4 个 Skill 的最小 AI 闭环,用真实的 API 调用和跨阶段数据流转来证明"端到端"不只是设计假设而是可运行的产品价值。