GitHub、Cloudflare 与团队共创¶
为什么需要部署¶
当前 MkDocs 站点如果只在个人电脑上运行,就只能本地访问。对于一个五六人的 AI 原生创业团队,更合理的方式是把源码放在 GitHub private repo,把站点部署到 Cloudflare Pages,并用 Cloudflare Access 做访问控制。
这样可以同时获得:
- 团队所有人都能访问。
- Git 天然支持多人协作。
- GitHub PR 支持 review、讨论和变更记录。
- GitHub Actions 做构建验证。
- Cloudflare Pages 自动部署。
- Cloudflare Access 做邮箱白名单或 SSO 访问控制。
- 微信群继续作为日常讨论和通知入口。
推荐结构¶
GitHub Repository
- workspaces/variai/site/*.md
- mkdocs.yml
- pyproject.toml
- GitHub Actions CI
↓
Cloudflare Pages
↓
Cloudflare Access
↓
微信群发布链接
当前 Cloudflare Pages 站点:
当前发布关系:
VariAI/OrgReOrg是团队协作仓库,也是 fetch/pull 来源。alpc91/harness是 Cloudflare Pages 绑定的发布镜像。- 团队成员和 Agent 应从团队仓库拉取变更;发布时把同一个
main推送到两个仓库。
当前阶段:私有仓库¶
当前建议先使用 private repo。虽然目前内容还不涉及核心敏感信息,但后续会逐渐沉淀真实组织场景、内部流程和交付方法,早一点把访问边界立住更稳。
适合放在仓库中的内容:
- 产品理念。
- 抽象架构。
- 教程结构。
- 非客户敏感的路线图。
- 通用方法论。
不适合公开的内容:
- 客户名称和合同信息。
- 内部账号、token、密钥。
- 未公开商业数据。
- 客户真实流程细节。
- 具有竞争敏感性的交付方案。
GitHub Team 和协作者¶
早期可以直接邀请协作者。团队稳定后,建议创建 GitHub Organization,用 team 管理权限。
建议权限:
| 角色 | 权限 | 说明 |
|---|---|---|
| Founder / Maintainer | Admin / Maintain | 管理仓库、Pages、权限和发布策略 |
| Core Engineer | Write | 直接创建分支、提交 PR、修复文档和代码 |
| Contributor | Triage / Write | 提交 issue、讨论、PR |
| External Advisor | Read | 只读访问指定材料 |
Agent 原生协作方式¶
团队成员全部使用 Agent 做任务时,可以约定:
- 每个重要想法都落到 issue、PR 或飞书纪要。
- Agent 修改文档后可跑
mkdocs build --strict做站点局部快查;提交 PR 前跑bash scripts/ci_check.sh(与 CI 同一套门禁),全绿即就绪。 - 重要架构变化写入
workspaces/variai/site/knowledge/decision-log.md。 - 新场景写入对应专题页。
- 每次合并到
main自动发布 Pages。
标准 GitHub 协作流程¶
main 是共享集成分支,也是 Cloudflare Pages 的发布源,不作为日常开发分支。每个团队成员和他的 Agent 都应该使用自己的工作分支:
ALPC91 负责的工作默认使用 alpc91 分支。其他协作者应使用自己的 GitHub handle 或 handle/topic 作为分支名,例如 wecom-adapter 负责人可以使用自己的名字或 name/wecom-adapter。
标准流程:
git fetch origin
git switch <your-branch>
git merge origin/main
# 开发、生成文档、运行测试
git add <changed-files>
git commit -m "type: short summary"
git fetch origin
git merge origin/main
# 如果有冲突,只在当前工作分支解决,解决后重新运行测试
git push origin <your-branch>
# 打开 <your-branch> -> main 的 PR
PR 描述必须说明:
- 本轮目标是什么。
- 改了哪些代码、Evidence、Knowledge、Registry 或 Site 页面。
- 跑了哪些验证命令。
- 有没有未解决风险、外部依赖或需要人工 review 的地方。
冲突必须在工作分支本地解决,不在 GitHub 网页上临时处理复杂冲突。原因是本地可以重新跑测试、生成页面、检查 package boundary 和 MkDocs strict build,能避免漏生成文件、漏更新 registry 或引入只在线上才暴露的问题。
main 的合并记录应体现一次完整研发单元。默认不直接 push main、不 fast-forward 本地 main 代替 PR、也不 squash 掉上下文。只有在维护者明确授权“一次性直接推 main”时,才允许跳过 PR。
PR 合并到 main 后,再把同一个 main 推送到 ALPC91 mirror,用于触发 Cloudflare Pages 发布。ALPC91 mirror 只是发布镜像,不作为团队开发的 pull/fetch 来源。
与飞书的关系¶
当前阶段不一定需要飞书 Wiki。对于五六个 AI 原生工程师组成的小团队,更轻的组合是:
- GitHub:正式文档、PR、review、版本历史。
- Cloudflare Pages:团队私有阅读网站。
- 微信群:日常讨论和链接通知。
当团队成员增多、非工程成员增多、会议纪要和流程文档变复杂时,再考虑引入飞书 Wiki 或其他知识库。
Cloudflare Pages 构建配置¶
Root directory:
构建命令:
输出目录:
MkDocs 源码目录不需要在 Cloudflare 单独配置;仓库里的 mkdocs.yml 已经设置:
依赖源规则:
- 仓库提交的
uv.lock必须使用公共 PyPI 作为可复现来源,仓库级uv.toml会把默认 index 固定到 PyPI。 - 国内镜像只用于本地临时加速,例如通过单次命令的
UV_DEFAULT_INDEX覆盖。 - 不要把清华源、公司内网源或其他环境专属源写进提交的 lockfile;GitHub Actions 和 Cloudflare Pages 的外部 runner 可能无法访问这些镜像,导致发布镜像构建失败。