quickstart 局域网管理尝鲜

具体如图所示:


把下面内容交给你的路由器酷友社AI,就可以自行安装:


你是运行在 iStoreOS 路由器本机上的 KAI Agent。请协助我从下面的 Alpha 发布目录下载、安装并测试新版 QuickStart:

https://fw.koolcenter.com/iStoreOS/alpha/quickstart/

目标软件包包括:

1. quickstart
2. quickstart-netpolicy
3. luci-app-quickstart

必须遵守以下要求。

一、安全原则

1. 这是 Alpha 测试软件,安装会修改路由器系统。任何写操作前,先完成只读检测并向我汇报。
2. 安装测试前,必须明确建议我做一次“系统全量备份”。
3. 优先调用已经安装的 `istoreos-backup-restore` skill。
4. 全量备份必须保存到外部存储,不能保存到 `/`、`/tmp`、`/overlay` 或 `/ext_overlay`。
5. 如果检测到可用外部存储:
   - 展示挂载点、可用空间和建议的备份目录;
   - 建议使用:
     `/usr/libexec/istore/overlay-backup backup <外部存储目录>`
   - 或使用 `istoreos-backup-restore/scripts/backup_system.sh`。
   - 等待我确认备份目录后再执行。
   - 备份完成后确认生成了非空备份文件,并报告备份文件的完整路径和大小。
6. 如果没有外部存储或全量备份功能不可用,停止安装,说明原因并询问我是否愿意明确承担“无全量备份测试”的风险。没有我的明确同意,不得继续。
7. 不得自动执行恢复。恢复会重启路由器,只有我明确要求后才可以执行。
8. 不得执行系统全量升级,不得运行 `opkg upgrade`、`apk upgrade`,也不得使用 `--force-depends`、`--force-overwrite` 等强制参数。
9. 不要执行发布目录根部旧的 `install_quickstart.sh`;它可能是旧版本且不支持当前的新目录结构。

二、只读识别系统

先执行并展示以下信息:

- `cat /etc/os-release`
- `cat /etc/openwrt_release 2>/dev/null`
- `uname -m`
- `ubus call system board 2>/dev/null`
- `df -h / /overlay /tmp 2>/dev/null`
- `mount`
- `command -v apk opkg is-opkg`
- APK 和 OPKG 的本机包数据库是否存在
- 当前已安装的 `quickstart`、`quickstart-netpolicy`、`luci-app-quickstart` 版本
- `quickstart version` 的结果(如果命令存在)

架构映射必须按下面规则进行:

- `aarch64` 或 `arm64` → 下载目录 `arm64`
- `x86_64` 或 `amd64` → 下载目录 `x86_64`
- 其他架构 → 停止,不要尝试安装,并向我报告不支持的 `uname -m`

不要只根据下载文件名猜测设备架构。

三、识别原生包管理器

必须根据本机实际命令和包数据库判断,不能根据个人经验猜测:

1. APK 系统应同时满足:
   - 存在可执行的 `apk`
   - APK 安装数据库有效,例如存在 `/lib/apk/db/installed`,或者 `apk info -e base-files` 成功

2. IPK 系统应同时满足:
   - 存在可执行的 `opkg`
   - OPKG 数据库有效,例如 `opkg status base-files` 显示已经安装,或存在有效的 `/usr/lib/opkg/status`

判断结果:

- 只有 APK 有效 → 使用 `apk` 和 `.apk`
- 只有 OPKG 有效 → 使用 `opkg/is-opkg` 和 `.ipk`
- 两者都有效或都无效 → 停止写操作,展示检测证据并询问我,不能自行选择
- 不得在一次安装中混用 `.apk` 和 `.ipk`

这里的 `apk` 是新版 OpenWrt 的包管理器,不是 Android 安装包,也不要因为现有旧 skill 中写过“不要使用 apk”而忽略本机真实环境。

四、确定下载目录

根据识别结果构造唯一目录:

`https://fw.koolcenter.com/iStoreOS/alpha/quickstart/<arm64|x86_64>/<apk|ipk>/`

先读取该目录的在线文件列表。目录中必须能够找到且只找到以下三类当前软件包:

- 一个 `quickstart` 主程序包
- 一个 `quickstart-netpolicy` 包
- 一个 `luci-app-quickstart` 包

注意区分 `quickstart` 和 `quickstart-netpolicy`,不要用宽泛通配符误选。

如果目录为空、出现 404、缺少任意一个包,或者同类包有多个版本而无法可靠判断最新版:

- 立即停止;
- 报告实际 URL 和找到的文件;
- 不得改用另一种架构;
- 不得改用另一种包格式;
- 不得回退到根目录的旧安装脚本。

五、更新软件源

完成备份并得到我对安装操作的明确确认后,先更新软件源。

如果是 IPK 系统,必须依次执行:

`opkg update`
`is-opkg update`

两个命令都必须成功。`is-opkg` 不存在或任一更新失败时停止安装并报告完整错误。

如果是 APK 系统,执行:

`apk update`

更新失败时停止,不要带着过期索引继续安装。

这里仅更新软件包索引,不进行系统软件包的批量升级。

六、下载与安装前校验

1. 创建本次专用临时目录,例如 `/tmp/quickstart-alpha-<时间戳>`。
2. 只通过 HTTPS 从上面确定的唯一目录下载三个包。
3. 下载工具必须启用 HTTP 错误检查;404、证书错误或下载中断必须导致停止。
4. 禁止使用 `curl -k` 或 `wget --no-check-certificate` 绕过证书检查。
5. 确认每个文件非空,且不是 HTML 错误页或目录页。
6. 输出三个文件的:
   - 完整文件名
   - 文件大小
   - SHA-256
7. 检查 `/tmp` 和系统 overlay 剩余空间。
8. 使用包管理器的模拟安装功能检查架构和依赖,模拟失败时不得正式安装。
9. 在正式安装前,将架构、包格式、下载 URL、文件名、SHA-256、当前版本、目标版本、备份路径和模拟安装结果汇总给我,再等待一次明确确认。

IPK 模拟安装可按两阶段进行:

`opkg --noaction install <quickstart.ipk> <quickstart-netpolicy.ipk>`
`opkg --noaction install <luci-app-quickstart.ipk>`

APK 模拟安装可按两阶段进行:

`apk add --simulate --allow-untrusted <quickstart.apk> <quickstart-netpolicy.apk>`
`apk add --simulate --allow-untrusted <luci-app-quickstart.apk>`

这些是自建 Alpha 包,APK 本地安装允许使用 `--allow-untrusted`,但只能用于本次已经展示 URL 和 SHA-256 的三个文件。

七、严格按照顺序安装

必须先安装所有“不以 `luci-` 开头”的包,确认成功后,才能安装 LuCI 包。

IPK 系统:

第一阶段:

`opkg install <quickstart.ipk> <quickstart-netpolicy.ipk>`

第一阶段成功后:

`opkg install <luci-app-quickstart.ipk>`

APK 系统:

第一阶段:

`apk add --allow-untrusted <quickstart.apk> <quickstart-netpolicy.apk>`

第一阶段成功后:

`apk add --allow-untrusted <luci-app-quickstart.apk>`

任何阶段失败都要立即停止。不得继续后续阶段,不得强制忽略依赖或架构错误。

八、安装后验证

安装完成后至少执行以下验证:

1. 查询三个包的已安装状态和版本:
   - IPK 使用 `opkg status` 或 `opkg list-installed`
   - APK 使用 `apk info -e`、`apk info --all` 或 `apk list --installed`
2. 执行 `quickstart version`。
3. 根据软件包文件列表识别实际 init 脚本和服务名,不要凭空猜服务名。
4. 如果存在对应 `/etc/init.d/<service>`:
   - 检查服务状态;
   - 只有确有必要时才重启;
   - 不要重启整个路由器。
5. 确认 `luci-app-quickstart` 的 LuCI 文件已经安装,并检查对应页面或接口是否能够访问。
6. 如果 `istoreos-quickstart-api` skill 和 HTTP controller 可用,只执行只读 GET 测试:
   - `GET /system/version/`
   - `GET /system/status/`
   不要为了测试调用 POST、重启、磁盘、网络或其他危险接口。
7. 检查最近系统日志中与 quickstart、netpolicy、LuCI、rpcd、uhttpd 有关的 error/fail 信息。
8. 对比安装前后的版本、服务状态和 API 返回。

九、失败处理与最终报告

如果下载、依赖、安装、服务或 API 测试失败:

1. 停止继续修改。
2. 保留完整 stdout/stderr。
3. 优先使用已有的 `istoreos-app-diagnostics` 或 `istoreos-logs-and-diagnostics` skill 收集证据。
4. 不要自动卸载、强制覆盖、恢复备份或重启。
5. 告诉我失败发生在哪一阶段,以及全量备份文件路径。
6. 给出下一步建议,并等待我决定是否恢复全量备份。

最终报告必须包含:

- 系统型号和固件版本
- `uname -m` 原始值和映射后的下载架构
- 判定出的包管理器及判定证据
- 使用的在线目录
- 三个软件包的文件名和 SHA-256
- 备份文件完整路径
- 安装前版本
- 安装后版本
- 两阶段安装结果
- 服务状态
- QuickStart API 只读测试结果
- 相关错误或警告
- 是否建议继续测试或执行回滚

整个过程中,请先展示证据,再做判断;遇到不确定、目录缺包、架构不匹配或包管理器冲突时,停止并询问,不要自行冒险处理。

2 个赞