故障排查与错误码说明

本文汇总 Desktop、Control API 和 Runtime 中常见、可操作的错误。先看错误码和完整消息, 再看运行状态、最近事件,最后看日志。大多数问题都能据此确定是附件、合同、模型、插件、 执行器还是存储层出错。

最短诊断流程

CLI:

scientific-agent status RUN_ID
scientific-agent status RUN_ID --events

Control API:

curl -sS http://127.0.0.1:8000/api/v1/health | jq
curl -sS http://127.0.0.1:8000/api/v1/diagnostics | jq
curl -sS http://127.0.0.1:8000/api/v1/runs/RUN_ID/state | jq

桌面端:打开 Control Room,先看 State 的 current_terminal_failure 和 Recent failures,再看 Timeline 的 Failures 过滤器、Jobs 和 Model calls。Settings → About 可以打开日志位置。

怎样阅读一条错误

Control API 的应用错误通常使用统一结构:

{
  "error": {
    "code": "AUTONOMOUS_PLANNER_UNAVAILABLE",
    "message": "The language-model task planner could not produce a validated decomposition: ..."
  }
}

桌面端会把它显示为“控制 API 错误 · 错误码”,下一行是完整消息。诊断时注意:

  • code 是稳定的错误类别,适合检索文档和日志;
  • message 才包含本次失败的具体原因,例如文件类型冲突、模型路由不存在或插件依赖缺失;
  • HTTP 409 表示当前状态或已冻结数据发生冲突,不等于服务器宕机;
  • HTTP 422 表示请求或科学合同不合法;
  • HTTP 502 多见于上游模型服务调用失败或其返回值始终无法通过校验;
  • Timeline 中的 failure type 和事件名不一定是 Control API 错误码,应结合所属 Job、Model call 和 current_terminal_failure 一起判断。

例如:

AUTONOMOUS_PLANNER_UNAVAILABLE
data_roles[0] role research_dataset conflicts with trusted attachment kind unknown

真正根因是第二行:规划模型把附件当作数据集,但 Runtime 的可信静态分析没有识别出该格式。 这不是网络错误,也不表示文件内容损坏。

理解运行状态

状态 含义 下一步
CREATED 合同已创建,尚未开始 Start 或 resume
RUNNING 正在规划或执行 等待;检查 Timeline/SSE
PAUSED 已安全暂停 修正外部条件后 Resume
BLOCKED 当前决策无法前进 看失败、备注和缺失输入,必要时介入
CAPABILITY_MISSING 合同需要的能力不可用 启用/修复插件后 Resume
BUDGET_EXHAUSTED 某项预算到上限 审查结果;有限更新预算后 Resume
INTERRUPTED 进程在非安全终态退出 Recover 或 resume
RECOVERING 正在恢复未完成工作 等待并检查 Jobs
CANCELLING 正在请求作业停止 等待 Executor 确认
CANCELLED 已取消,终态 创建新运行继续
SUCCESS 所有指标和产物条件满足 审查并导出
FAILED 不可恢复失败或失败预算耗尽 查根因,修复后创建新运行

不要只根据“进度条不动”判断卡死。长求解器可能没有中间指标;检查 Jobs 的状态和 Timeline 是否仍有心跳更新。

运行生命周期与预算错误码

错误码 含义 解决方案
RUN_NOT_FOUND 当前数据目录中不存在该 run ID 核对 ID 和 Settings → Storage;确认没有切换到另一数据目录
INVALID_TRANSITION 当前状态不允许 Start、Pause、Resume 或 Cancel 先查看当前状态,只执行状态卡片允许的动作
RUN_ACTIVE 运行仍有活跃 Runtime worker 等待安全检查点或先 Pause;不要同时发多个控制命令
RUN_TERMINAL 运行已是 SUCCESS、FAILED 或 CANCELLED 终态不可继续执行;保留旧运行并创建新运行
RECOVERY_NOT_ALLOWED 当前状态不是 INTERRUPTED 或可恢复的孤立 RUNNING 普通暂停使用 Resume;终态创建新运行
RECOVERY_FAILED 事件重放或检查点恢复失败 保存日志和数据目录备份,检查损坏事件/产物,再决定新建运行
RUN_LIFECYCLE_UNREADABLE 事件流无法重放,Runtime 无法可靠判断生命周期 不要手改事件文件;备份数据目录并检查首个损坏事件
BUDGET_EXHAUSTED wall time、动作、实验、模型调用或 token 等达到上限 审查已有结果;确有必要时通过受控介入只增加需要的预算
SOLVER_CALL_BUDGET_EXCEEDED action 请求的求解器调用数超过剩余量;剩余量大于零时只是要求缩小/重规划,等于零时进入耗尽 先看详情中的 requested_solver_calls 与 remaining_solver_calls;能缩小批次就不要增额,确需继续时审查 UI 建议的新总上限
TRAINING_SAMPLE_BUDGET_EXCEEDED action 请求的训练样本数超过剩余量;剩余量大于零时只是要求缩小/重规划,等于零时进入耗尽 先看 requested_samples 与 remaining_samples;优先缩小数据批次,必要时有限提高 max_training_samples
HARD_SAFETY_LIMIT_REACHED 达到进程级有限保险丝,不是可通过普通预算介入提高的用户上限 保存结果并检查失控循环或任务规模;修正合同后创建新任务
BUDGET_INCREASE_REQUIRED 请求的操作必须明确增加预算才能继续 给出理由并增加有限额度;不要改成无限预算来掩盖问题
NO_BUDGET_CHANGE 提交的预算与当前值相同 无需重试;修改实际需要调整的字段
NO_ACCEPTANCE_CHANGE 新验收条件与当前条件相同 无需提交;如需改变,修改 metric、阈值或 trusted 要求
INVALID_ACCEPTANCE_UPDATE 新条件违反状态或验收合同约束 Pause 后修改,并确保指标有合法 producer
INVALID_DIRECTIVE 干预命令类型、理由或参数不合法 从 Control Room 可用操作发起,或按 API schema 修正请求

附件上传与格式识别

“上传成功”和“已识别为数据集”是两件事。上传阶段会保存并校验文件的名称、大小和 SHA-256, 同时进行不执行文件内容的静态分析;无法识别格式并不会让上传失败,而是把静态类型记为 unknown。自主规划随后必须服从这个可信类型。

自主任务附件格式

文件 静态类型 注意事项
.csv、.tsv dataset 第一行应为列名,每行一条记录
.xlsx dataset 或 unknown 自动选择前几个工作表中的首个安全二维表;只读单元格值和公式缓存值,不执行公式、宏或外部关系
.json dataset 或 json 对象数组、等长列数组可识别为数据集;普通配置对象只识别为 JSON
.py python_source 只做 AST/名称等静态检查,不会在上传阶段执行
.lte、.madx、.seq、.tfs、.lattice、.lat lattice 用于加速器晶格输入
.zip zip_archive 或 solver_bundle 普通 ZIP 只检查归档结构;同时含非空 README/usage 与 ELF、PE 或 Mach-O 文件头的安全 ZIP 可升格为原生求解器包,画像阶段不执行或整体解压
选择的文件夹 directory_bundle 或 solver_bundle ZIP 仅作内部传输编码;安全单根目录保留目录身份并报告源码成员,含文档与原生二进制时可进一步识别为求解器包
.xls、.parquet、.feather、.npy、普通 .txt 等 unknown 当前自主规划器不能把它们直接认定为研究数据集

文件夹上传与 solver_bundle

使用 选择文件夹 时,客户端发送 source_kind=directory,后端验证单根目录后识别为 directory_bundle;固定 ZIP 只作内部传输编码,不再把目录降格为普通压缩包。目录仍占用一个 附件名额。Web 与 Desktop 都限制为最多 512 个普通文件、编码前合计 50 MiB、编码后最多 10 MiB、路径最多 32 层且 UTF-8 路径不超过 1,024 字节。危险路径、多个根、规范化后重复路径、 读取失败或过程中变化的文件和超限内容会被拒绝;Desktop 原生选择还会拒绝 symlink 与特殊 文件。支持目录项的 WebUI 浏览器可以直接拖入文件夹;否则请使用 选择文件夹。

Web File API 无法保留 Unix mode,浏览器归档因此把普通文件写成非执行条目;这本身不会阻止 求解器识别,Runtime 会在隔离工作区中确保选中的求解器二进制可执行。后端仅在安全 ZIP 同时 包含非空 README/usage 和 ELF、PE 或 Mach-O 文件头时升格为 solver_bundle。README 最多读取 64 KiB,作为不可信文档上下文;二进制不会启动,归档也不会整体解压。危险或重复路径、symlink、 加密成员、膨胀风险、成员过多会阻止目录画像;手工上传的 ZIP 未声明目录来源时仍显示 zip_archive。

正常的 XLSX 现在可以直接用于自主回归研究。为保证上传内容不会变成执行入口,解析器有意采用以下边界:

  • 选择扫描范围内首个具有非空、唯一表头且至少一行数据的二维工作表;
  • 不运行公式,只使用文件中已有的缓存标量值;没有缓存值的公式单元格按空值处理;
  • profile 阶段会忽略并报告宏部件;需要密封 holdout 的回归任务会拒绝含宏的工作簿;
  • 不跟随外部关系,不接受加密、重复、符号链接或危险路径成员;
  • XML、工作表数量、行列、单元格、文本和 ZIP 解压体积都有固定上限。

复杂或不安全的 XLSX 仍可能被标成 unknown,或在回归 holdout 阶段返回 HOLDOUT_DATASET_INVALID。此时按下面方式整理:

  1. 使用唯一、非空的首行列名,取消合并单元格,避免标题、说明文字和数据混在同一区域。
  2. 如果表格包含公式,在 Excel 中重新计算并保存,确保缓存值已写入文件。
  3. 移除 VBA/宏、外部链接和加密;或把需要分析的工作表另存为 CSV UTF-8。
  4. 如果另存为 CSV,一个文件只保留一张二维表,然后重新上传并发起任务。
  5. 如果文件只是背景材料而不是数据表,在任务描述中明确写“该附件仅作为 research_input, 不作为 dataset”。

仅修改扩展名不能把 XLSX 变成 CSV;必须实际导出或转换文件内容。

常见上传错误码

错误码 含义 解决方案
REQUEST_VALIDATION_FAILED 文件数、字段长度或请求结构不符合接口 schema 检查字段名和类型;Desktop 单个自主任务最多添加 20 个附件,打包后的一个文件夹占一个名额
INVALID_UPLOAD_FILENAME / INVALID_FILE_NAME 文件名包含路径、反斜杠或不是纯文件名 只传 data.csv,不要传绝对路径或 ../data.csv
EMPTY_UPLOAD 文件是空文件 确认源文件大小大于 0 后重新选择
UPLOAD_TOO_LARGE 超过当前接口配置的单文件限制 拆分文件、使用受控数据导入能力,或调整服务端明确允许的限制
INVALID_UPLOAD_ID / INVALID_UPLOAD_MEDIA_TYPE API 客户端传入的上传 ID 或媒体类型格式错误 让服务生成 upload ID,并使用标准 MIME type
INVALID_UPLOAD_SHA256 声明的 SHA-256 不是 64 位十六进制字符串 重新计算并传入小写或大写均可的完整 SHA-256
UPLOAD_SIZE_MISMATCH / UPLOAD_HASH_MISMATCH 声明的大小或 hash 与收到的字节不一致 不要在计算 hash 后再次转换文件;对最终上传字节重新计算
UPLOAD_ALREADY_EXISTS 自定义 upload ID 已被占用 使用新 ID,或省略 ID 让服务生成
UPLOAD_NOT_FOUND 暂存 ID 不存在、已删除或已过期 在同一 Desktop 数据目录重新上传,并使用新返回的 ID
UPLOAD_INTEGRITY_ERROR 暂存文件与记录的大小、hash 或元数据不一致 停止使用该暂存项,保留日志,重新上传原始文件;同时检查磁盘和同步软件
UPLOAD_NOT_ALLOWED 当前幂等恢复流程不允许引入新的上传内容 使用原请求重试,或用新幂等键创建新任务

大数据集更适合由受控能力从明确位置导入,不要把超大二进制内容塞进普通 JSON/Base64 请求。

自主规划错误

Desktop 的“一句话开干”流程必须先由已连接的 Scientific Reasoner 生成严格结构化的意图草案, 再由 Runtime 对附件角色、能力、验收条件和权限进行确定性校验。

错误码 含义 解决方案
SCIENTIFIC_REASONER_REQUIRED 没有已连接的科学推理模型配置 在 Settings → Providers 配置并测试具有 scientific_reasoning 角色的模型
AUTONOMOUS_PLANNER_UNAVAILABLE 模型路由不可用、调用失败,或模型输出在有限修复后仍未通过严格校验 先读消息尾部;路由问题测试 Provider,字段/附件冲突按具体消息修复后重试
AUTONOMOUS_TASK_INVALID 请求或可信附件无法安全编译为任务;模型给出的能力建议冲突不会再单独触发此错误 检查附件 ID、任务字段和完整消息;若只看到旧版 executor suggestion conflict,请升级并重新创建任务
AUTONOMOUS_PLAN_NEEDS_CLARIFICATION 规划置信度不足,或目标存在会改变合同的歧义 在 Planning Control Room 的 等待输入 Timeline 卡片中补充信息,或明确授权采用合理默认值继续;这不是运行错误
AUTONOMOUS_INPUT_REQUIRED 计划需要但当前没有提供数据集、求解器或其他输入 根据消息列出的角色补传输入;不需要该步骤时改写任务目标
AUTONOMOUS_CAPABILITY_MISSING 项目中没有能力满足某个必需步骤 安装/启用对应项目插件,或改写为现有能力能够完成的任务
AUTONOMOUS_CATALOG_CHANGED 规划冻结后,能力目录或 Provider 绑定发生变化 以当前能力目录重新提交一个自主任务,不要复用旧冻结计划
AUTONOMOUS_RECOVERY_CONFLICT 保存的计划、附件、目录或恢复检查点彼此不再匹配 保留旧运行用于审计;使用当前附件和能力新建任务
AUTONOMOUS_IDEMPOTENCY_UNAVAILABLE 无法安全持久化或恢复幂等创建记录 检查数据目录和磁盘;状态恢复后用相同请求重试,避免随意更换请求体
INVALID_IDEMPOTENCY_KEY 幂等键为空、过长或包含控制字符 使用 1–256 个可打印字符
IDEMPOTENCY_KEY_CONFLICT 同一个幂等键被用于不同请求体 原请求使用原键重试;修改后的任务必须换新键

AUTONOMOUS_PLANNER_UNAVAILABLE 是一个外层类别。以下消息尾部最常见:

消息片段 根因 处理
role research_dataset conflicts with trusted attachment kind unknown 附件格式或结构未被静态识别为数据集;旧版本也会对 XLSX 返回此消息 升级后重新上传 XLSX;其他格式转成 CSV/TSV 或表格型 JSON
role reference_solver conflicts with ... 普通源文件被模型误判为参考求解器 提供真正的求解入口并在任务中说明;否则把附件作为 source_code 或 research_input
role accelerator_lattice conflicts with ... 非晶格文件被规划成晶格输入 使用受支持的晶格格式,或明确附件的实际用途
references an unknown attachment 模型或恢复计划引用了不在本次请求中的附件 ID 重新上传并重新规划,不要手工复用过期 ID
duplicate attachment_id 同一附件被分配了多个角色 一个附件只能有一个整体角色;同时包含特征和目标列时使用 research_dataset
unknown ... / fields are invalid 模型返回了 schema 外字段、枚举或权限字段 检查模型是否支持严格结构化输出;必要时更换模型或 API format
no route / route is not configured 科学推理路由不存在或没有可用 fallback 在 Settings → Providers 修正模型和任务路由后测试连接
timeout / rate limit / quota 上游超时、限流或额度不足 缩小任务、等待限流恢复、检查额度;仅对瞬时错误重试

附件角色必须服从画像中的确定性 allowed_data_roles:数据集角色只接受 dataset;配置只接受普通 json;source_code 接受单个 .py 或含已识别源码成员的 directory_bundle;参考求解器必须是 静态判断为 solver-like 的 Python/目录/ZIP 或已确认的 solver_bundle;插件包必须含项目插件 manifest;无法更具体分类的文件只能安全地作为 research_input。

模型给出的 suggested_capability 只用于审计对照,不是授权。确定性编译器会根据已确认的研究意图 和可信附件重新推导必需步骤;即使建议在 Catalog 中精确且唯一命中,也不能新增 lease、选择生成能力 或触发安装。冲突、目录外、多余 executor 以及其他未被独立选择的建议会写入 warning,不会让任务 创建失败。只有确定性推导出的必需能力确实不存在时,才返回 AUTONOMOUS_CAPABILITY_MISSING。语义意图来自结构化 LLM 草案,不由另一套关键词规则重新解释;复用 Runtime 生成代码、发布新的持久插件、降级到有界符号基线分别需要显式的 UI/API 权限,默认全部 关闭,绝不从原文子串推断。

规划失败和需要澄清都发生在创建 Research Run 及准备项目插件之前:不会创建输入产物,项目插件状态不变, 暂存附件会保留。Desktop 会把需要澄清投影到 Planning Control Room Timeline,而不是错误横幅;这个页面是 会话级的预运行规划界面,不是一个半配置的 Research Run。Desktop 不会把失败的 LLM 规划悄悄替换成关键词规则。

无法创建研究合同

acceptance metric has no producer / CRITERION_METRIC_UNAVAILABLE

所选能力的 metric_outputs 中没有验收指标,或要求 trusted 指标却没有 authorized trusted evaluator 能够产生它。

  • 打开能力详情核对实际指标名。
  • 检查大小写、点号和下划线;指标会规范化,但不能凭近似名称匹配。
  • 项目插件开发者需同时更新 plugin.yaml 与 Python manifest。
  • 如果指标必须独立评估,加入对应 trusted evaluator 能力;否则不要虚假降低可信要求。

重复或冲突的验收条件

acceptance_criteria 中每个 metric 只能出现一次,且第一项必须与 acceptance 完全相同。 合并同名条件或选择更严格的一项。

CAPABILITY_CONSTRAINT_UNKNOWN 或能力约束无效

约束引用了未授权能力,或 when / require 不是合法映射。先把能力加入合同,从能力示例跑通, 再增加冻结参数;嵌套字段必须与项目插件的实际输入一致。

Provider 或模型失败

错误码或现象 含义 解决方案
PROVIDER_NOT_CONFIGURED 请求引用了未保存的 Provider 在 Settings → Providers 新建或改用已有 Provider
PROVIDER_NOT_CONNECTED Provider 存在但未连接,或凭据测试失败 重新保存凭据并运行 Test connection;检查代理、证书和网络
MODEL_ROUTE_NOT_CONFIGURED 指定模型没有所需任务路由 为 scientific_reasoning、代码生成等任务配置 profile 与 routing
MODEL_ROUTE_NOT_AVAILABLE 运行时没有可用 profile 或 fallback 查看 Model calls 中每条路由失败原因,恢复至少一条可用路由
PROVIDER_MODEL_MISMATCH Provider 与模型/profile 绑定不一致 选择该 Provider 实际提供的模型,重新保存绑定
MODEL_ROUTING_MANAGED_EXTERNALLY 当前路由由外部配置管理,UI 不能修改 修改外部配置源并重启/刷新,不要在 UI 反复提交
LIVE_MODEL_SWITCH_UNAVAILABLE 当前运行阶段不允许实时切换模型 等待安全检查点,或为新运行配置模型
ASK_MODEL_NOT_CONFIGURED 只读 Ask 功能没有模型 配置 Ask/科学推理路由
ASK_MODEL_UNAVAILABLE Ask 调用失败 查看上游状态、凭据、限流和 Model call 记录后重试
ASK_MODEL_INVALID_RESPONSE Ask 返回值不符合预期结构 核对 structured-output 模式,或更换兼容模型
ASK_MODEL_BUDGET_EXHAUSTED Ask 模型调用或 token 预算耗尽 审查已用预算;需要时通过受控介入增加有限预算

找不到密钥

CLI 配置中的 auth_env 是环境变量名,不是密钥值:

export OPENAI_API_KEY="..."
python -c 'import os; print(bool(os.environ.get("OPENAI_API_KEY")))'

从不同终端、systemd 或 IDE 启动时,环境变量可能没有传入。桌面端应在 Settings → Providers 重新保存凭据并运行 Test connection。

Codex CLI 未登录

codex login

完成浏览器登录后,回到 Settings 重新检测。确保 Desktop 与终端使用同一操作系统用户和同一个 Codex 配置目录。

连接成功但结构化输出失败

  • 核对 API format 与端点:Responses、Chat Completions、Anthropic Messages 不可混用。
  • 为兼容端点尝试其确实支持的 json_schema、json_object 或 tool_call。
  • Anthropic Messages 不支持这里的 json_object 模式。
  • 增加 schema repair 只能处理有限格式偏差,不能修复不兼容 API。

超时或频繁重试

查看 Model calls 的延迟、错误码、重试数和 fallback。若显式设置了 max_output_tokens,可先调整该值或任务规模,再谨慎增加 timeout_seconds。持续的 401/403、model not found 和配额错误不会因为重试而改善。

插件问题

这里的“插件”均指本项目的科学能力插件。

错误码 含义 解决方案
PLUGIN_NOT_FOUND 当前项目插件目录中没有该 ID 刷新插件列表并核对 manifest 中的精确 ID
PLUGIN_NOT_INSTALLED 尝试 Enable/Disable 时插件尚未安装 先 Install,再 Enable
PLUGIN_UNAVAILABLE 插件已登记但依赖、入口或环境不可用 查看 missing_dependencies、load_error 和 worker 日志
PLUGIN_INSTALL_FAILED 安装、依赖环境创建或 manifest 校验失败 根据完整消息修复归档、版本或依赖;不要只重复安装
PLUGIN_UPDATE_FAILED 更新包或重建环境失败 确认源包可读、磁盘充足、版本有效且插件未被运行占用
PLUGIN_IN_USE 活跃运行正在使用该插件 先等待运行终态,或安全暂停/取消后再更新或停用
PLUGIN_ID_RESERVED 自定义插件使用了 Runtime 保留 ID 修改 manifest ID 和包目录后重新打包
INVALID_PLUGIN_ARCHIVE ZIP/Base64 或归档结构无效 重新生成干净 ZIP;不要包含路径穿越、符号链接或多个 manifest
PLUGIN_ACTIVATION_REQUIRED 自主计划需要未安装/未启用插件,但自动准备关闭 手工安装并启用,或允许本次任务自动准备项目插件
PLUGIN_PREPARATION_FAILED 自主准备选中插件时安装或启用失败 打开插件详情读取具体依赖/入口错误,修复后重新提交任务
UNKNOWN_CAPABILITY / CAPABILITY_NOT_FOUND 合同引用的能力不存在或已被停用 从当前 Capabilities 列表重新选择精确名称
CAPABILITY_PROVIDER_MISMATCH 能力绑定到不存在或版本不匹配的 provider 删除过期 pin,或选择当前已启用插件提供的版本与 operation

Installed 但能力不可选

插件还没有 Enable,或启用后发现依赖缺失。打开详情检查 status、missing_dependencies 和 load_error。

entrypoint 无法导入

entrypoint 使用 package.module:ClassName,不是文件路径。确认:

  • ZIP 或目录中包含该 Python package;
  • package 目录有 __init__.py;
  • 类继承 ScientificPlugin;
  • 依赖装在 Scientific Agent 实际使用的 Python 环境中;
  • import 阶段没有执行依赖外部文件或网络的副作用。

ZIP 被拒绝

常见原因是多个 plugin.yaml、压缩包内含虚拟环境/符号链接、路径穿越、加密条目,或超过 10 MiB/50 MiB/512 文件限制。只打包清单、源代码和少量必要资源。

能力调用输入错误

从能力详情复制 example,再逐项替换。普通输入不能有清单未声明的键;需要的产物必须放在 artifact_inputs,不能把 artifact ID 当普通路径字段传入。

求解器适配插件没有发布

识别为 solver_bundle 不等于获得发布权限。请先在新建页勾选 允许发布可复用插件。随后合同 要求产出 file-solver-adapter-v1 源码和 Local Executor 的通过验证记录;固定 publisher 只接受 solver_bundle、adapter_source、validation 三个不可变来源,并在 Control 进入受管理安装和 启用前,核对记录声明的通过状态、接口、精确来源 hash 与 Artifact 谱系。

错误码 含义与处理
ADAPTER_VALIDATION_NOT_PASSED / INVALID_ADAPTER_VALIDATION 重新执行有界、文档化的冒烟测试;不要手改摘要或伪造通过记录
SECURITY_REVIEW_FAILED / SECURITY_REVIEW_DENIED 检查配置的 ExternalBinarySecurityReviewer 决定,不要绕过拒绝或异常
SOLVER_ADAPTER_CANDIDATE_MISSING 核对运行是否生成 bundle、adapter source 与 validation,且三者谱系一致
SOLVER_ADAPTER_PUBLICATION_FAILED 查看发布消息中的包结构、谱系、hash、身份冲突、安装或启用错误
SOLVER_ADAPTER_DELIVERY_FAILED 科学运行仍可能成功;单独检查发布/导出阶段,未完成前不要声称插件可用

默认 reviewer 状态 permissive_deferred 只表示允许继续发布,并明确记录没有独立恶意软件扫描、 签名验证、来源认证或二进制安全审查;它不是安全批准。validation 记录和摘要 attestation 只证明 所声明的状态、身份与谱系,也不是冒烟测试确实执行或二进制安全的独立证明。

Local Executor 问题

JOB_FAILED、EXPERIMENT_FAILED 等通常是 Timeline 事件或运行 failure type,不是 Control API 错误码。它们只说明执行失败,根因应从对应 Job 的 failure_type、退出码、stdout 和 stderr 读取。

  • 命令找不到:依赖工具没有安装在应用进程的 PATH 中。用同一用户和环境在终端确认。
  • 输出缺失:生成代码没有写入 JobSpec 声明的相对文件名。
  • 退出码非零:查看 Jobs 中保存的 stdout、stderr 和结构化 failure type。
  • MEMORY_ERROR / OOM / SIGKILL:Runtime 生成的普通本地作业当前申请 8,192 MiB;POSIX Local Executor 会施加地址空间上限。先缩小样本 mini-batch、对坐标或推理分块,并确认算法没有把完整场重复复制到内存;不要只把科学模型换掉来掩盖实现问题。
  • 取消很慢:外部进程没有及时处理终止信号;等待状态完成,必要时在隔离环境中清理。
  • 路径被拒绝:输入/输出必须留在工作区,不能使用绝对路径或 ..。

不要通过放宽路径检查来修复任务;应修正 JobSpec 或代码的文件约定。

产物或谱系问题

错误码 含义 解决方案
ARTIFACT_NOT_FOUND 当前运行中没有该 artifact ID,或记录已不可用 核对 run ID 与 artifact ID;从 Lineage 重新打开,不要猜测 ID
ARTIFACT_ACCESS_DENIED 请求访问 evaluator-private 或其他受保护产物 不要尝试绕过;通过公开指标、证据或 trusted evaluator 结果审查
ARTIFACT_HASH_MISMATCH 文件内容与冻结 SHA-256 不一致 停止运行、备份现场,检查磁盘/同步/手工修改,再恢复或重算
ARTIFACT_METADATA_MISMATCH 文件大小、类型或其他记录元数据不一致 按完整消息检查记录与文件;不要手工“修平”元数据
ARTIFACT_PATH_INVALID 产物路径越界、含绝对路径/.. 或不满足工作区约束 修改项目插件/JobSpec,只使用声明的工作区相对路径
ARTIFACT_CONTENT_UNAVAILABLE 记录存在但内容无法读取、下载或安全公开 检查文件是否仍在、权限和底层 I/O;私有内容不会因下载接口而解密公开
SCIENTIFIC_OBJECT_NOT_FOUND 查询的 claim、evidence、hypothesis 等科学对象不存在 从当前运行的 Science/Lineage 视图重新获取 ID
SCIENTIFIC_EXPORT_FAILED 科学结果导出失败 检查磁盘、目标路径和相关产物完整性;科学结果本身不因此变成成功或失败

hash mismatch / 产物损坏

底层文件与记录的 SHA-256 不一致。不要覆盖记录或重新计算 hash 来掩盖问题。

  1. 停止该运行。
  2. 保存日志和损坏文件的副本。
  3. 从已验证备份恢复整个相关运行,或创建新运行重算。
  4. 检查同步盘、手工编辑和磁盘故障。

Lineage 中没有预期关系

插件应通过 artifact inputs、已有 artifact ID 或同一次返回中的 parent_names 声明关系。仅在 metadata 的自由文本中写文件名不会形成谱系边。

无法预览文件

控制室内置文本和 CSV 预览;大型或二进制产物可能只能下载。下载后使用领域工具打开,并核对 UI 中的类型、大小和 hash。

结果交付与自动导出问题

科学运行达到 SUCCESS 后,生成插件发布和结果包导出是独立的交付阶段。交付失败不会把已经满足 验收条件的科学结果改成失败,但也不能把未准备完成的包报告为“已交付”。

错误或事件 含义 解决方案
REUSABLE_PLUGIN_CANDIDATE_MISSING 合同要求可复用插件,但没有合格候选产物 检查运行是否生成模型、推理源码、评估和 predictor output 等必需产物
MINIMAL_EXAMPLE must ... 最小示例不是 UTF-8 .py、语法无效,或只有 import/说明文字而没有实际调用 生成一个可直接运行的最小调用脚本,并把输出 Artifact type 声明为 MINIMAL_EXAMPLE
USAGE_GUIDE must ... 使用说明不是 UTF-8,或没有明确覆盖 input、output、domain、fallback 在说明中补齐这四项接口/适用域/回退约定,并声明为 USAGE_GUIDE;当前校验查找这四个英文关键词
GENERATED_PLUGIN_PUBLICATION_FAILED 候选插件安装、冻结或发布失败 查看 publication 事件的具体缺失产物、谱系、hash 或安装错误
GENERATED_PLUGIN_DELIVERY_FAILED 已发布插件的交付步骤失败 确认发布事件成功,再检查目标目录、归档和权限
SOLVER_ADAPTER_CANDIDATE_MISSING 合同要求求解器适配插件,但三源候选不完整或谱系不匹配 核对 solver_bundle、adapter_source 和 validation 的 Artifact ID、hash 与 producer
SOLVER_ADAPTER_PUBLICATION_FAILED 适配包、三源校验、安装或启用失败 查看发布失败详情;不要绕过 reviewer、hash、attestation 或受管理安装检查
SOLVER_ADAPTER_DELIVERY_FAILED 求解器适配插件交付阶段失败 保留成功科学运行,单独修复适配器发布/导出条件后再交付
AUTONOMOUS_EXPORT_FAILED 自主结果导出失败 检查产物完整性、磁盘空间和导出日志后重新导出
AUTONOMOUS_DELIVERY_PREPARATION_FAILED 自动结果包准备失败 保留成功运行,修复消息指出的发布/导出条件,再单独重试交付

存储与恢复问题

错误码 含义 解决方案
INVALID_STORAGE_STRATEGY 迁移策略不是 move 或 keep 在 Settings 选择受支持策略,或修正 API 请求
STORAGE_LOCATION_BUSY 仍有 RUNNING、CANCELLING、RECOVERING 运行或后台任务 等待完成或安全暂停后再迁移
STORAGE_LOCATION_INVALID 新位置不是绝对路径或不可作为数据目录 选择本机可写的绝对目录
STORAGE_LOCATION_OVERLAP 数据目录与 cache/config 目录互相包含 选择完全独立的目录,不要选其父目录或子目录
STORAGE_LOCATION_EMPTY keep 指向的目录没有已有 Scientific Agent 数据 选择真实旧数据目录;新目录迁移应使用 move
STORAGE_MIGRATION_FAILED 目标非空、复制/校验失败或文件系统报错 保留源目录不动,检查空间和权限;修复后通过 Settings 重试
RUNTIME_BACKUP_FAILED 备份创建失败 检查磁盘空间、目录权限和底层 I/O 后重试

找不到旧运行

最常见原因是 --data-dir 不同。运行:

scientific-agent --data-dir EXPECTED_DIR status RUN_ID

桌面端在 Settings → Storage 查看当前目录。不要把 cache 目录误当 data 目录。

数据目录不可写或空间不足

检查目录权限、挂载状态和可用空间。先暂停运行并创建备份,再通过 Settings 或 /storage/location 迁移。不要在应用运行时手工移动一半目录。

resume 被拒绝

只有可继续状态才能 resume。SUCCESS、FAILED 和 CANCELLED 是终态。对 INTERRUPTED 使用 Recover;对 BUDGET_EXHAUSTED 先审查并通过受控介入增加有限预算。

Control API 问题

HTTP 状态 常见含义
401 正在访问 Desktop 内部 API,但缺少或使用了错误临时令牌
403 通过了会话边界,但所请求的私有产物不允许当前接口公开
404 Run/artifact/plugin ID 不存在,或在开发模式调用 Desktop-only shutdown
409 生命周期冲突、重复命令或当前状态不允许该操作
413 上传体超过当前端点限制
422 JSON 字段、枚举、分页或科学命令契约无效
500 本地存储、导出或其他服务端操作失败;读取完整错误并保留日志
502 上游模型/Provider 失败,或其返回值没有通过结构化校验
错误码 含义 解决方案
DESKTOP_SESSION_REQUIRED 缺少 Desktop 进程生成的临时 bearer token 从 Desktop UI 调用;自建客户端需使用当前会话令牌,不能复用旧令牌
DESKTOP_ONLY 在开发/非 Desktop 模式调用了 Desktop 专用接口 使用对应模式支持的接口,不要通过伪造 mode 绕过
INVALID_PAGINATION limit、cursor 组合或范围非法 回到第一页并使用响应返回的 cursor
INVALID_CURSOR cursor 超过当前事件流/结果集 丢弃旧 cursor,从当前有效位置重新请求
REQUEST_VALIDATION_FAILED 请求体没有通过 API schema 查看字段级 detail,修正类型、必填字段、枚举或长度

先访问 /api/v1/health 确认端口与 mode。开发服务的交互式 schema 在 /api/v1/docs。SSE 断线后使用上次 cursor 重连,不要同时启动大量从 after=0 开始的流。

Benchmark 问题

  • --prepare-only 失败:先确认 Xsuite/ML 依赖和 spec 中相对 base_config 路径。
  • spec hash 不一致:冻结规格、基础配置或协议相关文件发生改变;不要强行复用旧结果目录。
  • 没有有效成功结果:查看各 trial 的 Runtime 状态和可信验收指标,而不仅是聚合报告。
  • integrity 失败:该报告无效;检查私有数据泄漏、事件冻结、predictor hash 和跨运行隔离。
  • 重跑没有从头开始:difficulty runner 设计为按 slot 恢复;若要独立实验,使用新的 --data-dir。

更新检查不可用

About 页面会显示当前 Desktop 和 Runtime 版本。若发行版没有配置更新源,Check for updates 会明确显示不可用;这不是网络故障。按项目的正式发布渠道安装新版本,并在升级前创建备份。

提交问题时附带什么

提供最小且已脱敏的信息:

  • Desktop、Runtime、操作系统和 Python 版本;
  • run ID 与最终状态;
  • diagnostics 输出;
  • Timeline 中相关事件类型和错误码;
  • 插件 ID/版本、能力 ID和 load_error;
  • 可复现的最小配置(删除密钥、私有数据和绝对个人路径)。

不要发送 API key、操作系统凭据、evaluator-private 内容或整份敏感数据目录。

系统 VPN、代理与证书设置

桌面应用遵循操作系统的路由表、DNS 配置和 VPN 路由。Desktop Runtime 还会继承标准代理环境变量、 Windows/macOS 原生代理设置、GNOME 代理设置、Linux 桌面 Portal/PAC 解析、代理绕过规则以及系统证书库; 支持 HTTP、HTTPS 和 SOCKS 代理。显式设置的 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY、 NO_PROXY、SSL_CERT_FILE 和 SSL_CERT_DIR 具有最高优先级。

系统路由变化会立即生效;应用会在模型服务请求前刷新代理设置,因此切换系统网络后无需重新配置模型服务商。

找到 条结果:“”

    没有找到匹配结果:“”