项目
项目用于管理一个应用相关的网站、服务、智能体和发布配置。
项目把一个业务应用需要的内容放在一起,包括页面、后端服务、模块依赖、智能体、定时任务和发布记录。
归属关系
每个项目属于一个工作区。同一个工作区可以创建多个项目,例如官网、CRM、客户助理和内部审批系统。
发布关系
项目中的页面、接口和智能体需要通过运行时预览和发布。发布后,用户通过正式域名或渠道入口访问项目内容。
Git main 写入策略
项目 Git 权限和 main 写入策略是两个独立判断:成员必须先拥有工作区及项目的 Git 写权限;通过权限校验后,平台再按项目当前策略决定是否允许直接更新 main。把成员加入工作区或项目,并不意味着项目一定允许直推 main。
| 策略 | 适用场景 | 有 Git 写权限的成员如何更新 main |
|---|---|---|
DIRECT(默认) | 新手、个人项目和低协作成本团队。 | 在本地 main 提交后,以快进方式直接推送远端 main。 |
PROTECTED | 已启用代码评审或希望显式控制合入步骤的团队。 | 推送 codex/<userId>/<branch> 个人分支,再通过平台原子合并更新 main。 |
两种策略都会拒绝删除 main、强推和非快进覆盖。DIRECT 只是省去个人分支与合并步骤,不会允许改写已经发布的提交历史。
操作项目 Git 前,开发者和 AI Agent 都必须先读取项目的实际策略,不得根据成员角色、其他项目或历史默认值猜测:
baijimu project branch-policy get <projectId> \
--workspace-id <workspaceId>工作区管理员或项目所有者可以显式切换策略:
baijimu project branch-policy set <projectId> \
--workspace-id <workspaceId> \
--mode direct
baijimu project branch-policy set <projectId> \
--workspace-id <workspaceId> \
--mode protected精确参数以本机 baijimu project branch-policy --help 为准。如果本机 CLI 没有该命令,应先升级 CLI 或读取该版本的固定文档,不能猜测项目策略。
DIRECT:快进直推
git switch main
git pull --ff-only origin main
git push origin main如果推送因为远端已有新提交而被拒绝,应先同步和整理本地提交,再重新执行快进推送;禁止用强推覆盖其他人的提交。
PROTECTED:个人分支合并
git push origin <sourceBranch>
baijimu project branches <projectId> --workspace-id <workspaceId>
baijimu project merge <projectId> <sourceBranch> \
--workspace-id <workspaceId> \
--expected-main <mainCommit>PROTECTED 不要求由另一位成员代为合并:只要用户具有相应项目 Git 写权限,就可以合并自己的个人分支。平台仍会校验目标 main 是否与 --expected-main 一致,避免并发覆盖。
如何判断 403
先区分失败发生在哪一层。工作区或项目访问校验失败,说明成员关系或项目权限仍不成立;身份与 Git 写权限已经通过、但 main 策略为 PROTECTED 时,直推被拒绝是分支策略生效,应改走个人分支合并,不能继续重复加成员。
分支策略只控制项目 Git 源码如何进入 main。合并或直推成功不等于已经构建、部署或发布;运行中的 Artifact 和 Deployment 仍由对应发布流程更新。
项目版本构建
React 静态网站、平台应用前端和 Rust 后端按项目与严格 SemVer 版本构建。版本须与源码根目录 package.json.version 或 Cargo.toml 的 package.version 完全一致。
平台首次校验主线源码并固定该版本的来源。构建失败、取消或主线更新都不会改变绑定;原源码可按原版本重试,代码修改必须使用新版本。部署和回滚选择已构建成功的版本,平台复用现有制品。Git SHA 保留为诊断信息,开发者和 AI 不需要提交它来发起构建。