feat(sync): 添加 Vault 所有的用户 Skill 记录

This commit is contained in:
2026-09-09 08:39:14 +08:00
parent bdd1543a4d
commit b0783c9356
25 changed files with 1507 additions and 29 deletions
@@ -761,3 +761,14 @@ Core 的独立数据目录目前不等于已授权 Vault。Python 旧笔记写
- 修复同时解除首次上传/合并 seedCurrentPreferences 中准备布局记录时的 RECORD_SCOPE_DENIED 障碍;可选范围过滤仍由独立 sync_scope 决定,允许本机编辑不等于授权上传。尚未补齐用户 Skill 编辑/逻辑记录,本轮优先修复实际边界缺陷。
- 完整 desktop/all-targets Rust 回归 146 通过、12 ignoredlibrary 129、Host 10、其他集成 7),包括真实 Core 桥接与 Sync 服务集成;Clippy --all-targets -D warnings 通过。日志 .build/layout-command-full.log 与 .build/layout-command-clippy.log。未执行真正双机桌面 UI 验收,不能据此标记整体生产化完成。
## 增量:当前 Vault 的用户 Skill 逻辑记录
- 新增 `user_skill_<32位小写十六进制>` 严格逻辑记录,Host 固定存入 `opennexus-records/v1/user-skills/`;名称、提示词、工具、权限声明、模型能力、检索参数、版本与时间均有类型、数量和长度上限,未知字段在写入 journal 前拒绝。该类别进入默认同步范围;安装目录、密钥、设备授权、启用状态和运行环境不能写入记录,安装包也不能占用 `user_skill_` 保留命名空间。
- Core 增加当前 Vault 专用的 list/get/create/update/delete API,并通过窄化 Host RPC 访问,不能借操作回执读取 persona/task 等记录。更新和删除使用摘要 CAS;有效 UUID `Idempotency-Key` 进入 Host journal,同一操作与相同输入可在响应未知后重放,改变目标、旧摘要、操作类型或业务字段会返回 `USER_SKILL_OPERATION_CONFLICT`。Workspace 持久回执补充原始 expected 摘要,重开后仍能完成输入一致性核验。
- Skill 页面增加用户 Skill 编辑器,明确权限字段只是声明而非设备授权;工具缺失、权限声明不足与可运行状态分开展示。Agent 页面只列可运行记录,实际 `/api/agent/runs` 会从 Host 读取当前 Vault 的用户 Skill 并再次核对本机工具、权限声明和模型能力。列表按 Host 分页读取,避免超过 100 项时静默截断。
- 前端保存和删除在结果不明确时保留原 UUID;同一 Vault、记录和表单内容重试会复用该 UUID,内容改变才产生新操作。Vault 切换同步清除编辑状态和待重试标识,迟到的列表或保存结果不得写入新 Vault 的界面状态。该内存重试状态不跨应用完全退出,不能将其视作跨重启 UI 草稿恢复。
- 实际 Python Core + Rust Host 集成覆盖创建、20 次相同重放、改变输入冲突、列表、跨 Vault 拒绝、CAS 更新、过期摘要拒绝、Agent 选择运行、删除及关闭前 journal 计数。实际 Uvicorn Sync + 两个 Rust Workspace 客户端对用户 Skill 进行了 60 轮同时修改,保留本地/采用远端/创建文本副本各 20 轮,并验证旧摘要拒绝、重复解决、两端收敛、重开稳定;第三个默认范围客户端可接收用户 Skill,同时仍排除未选择的人设与布局。
- 最终 desktop Rust 全目标 148 通过、12 ignoredlibrary 131、Host 10、其余集成 7),Clippy `--all-targets -D warnings` 通过,日志 `.build/user-skill-rust-full-final.log``.build/user-skill-clippy-current.log`。后端 908 项通过、1 项依赖弃用警告,日志 `.build/user-skill-python-full-current.log`。前端 103 个测试文件、536 项通过,类型检查和生产构建通过,日志 `.build/user-skill-frontend-full-final2.log``.build/user-skill-frontend-build-final2.log`
- 证据来自本机隔离服务和客户端进程,尚未替代两台独立硬件上的桌面 UI、跨发布版本或每个持久化边界强制终止验收。Provider 非秘密参数、安装清单、对话等规划内逻辑数据仍未适配;完整生产化目标保持未完成。