mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-07-22 01:15:14 +08:00
refactor(ffi): 降级 FFI 为可选兼容层并整理文档
将 bat-ffi 明确收敛为无状态 C ABI 兼容层,默认集成路径改为 bat --json 进程边界或未来稳定 SDK。 同步 README、当前状态、项目计划、架构文档、开发指南和缺口清单,移除 FFI 作为主集成边界的表述。 新增 AGENTS.md 和 CONTRIBUTING.md,压缩 CLAUDE.md 为兼容入口,并归档阶段性报告、同步 .gitignore 规则。
This commit is contained in:
+13
-6
@@ -173,28 +173,35 @@ Rust 侧官方日服资源链路已经从实验验证推进到正式入口:
|
||||
|
||||
### `bat-ffi`
|
||||
|
||||
状态:**粗粒度 JSON API 可用,稳定边界仍需继续收敛**
|
||||
状态:**可选无状态兼容层,非主集成边界**
|
||||
|
||||
已包含:
|
||||
|
||||
- `bat_version`。
|
||||
- `bat_manifest_inspect_json`:解析 Addressables manifest 并返回 JSON summary。
|
||||
- `bat_sync_plan_json`:根据 current/previous snapshot 生成官方同步计划 JSON。
|
||||
- `internal/ffi/ffi.go` 提供 Go 包装骨架。
|
||||
- `internal/ffi/ffi.go` 提供可选 CGO 兼容包装骨架。
|
||||
|
||||
定位约束:
|
||||
|
||||
- `bat-ffi` 只暴露粗粒度、无状态、一次调用一次 JSON 输入输出的 C ABI helper。
|
||||
- 它不持有 downloader、daemon、CAS handle、资源目录锁或长生命周期状态。
|
||||
- Go CLI 和生产运维默认应调用 `bat --json` 进程边界;未来稳定 SDK 也优先于 FFI。
|
||||
- FFI 仅用于需要嵌入 C ABI 的兼容场景,不能作为官方同步控制面或主集成边界。
|
||||
|
||||
待完成:
|
||||
|
||||
- Go CLI 调用链路。
|
||||
- 错误码与结构化响应约定。
|
||||
- 发布用头文件、构建脚本和跨平台产物。
|
||||
- 如确有兼容需求,再补发布用头文件、构建脚本和跨平台产物。
|
||||
|
||||
### Go / API / Web
|
||||
|
||||
状态:**Go FFI 包骨架存在,CLI/API/Web 仍未实现**
|
||||
状态:**CLI/API/Web 仍未实现,仅有可选 CGO 兼容包装**
|
||||
|
||||
当前情况:
|
||||
|
||||
- `internal/ffi/ffi.go` 已存在。
|
||||
- Go CLI 默认集成方向是调用 Rust `bat --json` 并转发结构化 report,而不是依赖 FFI。
|
||||
- `cmd/`、`pkg/`、`api/`、`web/` 仍无可用产品入口。
|
||||
- `go test ./...` 在没有 Go package 时可能无测试可运行;Makefile 会清晰跳过空 Go 阶段。
|
||||
|
||||
@@ -256,7 +263,7 @@ cargo run -p bat-infrastructure --bin bat -- \
|
||||
|
||||
下一阶段必须优先完成:
|
||||
|
||||
1. Go CLI 最小可用入口:`bat doctor`、`bat sync --help`、Rust 官方同步命令包装。
|
||||
1. Go CLI 最小可用入口:`bat doctor`、`bat sync --help`、通过 `bat --json` 包装 Rust 官方同步命令。
|
||||
2. 官方同步结果接入 CAS + ResourceRepository 的用户级工作流。
|
||||
3. AssetBundle UnityFS 基础解析。
|
||||
4. Addressables parser 对更多官方 catalog 结构的覆盖。
|
||||
|
||||
Reference in New Issue
Block a user