跳到主要内容

项目数据存储

每个项目必须在 package.json 中声明知识库、KV 和 PersistentValue 允许使用的位置:

{
"workflowCode": {
"projectInfo": {
"dataStorage": {
"mode": "local"
}
}
}
}

mode 只能是以下值:

模式允许的位置运行要求
local仅本地Desktop 和 CLI 可离线运行;服务器存储访问和 Server 执行被拒绝。
server仅服务器需要登录并绑定同一个 package.json.id UUID;本地运行也会使用服务器数据。
both本地和服务器源码必须显式选择位置;只有实际访问服务器时才需要登录。

该声明是运行时权限边界,不是展示元数据。禁止的位置会直接抛出错误,不会回退、复制、删除或合并另一端的数据。旧项目缺少声明时,Desktop 只允许进入项目信息页补充声明;CLI、Core 和 Server 会在执行用户模块前阻断。新建项目默认显式写入 both

Core 0.2 Context

Core 0.2 通过 context.storage 暴露两个独立位置:

await context.storage.local.kv.setValue("draft", { saved: true });
await context.storage.server.persistentValue.setValue("release", "ready");

每个位置都包含相同的 kvpersistentValue:顶层方法直接访问当前项目,.conversation 访问当前项目的当前会话。两类数据使用强制隔离的存储域,相同 key 不会互相覆盖。context.kvcontext.persistentValue.workflow 和全局作用域均不存在。

local 项目只能使用 context.storage.localserver 项目只能使用 context.storage.serverboth 项目可以在同一次运行中显式访问任一位置,但两端始终是独立数据集。runWorkflow(..., { kvMode: "isolated" }) 会同时隔离本地和服务器 KV 的 project/conversation scope。

服务器身份

服务器数据按项目 UUID 隔离。访问 context.storage.server 时,顶层 package.json.id 必须是已绑定云端项目的 UUID,且调用方必须具有该项目权限。CLI 可以从 WORKFLOW_SERVER_URLWORKFLOW_SERVER_ADMIN_KEY 或 workspace 登录配置取得服务器连接;没有有效登录或绑定时,服务器位置不可用。

Server Web 只提供服务器数据。声明为 serverboth 的项目可以运行并访问数据;local 或缺少声明的项目除只读设置说明外均被阻断。

Desktop 数据源

Desktop 的知识库和 KV 工作区按同一个 UUID 汇总本地与云端项目。localserver 模式只显示声明允许的位置;both 模式提供本地与服务器切换,并分别记忆选择。硬盘图标和青绿色表示本地,云图标和信息蓝表示服务器,同时保留文字标签,不能只依赖颜色区分。

本地项目首次切换到服务器数据时会要求登录。登录成功后,Desktop 创建或恢复同 UUID 的云端绑定并同步完整项目声明;失败时保持原数据源,不使用缓存的服务器结果。本操作不会迁移本地数据。

信息

更改声明只改变以后允许访问的位置,不会迁移已有 KV、PersistentValue 或知识库数据。