Skip to content

Jacobinwwey/astrbot_plugin_onesync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

138 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

astrbot_plugin_onesync

语言 / Language: 中文 | English

OneSync Logo

version v0.2.3 AstrBot >=4.16 WebUI 127.0.0.1:8099 aggregate-first skills

OneSync 把 AstrBot 环境里的软件更新和 Skills 运维收进同一个控制面。

它解决的是很实际的一类问题:你手上不止一个软件目标,不想靠散落脚本和临时命令去维护,也不想为了一个运维台再去改 AstrBot Dashboard 源码。于是 OneSync 给出一条完整链路:检查、更新、验证、审计,再加上一个独立 WebUI。

快速导航

现在要做什么 入口
先判断项目是不是适合你 核心特色 / 适用场景
先把插件装起来 快速开始
想直接让 AI 帮你生成配置 Prompt 模板
想看常用命令 常用命令
想快速理解 WebUI WebUI 亮点
想看 Skills 管理思路 Skills 管理亮点
遇到常见问题 常见问题
用户安装 Prompt 套件 运维发布 开发扩展 接口参考 状态/路线
安装与配置(中文)
Installation & Config (EN)
安装文档中的完整 Prompt 套件
Prompt suite (EN)
运维与发布(中文)
Ops & Release (EN)
开发指南(中文)
Developer Guide (EN)
接口参考(中文)
API Reference (EN)
Skills 状态(中文)
Skills Status (EN)

核心特色

1. 软件更新不是单点命令,而是一条完整链路

  • 支持定时检查、手动检查、手动更新、强制更新。
  • 支持多目标软件并行维护,不局限于单一工具。
  • 支持 cargo_path_gitcommandsystem_package 三类主更新策略。
  • 支持更新后验证、状态持久化、事件日志与审计回放。

2. 内置独立 WebUI,不需要改 AstrBot Dashboard

  • 内置 WebUI 默认运行在 127.0.0.1:8099
  • 设置中心改成摘要卡 + 分组表单,配置、运行概览、最近任务、Debug 日志在同一控制面内分层呈现。
  • 高频动作尽量收进抽屉与 Utility,不让主工作区被低频设置长期占用。
  • 支持中英文切换。
  • 支持按关键字、状态、策略快速筛选。

3. Skills 管理按“可维护边界”组织,而不是按叶子数量堆满界面

  • install unit / collection group 是主管理对象。
  • source bundle、deploy target、host 软件一起进入同一个控制面。
  • global / workspace 是一级绑定作用域,AstrBot 本地 skill 已支持按 scope 管理。
  • 一键完善 Skills 会先刷新待补 install atom,再推进全部可执行聚合,并提供进度与历史回放。
  • manual_only、git-backed、repo-metadata、registry-backed 等边界会显式区分。
  • 结构与成员 默认收起,首屏优先让给高频运维动作。

4. 面向真实运维,不是“能跑就算”

  • 支持镜像、多远端候选与探测。
  • 支持运行态健康检查、doctor、结构化错误提示。
  • 支持批量更新、聚合进度、执行结果回放。
  • 支持把 source sync 和真实 update 分开判断,不再伪装“看起来都能更新”。

适用场景

  • 你在一台 AstrBot 主机上同时维护多个 CLI / GUI / Skills 宿主。
  • 你希望把软件更新和 Skills 管理收敛到一个运维台。
  • 你需要一个普通用户能用、开发者能扩展、运维能审计的插件。
  • 你不想把安装说明、开发说明、接口清单、发布流程混在同一页里。

快速开始

1. 安装插件

cd <ASTRBOT_ROOT>/data/plugins
git clone https://github.com/Jacobinwwey/astrbot_plugin_onesync.git

2. 重启 AstrBot

systemctl restart astrbot.service

3. 先做最小验证

管理员发送:

/updater status

能看到状态摘要,说明插件已经正常加载。

4. 打开内置 WebUI

在插件配置中启用:

  • web_admin.enabled = true
  • web_admin.host = 127.0.0.1
  • web_admin.port = 8099

然后打开:

http://127.0.0.1:8099

5. 推荐使用顺序

  1. 在配置中心确认 humandeveloper 模式。
  2. 配置或导入软件目标。
  3. 先跑一次 /updater env立即更新(当前筛选)
  4. 单目标验证通过后,再做批量更新。

更完整的安装、配置和排障说明见:

Prompt 模板

如果你不想从零写配置,直接把下面模板丢给 Codex、Claude 或 ChatGPT 即可。

如果参数很多,优先用本地生成器:

python3 scripts/onesync_prompt_builder.py \
  --interactive \
  --lang zh \
  --scenario suite \
  --output /tmp/onesync_prompt_zh.txt

Prompt A:初始化并一键下发

适合第一次配置 OneSync,或者准备把一组软件目标一次性导入 WebUI。

你是 OneSync 配置执行助手。请帮我完成 OneSync 的初始化配置与下发。

目标:
1) 生成可直接 POST 到 /api/config 的 JSON,外层必须是 {"config": {...}}。
2) 生成一段 bash 一键脚本,自动:
   - 写入 onesync_config.json
   - 如果 WEBUI_PASSWORD 非空则调用 /api/login 获取 token
   - 调用 /api/config 提交配置
   - 调用 /api/config 与 /api/overview 验证是否生效
3) 输出分为 3 个区块:
   - JSON_PAYLOAD
   - BASH_ONE_CLICK
   - ASSUMPTIONS
4) 不要输出多余解释;JSON 不允许注释和尾逗号。

输入参数:
WEBUI_URL=http://127.0.0.1:8099
WEBUI_PASSWORD=
TARGET_CONFIG_MODE=human
POLL_INTERVAL_MINUTES=10
DEFAULT_CHECK_INTERVAL_HOURS=12
AUTO_UPDATE_ON_SCHEDULE=true
TARGETS_YAML:
- name: zeroclaw
  strategy: cargo_path_git
  enabled: true
  check_interval_hours: 12
  repo_path: /home/jacob/zeroclaw
  binary_path: /root/.cargo/bin/zeroclaw
  upstream_repo: https://github.com/zeroclaw-labs/zeroclaw.git
  build_commands:
    - cargo install --path {repo_path}
  verify_cmd: "{binary_path} --version"

Prompt B:在现有配置上增量新增一个软件目标

适合当前配置已经能用,只想补一个新软件,不想把旧配置覆盖掉。

你是 OneSync 配置助手。请在“保留现有配置不丢失”的前提下,为 OneSync 新增一个软件目标。

执行规则:
1) 先通过 GET {WEBUI_URL}/api/config 读取现有配置。
2) 按我的目标参数进行增量合并,不要覆盖无关目标。
3) 输出:
   - UPDATED_JSON_PAYLOAD
   - BASH_APPLY_PATCH
   - CHANGE_SUMMARY
4) 如果检测到同名目标,按“更新该目标”处理,不新增重复条目。

输入参数:
WEBUI_URL=http://127.0.0.1:8099
WEBUI_PASSWORD=
NEW_TARGET:
  name: mytool
  strategy: command
  enabled: true
  check_interval_hours: 12
  current_version_cmd: /usr/local/bin/mytool --version
  latest_version_cmd: curl -fsSL https://example.com/mytool/latest.txt
  latest_version_pattern: (\\d+\\.\\d+\\.\\d+)
  update_commands:
    - bash /opt/scripts/update-mytool.sh
  verify_cmd: /usr/local/bin/mytool --version

Prompt C:诊断并修复配置异常

适合 404、配置下发失败、接口路径不一致这类问题。

你是 OneSync 故障诊断助手。请按“先诊断、后修复、再验证”的顺序输出可执行方案。

必须执行的诊断检查:
1) GET {WEBUI_URL}/api/health
2) GET {WEBUI_URL}/openapi.json 并确认是否存在 /api/config
3) GET {WEBUI_URL}/api/config
4) 如果 /api/config 返回 404,给出最小修复步骤:
   - 重启服务
   - 确认 web_admin_url
   - 浏览器 Ctrl+F5

输出格式:
- DIAGNOSIS
- FIX_COMMANDS
- VERIFY_COMMANDS
- ROLLBACK_PLAN

环境参数:
WEBUI_URL=http://127.0.0.1:8099
SERVICE_NAME=astrbot.service

更完整的 Prompt 套件与脚本用法见:

常用命令

命令 说明
/updater status 查看插件与目标状态
/updater check [target] 立即检查版本,不执行更新
/updater run [target] 检查并在需要时更新
/updater force [target] 忽略版本比较,强制执行更新
/updater env [target] 检查运行环境、命令路径与版本

补充说明:

  • target 可省略;省略时按所有已配置目标执行。
  • 推荐先跑 /updater env,再做批量更新。

WebUI 亮点

WebUI 不是“把命令换成按钮”那么简单。它主要解决三件事:先把配置写对,再把执行过程看清,再把问题定位下来。

  • 配置中心
    • 摘要卡先展示当前模式、轮询、端口与口令状态。
    • 直接读写插件配置,并支持 human / developer 双模式。
  • AI 配置助手
    • 生成初始化、增量新增、诊断修复、完整套件 Prompt。
  • 一键完善 Skills
    • 先刷新待补 install atom,再批量执行可行动聚合更新。
    • 进度条、最近报告与历史回放共用同一后端进度契约。
  • AstrBot 本地 Skills
    • 对 AstrBot host 按 global / workspace 范围启停、删除、ZIP 导入/导出与执行 sandbox sync。
  • 最近任务
    • 查看软件更新执行结果。
  • Debug 日志
    • 多标签、级别过滤、关键字过滤、清空日志。
  • Guide
    • 用户流程与开发者流程说明。

如果你只是想先把软件更新安全跑通,推荐顺序是:

  1. 配置中心
  2. AI 配置助手
  3. 立即更新(当前筛选)
  4. 最近任务
  5. Debug 日志

Skills 管理亮点

OneSync 的 Skills 管理不照搬 npx skills ls 的原始输出,而是按“谁可以被统一维护”来组织界面。

  • 默认先显示已安装、且具备 skills 能力的宿主软件。
  • 支持显式切换显示未安装候选。
  • global / workspace 是一级绑定作用域,不藏在细节里;AstrBot 本地动作会显式带上 scope。
  • 当 scope 选为 workspace 时,动作需要显式命中 workspace;前端不再隐式回退到“首个发现实例”。
  • 一键完善 Skills 把 install-atom 刷新与批量聚合更新收敛成一个主按钮,并保留可回看的执行报告。
  • 右侧 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

重点不是把所有东西都说成“可更新”,而是让用户很快看懂:

  • 哪些可以自动维护。
  • 哪些只能同步元数据。
  • 哪些还必须手工维护。

常见问题

1. 页面报 加载配置失败: 404 Not Found

优先按这个顺序处理:

  1. systemctl restart astrbot.service
  2. 确认访问的是 OneSync 自己的 web_admin_url
  3. 浏览器强制刷新 Ctrl+F5
  4. 验证:
    • curl -i http://127.0.0.1:8099/api/config
    • curl -s http://127.0.0.1:8099/openapi.json | jq -r '.paths | keys[]'

2. 更新成功了,但 Skills 面板还显示旧状态

当前主线已经修过两类常见假阳性:

  • 绑定保存不再依赖 inventory 重扫才能收敛。
  • install unit / collection 命令更新成功后,会立即回写 freshness anchor,避免成功后仍显示 AGING

如果你仍然看到异常状态,优先检查:

  • 当前 source 是否属于 manual_only
  • 实际走的是命令更新,还是 source sync fallback
  • 如果是 AstrBot 本地 skill,确认当前操作 scope 是否选对,workspace 不会回写到 global
  • Debug 日志doctor 是否给出了结构化错误提示

3. 我应该用 human 还是 developer 模式

  • 普通用户:优先 human
  • 需要镜像、超时、正则、复杂 target 管理:用 developer

文档分层说明

文档已经按角色拆开,不再试图让 README 承担所有职责。

你现在要解决什么问题 先读哪份文档
安装、配置、排障 安装与配置指南(中文)
发布、同步、双语 release 操作与同步手册(中文)
看代码结构和扩展点 开发指南(中文)
写脚本或联调前端接口 接口参考(中文)
判断 Skills 更新当前到底支持到哪一步 Skills 更新能力现状(中文)

如果这个项目正好解决了你在 AstrBot 运维里的实际问题,欢迎点个 Star。