# 项目目录说明 日期:2026-05-27 ## 目的 这份文档用于回答两个问题: 1. 当前仓库各一级目录分别负责什么 2. 新增文件应该放到哪里,避免继续把运行时脚本、部署资产、验收证据混在一起 它不替代 `README.md`,而是补充更细的目录职责说明。 ## 一级目录 ### `cmd/` 程序入口: - `cmd/server` - 控制面 HTTP 服务入口 - `cmd/cli` - 导入、overlay、验证等命令行入口 ### `internal/` 控制面核心实现,按职责拆分: - `internal/access` - access closure、自愈、gateway 验证 - `internal/app` - HTTP API、bootstrap、后台任务 - `internal/batch` - batch import 请求与状态投影 - `internal/config` - 配置装载 - `internal/host/sub2api` - 宿主适配器 - `internal/overlay` - host overlay 执行器 - `internal/pack` - pack 装载、校验、overlay 解析 - `internal/probe` - upstream / host smoke probes - `internal/provision` - import / preview / rollback / reconcile 编排 - `internal/reconcile` - 后台对账 - `internal/store` - SQLite repo 与 migrations - `internal/testutil` - 测试辅助 - `internal/worker` - 后台 runner ### `packs/` 版本化模型包资产: - `packs/openai-cn-pack` - provider manifests - checksums - overlay metadata 这层只放 pack 资产,不放远端站点静态页。 ### `deploy/` 面向部署目标的静态资产或配置模板。 当前已经纳入: - `deploy/tksea-portal/index.html` - `sub.tksea.top/portal/` 静态页 - `deploy/tksea-portal/admin/index.html` - `sub.tksea.top/portal/admin/` 管理首页 - `deploy/tksea-portal/admin/providers.html` - `sub.tksea.top/portal/admin/providers.html` provider 目录、导入页与服务端草稿入口 - `deploy/tksea-portal/admin/batch-import.html` - `sub.tksea.top/portal/admin/batch-import.html` 结构化 batch-import 入口 - `deploy/tksea-portal/admin-batch-import.html` - `sub.tksea.top/portal/admin-batch-import.html` 最小管理页 - `deploy/tksea-portal/nginx.sub.tksea.top.conf.example` - 对应 Nginx 路由示例 - 同时包含 `/portal-proxy/` 和 `/portal-admin-api/` 两组反代 这层的规则是: - 放“部署产物模板” - 不放需要编译的 Go 代码 - 不放临时 `/tmp` 产物 ### `scripts/` 运维、验收、部署脚本,当前已经按用途拆成三层目录: - `scripts/deploy/` - 部署与环境拉起脚本 - 例如 `build_local_image.sh`、`setup_remote43_patched_stack.sh`、`deploy_tksea_portal.sh` - 其中 `setup_remote43_patched_stack.sh` 现会同步生成 remote43 固定仓库工作副本: - `/home/ubuntu/sub2api-cn-relay-manager-git-current` - 供 `SUB2API_CRM_REPO_ROOT` 与 provider 草稿发布链复用 - `scripts/acceptance/` - 真实宿主验收与证据处理脚本 - 例如 `real_host_acceptance.sh`、`import_remote43_provider.sh`、`check_deepseek_completion_split.sh` - `scripts/test/` - 脚本资产回归 - 例如 `test_real_host_scripts.sh`、`test_tksea_portal_assets.sh` 规则: - 只放可执行运维脚本 - 新脚本必须先判断属于 `deploy/`、`acceptance/` 还是 `test/` - 脚本依赖的静态模板应尽量放到 `deploy/` 或 `docs/` ### `docs/` 所有长期保留文档: - 真相入口 - 执行板 - 验收 runbook - provider 矩阵 - 外部 OpenClaw 验证 - 目录与部署说明 ### `tests/` 集成测试套件: - `tests/integration` ### `artifacts/` 真实验收产物与归档证据。 规则: - `artifacts/real-host-acceptance/` - 当前最终证据 - `artifacts/real-host-acceptance-archive/` - 历史调试样本与归档 不要把部署模板、静态页、脚本说明放到这里。 ### `web/` 保留给未来管理端前端实现。 当前公网 portal 已经独立作为 `deploy/tksea-portal/` 静态资产纳管,不应误放进 `web/`,因为它不是控制面管理后台。 ## 当前推荐放置规则 新增文件时,优先按下面规则归类: - 新的 provider / pack 元数据 - 放 `packs/` - 新的 Go 业务逻辑 - 放 `internal/` - 新的 CLI 或 server 入口 - 放 `cmd/` - 新的线上静态部署页 / 反向代理模板 - 放 `deploy/` - 新的运维或验收命令脚本 - 放 `scripts/deploy`、`scripts/acceptance` 或 `scripts/test` - 新的长期说明文档 - 放 `docs/` - 新的验收证据 - 放 `artifacts/` ## 当前整理结果 截至 2026-05-27,最近一轮目录整理主要做了三件事: 1. 把原来只存在 `/tmp` 的 `sub.tksea.top` portal 静态页与 Nginx 规则正式纳入仓库 2. 把 portal 部署动作收口到 `scripts/deploy/deploy_tksea_portal.sh` 3. 把 `scripts/` 从全平铺整理为 `deploy/`、`acceptance/`、`test/` 三层,减少脚本入口混杂 4. 把“公网 portal / OpenClaw / remote43 验收”相关说明分别挂回 `deploy/`、`scripts/`、`docs/`