Files
NotesAgentic/docs/development/扩展安装持久化与社区包开发说明.md
T

46 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 扩展安装持久化与社区包开发说明
> 本文档用于 Skill、Plugin 安装及社区示例包开发。
>
> 更新日期:2026-09-06。代码基线:`a5c44c4`;社区服务仍处于第三阶段规划。
## 当前实现
`backend/app/extensions/archive.py` 解析上传 ZIP`installed.py` 为运行时增加本地安装日志。`extension-installations.sqlite3` 位于 data_dir 下,记录包路径、内容摘要、启用状态、插件授权及受管理目录;成功解压的包保存在 `extension-packages`,供后续命令读取。
| 环节 | 行为 |
| --- | --- |
| 安装 ZIP | 最大 10 MiB,解压总量最大 50 MiB,最多 2048 条目 |
| 路径检查 | 拒绝目录穿越、链接、特殊文件、加密条目、重复及大小写冲突路径 |
| 包布局 | 根目录或唯一顶层目录包含 skill.yaml / plugin.yaml |
| 重启恢复 | 校验目录和内容摘要后恢复安装状态;插件恢复授权 |
| 包内容变化 | 不自动启用变化后的包,需重新安装并检查权限 |
| 卸载 | 受管理 ZIP 目录可清理;用户目录安装源不删除 |
安装持久化不等于操作系统级沙箱、签名验证或远程社区服务上线。生产隔离、社区发布治理与签名机制仍按第三阶段规划推进。
## 社区示例
源码与打包入口位于 `backend/extensions/community/``note-reviewer` 为笔记审阅 Skill`markdown-workbench` 为可执行 Plugin。功能、安装和测试输入见该目录 README 与各包 README。
重新打包:
```powershell
cd backend
uv run python extensions/community/build_packages.py
```
仅在需要更新社区示例产物时执行,并核对 dist 中 ZIP 和 index.json 是否与源码一致。
## 验证方法
在 backend 目录执行:
```powershell
uv run pytest tests/test_extension_archive.py tests/test_installed_extensions.py tests/test_community_packages.py -q -p no:cacheprovider
```
手动使用测试数据目录安装示例包,启用并调用;重启后端后确认状态恢复。对包副本修改内容再重启,应出现恢复失败提示。卸载目录安装包时,原目录应继续存在。
生产社区规划见 [第三阶段实施规划](../architecture/第三阶段实施规划.md),命令和设置接口见 [Plugin Command 与 Settings 开发说明](Plugin-Command与Settings开发说明.md)。