2026-10-26 12:41:46 +08:00
|
|
|
|
# 当前真寻农场:构建、安装与维护
|
|
|
|
|
|
|
|
|
|
|
|
更新日期:2026-10-26。本文按当前源码编写;`11-zhenxun-preview.md`
|
|
|
|
|
|
保留为旧版资料,不能作为当前版本的功能或安装依据。
|
|
|
|
|
|
|
|
|
|
|
|
## 支持范围
|
|
|
|
|
|
|
|
|
|
|
|
主仓库维护共享核心,真寻发布仓库接收生成内容。不要把主仓库的
|
|
|
|
|
|
`integrations/zhenxun` 直接复制到插件目录:其中没有构建生成的私有
|
|
|
|
|
|
共享模块和版本文件。使用生成的预览包或对应发布仓库完整内容。
|
|
|
|
|
|
|
|
|
|
|
|
当前支持注册、农场/地块/详情、种子商店、仓库、购买、播种、收获、
|
|
|
|
|
|
铲除、加锁/解锁、出售,以及已接入的土地操作、虫害和偷菜命令。
|
|
|
|
|
|
实际参数以“农场帮助”为准。新账号初始500农场币、6块普通空地。
|
2026-10-26 18:53:41 +08:00
|
|
|
|
签到和活动尚未实现。作物目录已迁入 Service,插件启动时检查更新;
|
|
|
|
|
|
维护与回滚见 [作物数据维护](catalogue-updates.md)。
|
2026-10-26 12:41:46 +08:00
|
|
|
|
|
|
|
|
|
|
## 构建和验证
|
|
|
|
|
|
|
|
|
|
|
|
开发或CI环境需要Python3.10及以上、Pillow、PyYAML、setuptools、wheel,
|
|
|
|
|
|
完整共享测试还需要 `integrations/astrbot/requirements.txt` 中的依赖。
|
|
|
|
|
|
真寻部署环境沿用宿主提供的NoneBot、真寻和Uninfo;仅安装插件的
|
|
|
|
|
|
`requirements.txt`,其Pillow约束为 `>=10.4,<11`,不要强制升级宿主到12。
|
|
|
|
|
|
|
|
|
|
|
|
主仓库根目录执行,输出目录必须尚不存在:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
python scripts/ci_font.py
|
|
|
|
|
|
python scripts/check_workflows.py
|
|
|
|
|
|
python scripts/verify_foundation.py
|
|
|
|
|
|
python scripts/build_zhenxun.py --output dist/zhenxun-manual
|
|
|
|
|
|
python scripts/verify_zhenxun.py dist/zhenxun-manual/zhenxun_plugin_farm_preview-<版本>.zip
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
将 `<版本>` 替换为构建实际输出的版本。字体脚本优先复用本地合法字体,
|
|
|
|
|
|
否则下载默认字体;全量测试可显式设置 `FARM_TEST_FONT` 为已准备字体。
|
|
|
|
|
|
源码方式调用渲染工具时设置 `PYTHONPATH=src`。构建帮助图和图片测试
|
|
|
|
|
|
需要可用中文字体。完全离线时应提前准备依赖、字体和所需图片缓存。
|
|
|
|
|
|
|
|
|
|
|
|
CI构建任务会上传 `zhenxun-preview` 附件,解包后包含插件ZIP、哈希文件、
|
|
|
|
|
|
生成仓库及辅助脚本。ZIP和 `FARM-MANIFEST.json` 用于内容一致性验证,
|
|
|
|
|
|
不能把它们当作发布者身份的密码学签名。
|
|
|
|
|
|
|
|
|
|
|
|
## 安装与升级
|
|
|
|
|
|
|
|
|
|
|
|
1. 停止机器人;备份插件代码和完整数据目录,停用会注册相同原指令的
|
|
|
|
|
|
旧农场插件。命令不加测试前缀,不能同时启用旧版和预览版。
|
|
|
|
|
|
2. 在宿主自己的Python环境安装预览包 `requirements.txt`,保留宿主
|
|
|
|
|
|
原有依赖约束。安装脚本不会代为安装依赖或启动机器人。
|
|
|
|
|
|
3. 使用主仓库辅助脚本,或附件中配套的同名脚本安装:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
python scripts/install_zhenxun.py <插件ZIP完整路径> --plugins-dir <现有插件父目录>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
目标目录名为 `zhenxun_plugin_farm_preview`;父目录必须已存在。
|
|
|
|
|
|
安装器拒绝已有目标、坏哈希、路径穿越及符号链接,不覆盖旧插件或玩家数据。
|
|
|
|
|
|
升级时停止机器人,手工备份并移走上一版插件目录,再安装已验证的新包。
|
|
|
|
|
|
|
|
|
|
|
|
4. 配置宿主加载该插件,检查下述数据目录及资源配置,再手工启动。
|
|
|
|
|
|
5. 使用构造的测试账号检查“农场帮助”“开通农场”“我的农场”等命令,
|
|
|
|
|
|
查看日志;本仓库的模拟测试不代替该真实宿主验证。
|
|
|
|
|
|
|
|
|
|
|
|
## 配置、数据及日志
|
|
|
|
|
|
|
|
|
|
|
|
| 项目 | 当前行为 |
|
|
|
|
|
|
| --- | --- |
|
|
|
|
|
|
| 农场图片质量 | 真寻网页配置,整数1~95、默认75,请求时读取;PNG无损不受影响 |
|
|
|
|
|
|
| 高清 | 仅“我的农场 高清”,宽1536,质量max(配置值,85);其他查询拒绝高清 |
|
|
|
|
|
|
| 资源获取地址 | Github、Gitea、farm_service,默认Github,修改后重载 |
|
|
|
|
|
|
| farm_service 地址 | 独立HTTPS基础地址,选择服务源时必须有效,不使用示例占位域名 |
|
|
|
|
|
|
| FARM_PREVIEW_DATA_DIR | 可选宿主启动配置;未设置时使用真寻DATA_PATH下的farm_db目录 |
|
|
|
|
|
|
| FARM_PREVIEW_DEPLOYMENT | 默认zhenxun-preview;改变它会改变玩家身份作用域,不用于改显示名 |
|
|
|
|
|
|
| FARM_PREVIEW_IMAGE_FORMAT | 默认AUTO;编码与分辨率分别设置,按宿主能力选择 |
|
|
|
|
|
|
|
|
|
|
|
|
共享核心数据库为数据目录内的 `farm.sqlite3`,运行日志为
|
|
|
|
|
|
`farm-preview.log`;素材和字体缓存在同一数据目录的独立子目录。
|
|
|
|
|
|
旧 `farm.db` 与新库不是同一种格式,不得直接覆盖或改名冒充新库。
|
|
|
|
|
|
生产旧库迁移应使用独立迁移流程和副本预检,不是安装器的行为。
|
|
|
|
|
|
|
|
|
|
|
|
公开素材和小赖字体由Service仓库分发,默认下载后按大小及SHA256校验,
|
|
|
|
|
|
缓存完整OFL许可。网页不提供自定义字体路径配置;共享Runtime/绘图API
|
|
|
|
|
|
及开发测试支持显式字体路径。下载失败时保留文字业务并记录原因,
|
|
|
|
|
|
修改源后重载插件重试。插件包不包含大型素材及字体ZIP。
|
|
|
|
|
|
|
|
|
|
|
|
作物目录仍随插件内置,当前没有启动检查作物目录更新或定时更新。
|
|
|
|
|
|
已播种规则按快照保存;出售使用当前目录价格,旧库存也受调价影响。
|
|
|
|
|
|
|
|
|
|
|
|
## 备份、回退与卸载
|
|
|
|
|
|
|
|
|
|
|
|
- 备份:先停止机器人,复制完整插件目录与完整数据目录;若存在SQLite
|
|
|
|
|
|
的WAL/SHM文件,随数据一起保存,不能在运行中仅复制主数据库文件。
|
|
|
|
|
|
- 回退:先停止机器人,恢复匹配的代码与停机备份。旧程序可能拒绝新
|
|
|
|
|
|
schema,不把新数据库强行交给旧代码,也不删除或重置库来使它启动。
|
|
|
|
|
|
恢复旧数据会丢失备份之后的进度,先保留当前副本。
|
|
|
|
|
|
- 卸载:停止机器人并取消加载,备份后移走本插件代码即可。保留数据
|
|
|
|
|
|
和缓存供恢复,不要求删除玩家数据库或旧插件目录。
|
|
|
|
|
|
|
|
|
|
|
|
## 工作流发布与Secrets
|
|
|
|
|
|
|
|
|
|
|
|
主仓库 `main` 的push,或手动运行工作流且选择 `publish=true`,在test与
|
|
|
|
|
|
build通过后可触发同步;PR只测试构建,不执行跨仓库发布。
|
|
|
|
|
|
发布固定为 `Shu-Ying/zhenxun_plugin_farm` 的 `main`,并非旧farm-preview。
|
|
|
|
|
|
它会把目标分支内容更新为生成仓库,发布前应核对目标确为分发仓库。
|
|
|
|
|
|
|
|
|
|
|
|
发布任务使用受保护的 `zhenxun-preview` environment,从Secrets读取
|
|
|
|
|
|
`FARM_RELEASE_TOKEN`;按组织规则授予固定目标仓库所需的最小写权限。
|
|
|
|
|
|
不把令牌写进源码、包、命令示例或日志。缺令牌时发布失败,离线
|
|
|
|
|
|
构建和验证仍不需要发布凭据。
|
|
|
|
|
|
|
|
|
|
|
|
`scripts/publish_zhenxun.py <插件ZIP>` 默认离线dry-run;只有显式
|
|
|
|
|
|
`--publish` 才联网,并拒绝脏来源包。普通更新不force,检测分支并发
|
|
|
|
|
|
变化后失败。本轮归档不运行真实发布,不新增或读取任何令牌。
|
|
|
|
|
|
|
|
|
|
|
|
## 本轮证据边界
|
|
|
|
|
|
|
|
|
|
|
|
2026-10-26在Windows/Python3.12.14/Pillow12.3进行了本地离线检查,
|
|
|
|
|
|
实际命令和验收结论以Comet生成报告为准。NoneBot宿主配置的一项测试
|
|
|
|
|
|
因本地缺Pydantic而跳过;不能将其说成通过。CI声明Windows/Linux及
|
|
|
|
|
|
Pillow10.4/12.3矩阵,本机未运行全部矩阵。真实真寻启动、消息发送、
|
|
|
|
|
|
公开资源下载和GitHub发布均不由本地测试证明。
|