feat(sync): 添加 Vault 所有的用户 Skill 记录
This commit is contained in:
@@ -63,7 +63,7 @@ Host 在写入 journal、捕获外部修改和上传前验证记录;未知字
|
||||
|
||||
桌面 Task CRUD 经 Host records broker,操作重放返回原始记录且同 ID 不同字段拒绝;Core 不以全局 SQLite 作为任务来源。已明确归属于当前 Vault 的旧 Task 表在首次访问时逐条迁移,完成后设置所有权标记,来源表保留;未分配 Vault 的全局旧数据不猜测归属。文件身份采纳时,任务链接通过 Host 别名解析,并在上传队列物化前将规范化引用写成新的逻辑记录。
|
||||
|
||||
用户 Skill/配置、可选对话等仍须逐类定义白名单与适配器;不得用复制任意 JSON/SQLite 代替。
|
||||
用户 Skill 的独立白名单与适配器见下文;可选对话等其他类别仍须逐类定义,不得用复制任意 JSON/SQLite 代替。
|
||||
|
||||
|
||||
## 主题与编辑器偏好记录 v1
|
||||
@@ -82,6 +82,17 @@ Host 在写入 journal、捕获外部修改和上传前验证记录;未知字
|
||||
本机已有三项侧栏 localStorage 值仍作为初始偏好读取并保存,不删除来源。组件共享布局状态,远端值立即反映在侧栏;窗口可用空间不足时仅收窄渲染宽度,不改写同步偏好,恢复空间后恢复偏好宽度。布局记录不含本机窗口坐标、显示器信息、已打开文件路径或执行权限。本版本未支持的旧客户端不能被视作已验证兼容,跨版本发布兼容验收仍需覆盖新增记录类别。
|
||||
|
||||
|
||||
## 用户 Skill 记录 v1
|
||||
|
||||
用户创建的声明式 Skill 使用 `opennexus-records/v1/user-skills/user_skill_<32位小写十六进制>.json`,kind 为 `user_skill`,业务 ID 与文件 `file_id` 分离;`user_skill_` 前缀由此命名空间保留,安装包不得占用。data 白名单为 version、name、description、prompt、tools、permissions、retrieval、required_capabilities、created_at_ms、updated_at_ms;记录信封和内容摘要继续作为文件 CAS 与冲突依据。用户 Skill 默认参与当前 Vault 同步。
|
||||
|
||||
name 为 1–128 个 Unicode 字符且不能全为空白,description 最多 2000 字符,prompt 最多 64000 字符。tools 最多 64 个、permissions 最多 32 个、required_capabilities 最多 16 个;各列表不得重复,标识仅允许 ASCII 字母、数字、点、下划线和连字符。retrieval 只含 top_k 1–100、rerank、citation;模型能力和权限采用当前公开枚举。时间为非负 UTC Unix 毫秒且 updated_at_ms 不早于 created_at_ms,version 不超过 JavaScript 安全整数。整体记录仍受 1 MiB 上限约束。
|
||||
|
||||
同步的 permissions 是 Skill 对工具需求的声明,不是目标设备授权。API Key、令牌、设备授权、启用状态、正在运行的 Agent、安装目录、包来源、环境变量和秘密值均不进入记录;新设备按本机 Tool 可用性、权限策略和模型能力重新判断。缺少工具或声明不足的记录可编辑和同步,但不可选择运行;用户明确选择一个 ready 的 Skill 后,每次工具调用仍经过设备本地 PermissionManager。
|
||||
|
||||
Core 经 Host 提供按 Vault 的 list/get/create/update/delete,创建 ID 从操作 UUID 稳定派生。相同操作 UUID 和相同载荷返回 Host 持久化的原回执;相同 UUID 配合不同 ID、CAS 基线、操作类型或字段值返回 `USER_SKILL_OPERATION_CONFLICT`。更新和删除必须携带 64 位内容 revision;过期 revision 返回 `USER_SKILL_REVISION_CONFLICT`。前端切换 Vault 后丢弃迟到响应,不能把旧 Vault 的列表或保存结果发布到新 Vault。
|
||||
|
||||
|
||||
## 工作区人设记录 v1
|
||||
|
||||
桌面端使用 `opennexus-records/v1/persona/default.json`,schema=1、kind=persona、id=default。data 白名单为 version(0–2^53−1 整数)、name(最多 128 Unicode 标量)、system_prompt(最多 16000 Unicode 标量)、dialogue_pairs(最多 20 对,每对仅 user/assistant,各最多 8000 Unicode 标量);整条记录仍受 1 MiB 字节限制。人设正文是用户内容,不自动赋予权限或启动任务。未知字段一律拒绝。
|
||||
|
||||
@@ -72,6 +72,11 @@ Web 联调阶段只暴露后端通过 `APP_VAULT_PATH` 配置的单一 Vault,
|
||||
| POST | `/api/skills/{skill_id}/enable` | 启用 Skill |
|
||||
| POST | `/api/skills/{skill_id}/disable` | 停用 Skill |
|
||||
| DELETE | `/api/skills/{skill_id}` | 卸载 Skill |
|
||||
| GET | `/api/user-skills` | 列出当前 Vault 的用户 Skill 逻辑记录 |
|
||||
| POST | `/api/user-skills` | 新建用户 Skill;支持 UUID Idempotency-Key |
|
||||
| GET | `/api/user-skills/{skill_id}` | 读取用户 Skill 与内容 revision |
|
||||
| PUT | `/api/user-skills/{skill_id}` | 以内容 revision CAS 更新用户 Skill |
|
||||
| DELETE | `/api/user-skills/{skill_id}?revision=...` | 以内容 revision CAS 删除用户 Skill |
|
||||
| GET | `/api/plugins` | 获取 Plugin 列表及状态 |
|
||||
| POST | `/api/plugins/install` | 安装 Plugin |
|
||||
| GET | `/api/plugins/{plugin_id}` | 获取 Plugin Manifest 与状态 |
|
||||
|
||||
Reference in New Issue
Block a user