文件、工作区与恢复

规划输入、输出、保存状态和可恢复检查点。

扩展 API v1按当前源码核对
本页目录

先约定输入与输出#

任务组件开始处理文件前,应明确材料来自哪里、哪份是原件、输出保存在哪里,以及失败后能保留什么。

数据 推荐归属 不应该放在哪里
原始题目与数据 用户明确选择并登记的材料 不复制进组件代码充当运行配置
工作副本 当前项目允许的工作区 不覆盖只读输入原件
计算、论文、图表 明确的项目输出目录 不写回应用安装目录
阶段记录与检查点 组件自己的项目状态 不混进公共全局变量或密钥配置
可重建预览缓存 受支持的缓存位置 不将其当成唯一成果副本

大输入先登记,后按需读取#

打开窗口先读取路径、类型和当前视图需要的元信息。大型表格预览只取当前页,代码或计算工具需要完整数据时再走相应处理路径。

不要在“准备任务”阶段把所有 CSV、图片和压缩包都读进渲染层;这会放大内存、复制和启动时间,也会让正常任务看起来像启动超时。

规划可回看的项目结构#

下面是组件可以采用的设计例子,不是宿主强制目录,也不会由示例自动创建:

text
用户允许的项目目录/
  材料引用与说明
  工作副本/
  结果/
    本次运行/
      数据分析.csv
      结果图.png
      论文草稿.tex
  组件状态/
    state.json

目录和文件操作仍必须经过目标宿主实际开放的能力。不能因为文档画了一个目录树,就假定插件有任意创建和写入权限。

保存顺序影响恢复是否可靠#

  1. 生成当前阶段的内容,保留内存中的未保存状态。
  2. 等待允许路径上的写入完成,核对返回结果。
  3. 登记已经存在的输出文件。
  4. 再更新阶段检查点和用户界面。

如果第 2 步失败,不应先把第 4 步标成完成。写入过程中用户又修改的内容,也不能被旧保存结果覆盖。

一个内部持久状态示例#

json
{
  "schemaVersion": 1,
  "runId": "example-run-id",
  "status": "failed",
  "stage": "保存成果",
  "inputs": [{ "path": "<已授权材料引用>", "role": "source" }],
  "outputs": [{ "path": "<已保存输出引用>", "stage": "执行计算" }],
  "checkpoint": { "completedStages": ["检查输入", "执行计算"] },
  "error": { "stage": "保存成果", "message": "<脱敏后的原因>" }
}

这是推荐的组件内部结构,不是一个新增的宿主接口。保存位置、写入方式和恢复入口由组件结合实际能力实现。

恢复时逐项核对#

  • schemaVersion 是否支持,必要迁移是否完成。
  • 输入引用和已登记成果是否仍存在。
  • 上一运行是否真的结束,是否还有后台任务。
  • 检查点代表的产出是否完整,而不仅是某个状态字符串。
  • 用户外部修改的文件是否让检查点失效。

没有实现这些检查时,不要提供一个名为“继续”的按钮却暗中从头重跑。

更新文件与预览#

为当前预览保存文件身份及 stamp。发现变化后提示刷新,再读取需要的页面或内容;有未保存编辑时不能悄悄覆盖。

项目迁移先备份旧状态,迁移成功再替换。清理临时文件时只能处理自己明确拥有的临时资源,不能删除整个用户项目来释放空间。

下载本页 Markdown