ScienceClaw canvas 是科学任务的编排工作台。它不运行临时脚本,而是构建一张带类型的可执行工作流图:节点是工具、库算子、代码或 LLM 步骤;边携带带类型的值(类型、形状、单位)。引擎会立即执行每一次编辑,并只重跑受影响的节点,因此每一步都能返回真实反馈。
用途
用于把数据分析或科学计算请求转化为一张带类型的、可执行的工作流图,并借助科学工具库完成计算与交付。
主要能力
- 声明任务:调用 scienceclaw_canvas(operation=open, task={...}),其中包含 objective(必须计算和交付的内容)、inputs(每项为 {name, path, format?, description?},各自成为一个只读的 load_<name> 工具,路径必须位于配置的输入根目录之下)、required_output(交付物的 {type, shape?, unit?})以及 constraints(硬性、可检查的条件)。
- 约束检查:每个约束为 {check, value?},check 可为 finite、shape、type、range、nonempty、len_eq_input 或 metric。metric 形式为 {target, column?, metric, direction, value},是针对一个工作流从不加载的留出文件的质量门槛,仅由评估器使用,metric 可为 mae|mse|rmse|smape|r2|accuracy|f1_macro|auc。只声明用户真正需要的约束,它们就是验收测试。
- 读取上下文:返回的上下文列出协议、动作、任务工具、检索到的技能(路由配方)以及当前程序中的带类型算子。当检索到的技能适用时遵循它,它是证据而非规则。
- 查找工具:scienceclaw_tools(operation=search, query=...) 对科学工具库(经典工具包与预训练模型封装)进行排序;operation=show 打印文档以及该模块能否在当前主机上运行;不要围绕报告为不可用的工具做规划。
- 逐步编辑:scienceclaw_canvas(operation=act, sessionId, action={...}) 应用单个原子编辑(添加/修改/删除节点或边)。在下一次编辑前读取执行反馈;修复失败的节点,而不是重写整张图。
- 验证:当 submit 节点接好后,调用 operation=replay。工作流会从重置状态重新执行,必须复现其输出并满足每一条约束。随后 operation=finish 返回经过验证的交付物与工作流。
- 报告:交付物需连同工作流做了什么、使用了哪些工具以及任何未通过的约束一并报告。绝不把未验证的结果当作最终结果。
使用方式
- 调用 scienceclaw_canvas(operation=open, task={...}) 声明任务。
- 读取返回的上下文,了解协议、动作、任务工具、检索到的技能与算子。
- 用 scienceclaw_tools(operation=search, query=...) 查找工具,用 operation=show 查看文档与可用性。
- 用 scienceclaw_canvas(operation=act, sessionId, action={...}) 一次做一个原子编辑,并读取执行反馈。
- 接好 submit 节点后调用 operation=replay 验证,再调用 operation=finish 获取交付物。
- 用 scienceclaw_program 查看哪些 Skills 和 Operators 处于活动状态。
适用场景
适用于需要把数据分析或科学计算请求组织为可验证工作流的场景,尤其是需要类型化数据流、约束验收、可复现执行以及使用科学工具库(含预训练模型封装)的任务。
限制
- 输入只能通过 load_<name> 读取;绝不读取输入根目录之外的文件,也不得编造任务中不存在的数据。
- 优先使用库工具或带类型算子,而不是重新实现方法;预训练封装需要分阶段权重(scienceclaw_tools(operation=weights))。
- 绝不索取、打印或存储凭据。引擎进程不会接收网关或提供方密钥。
- 当一次已验证会话包含真实修复(一次失败的 replay 被某次编辑修好)时,可用 scienceclaw_evolve 提议从中学习;其门槛与回滚见 scienceclaw-evolution。
- 不要围绕报告为不可用的工具做规划。
- 未验证的结果不得作为最终结果呈现。