OneSync 是一个面向 AstrBot 的通用可扩展软件更新器插件,目标很明确:
- 让多个软件目标的检查、更新、验证、审计进入同一个工作流
- 给运维侧一个不用改 AstrBot Dashboard 源码就能用的独立 WebUI
- 把技能包、source bundle、deploy target 和 host 软件放进同一套 Skills 管理控制面
如果你要找的是:
- 一个能定时检查与更新多个软件的软件维护插件
- 一个自带
8099运维面板的 AstrBot 插件 - 一个强调聚合管理而不是叶子平铺的 Skills 管理方案
那本项目就是为这个场景设计的。
- 支持定时检查、手动检查、手动更新、强制更新
- 支持多目标软件并行维护,不局限于单一工具
- 支持
cargo_path_git、command、system_package三类更新策略 - 支持更新后验证、状态持久化、事件日志记录
- 内置 WebUI 默认运行在
127.0.0.1:8099 - 支持配置中心、运行概览、最近任务、Debug 日志
- 支持中英文切换
- 支持按关键字、状态、策略快速筛选
- 支持镜像/多远端候选与远端探测
- 支持运行态健康检查与错误定位
- 支持批量更新和审计回放
- 支持
Improve All Skills/Update All Aggregates这类批量流程
- 不是把所有 leaf skill 平铺成主界面噪声
- install unit / collection group 是主管理对象
- 默认优先展示可统一维护的 bundle/source
manual_only、git-backed、repo-metadata、registry-backed 边界会被明确区分
- 你在一台 AstrBot 主机上同时维护多个 CLI / GUI / Skills 宿主
- 你希望把软件更新与技能包维护收敛到一个面板
- 你需要一个用户可操作、开发者可扩展、运维可审计的更新插件
- 你不想把“配置说明、运维说明、开发说明、接口说明”都揉在一个首页里
cd <ASTRBOT_ROOT>/data/plugins
git clone https://github.com/Jacobinwwey/astrbot_plugin_onesync.gitsystemctl restart astrbot.service管理员发送:
/updater status
如果能看到状态摘要,说明插件已经正常加载。
在插件配置中启用:
web_admin.enabled = trueweb_admin.host = 127.0.0.1web_admin.port = 8099
然后打开:
http://127.0.0.1:8099
- 在 WebUI 配置中心确认
human或developer模式 - 配置或导入你的软件目标
- 先跑一次
/updater env或立即更新(当前筛选) - 确认单目标没问题后,再使用批量更新能力
完整安装与配置细节请看:
| 命令 | 说明 |
|---|---|
/updater status |
查看插件与目标状态 |
/updater check [target] |
立即检查版本,不执行更新 |
/updater run [target] |
检查并在需要时更新 |
/updater force [target] |
忽略版本比较,强制执行更新 |
/updater env [target] |
检查运行环境、命令路径与版本 |
说明:
target可省略;省略时会按所有已配置目标执行- 推荐先跑
/updater env,再做批量更新
OneSync 的 WebUI 不是“只把命令换成按钮”,而是面向运维场景做了几件实用的事:
配置中心- 直接读写插件配置
- 支持
human/developer双模式
AI 配置助手- 生成初始化、增量新增、诊断修复、完整套件 Prompt
最近任务- 查看软件更新执行结果
Debug 日志- 多标签、级别过滤、关键字过滤、清空日志
Guide- 用户流程与开发者流程说明
如果你主要是“先把软件更新跑通”,那 WebUI 的推荐顺序是:
配置中心AI 配置助手(可选)立即更新(当前筛选)最近任务Debug 日志
本项目的 Skills 管理不是简单把 npx skills ls 的结果照单全收,而是围绕“可维护边界”来组织:
- 默认只显示已安装、且可调用 skills 的宿主软件
- 支持切换显示未安装候选
global / workspace作为绑定作用域显式切换- 右侧 Inspector 聚焦当前 source / install unit / deploy target
结构与成员、执行预览与审计等长信息区块采用折叠式展示- 当前版本下,
结构与成员默认收起,优先把注意力让给核心运维动作
在更新支持上,当前边界是清晰的:
- npm / registry-backed 聚合:支持更新
- git-backed
skill_lock聚合:支持受管 checkout 后更新 - repo-metadata source:支持 source sync fallback
local_custom/synthetic_single/derived:显式归类为manual_only
这套设计的重点不是“让所有东西都看起来能更新”,而是让用户一眼看懂:
- 哪些可以自动维护
- 哪些只能同步元数据
- 哪些必须手工维护
优先按这个顺序处理:
systemctl restart astrbot.service- 确认访问的是 OneSync 自己的
web_admin_url - 浏览器强制刷新
Ctrl+F5 - 验证:
curl -i http://127.0.0.1:8099/api/configcurl -s http://127.0.0.1:8099/openapi.json | jq -r '.paths | keys[]'
当前主线已经修复两类常见假阳性:
- 绑定保存不再依赖 inventory 重扫才能收敛
- install-unit / collection 命令更新成功后,会立即回写 freshness anchor,避免成功后仍显示
AGING
如果你仍然看到异常状态,优先检查:
- 当前 source 是否属于
manual_only - 是否实际走的是
source sync fallback而不是命令更新 Debug 日志与doctor是否有结构化错误提示
- 普通用户:优先
human - 需要镜像、超时、正则、复杂 target 管理:用
developer
当前文档边界已经拆开,建议按角色阅读:
如果这个项目解决了你在 AstrBot 运维中的真实问题,欢迎点个 Star。
