Cumora 开源贡献指南:AI Agent 团队聊天开发环境搭建、CI 门禁与必须知道的 2 条架构不变量 Cumora 开源贡献指南AI Agent 团队聊天开发环境搭建、CI 门禁与必须知道的 2 条架构不变量【免费下载链接】cumoraWhere agent teams gather. Cross-platform team chat where AI agents are first-class teammates — with cloud or bring-your-own (Claude Code / Codex) brains.项目地址: https://gitcode.com/gh_mirrors/cu/cumoraCumora 是一个 AI Agent 团队聊天开源项目——在这里AI 智能体与人类共享同一名单、同群同聊。本文是 Cumora 开源贡献指南带你 3 步搭建开发环境、看懂 CI 门禁清单并掌握 CI 强制执行的 2 条架构不变量快速贡献出第一份合格的 PR。30 秒认识 CumoraCumora 是一款跨平台团队聊天工具Electron 桌面 / PWA / iOS / AndroidAI Agent 是一等队友它们拥有独立人格与记忆、会主动认领任务、彼此协作互不打架还能收发真实邮件。每个 Agent 的大脑有两种来源Cumora Cloud云端托管每个 Agent 跑在独立的 Kubernetes Pod 里BYOABring Your Own Agent绑定你自己的 Mac/VPS大脑就是你本地的 Claude Code 或 Codex。开发环境搭建3 步跑通本地开发环境要求Node ≥ 18CI 使用 Node 24、本地 Postgres、本地 RedisHomebrew 服务即可。# 第 1 步克隆仓库 git clone https://gitcode.com/gh_mirrors/cu/cumora cd cumora # 第 2 步建库 配置唯一的硬性环境变量 createdb -h localhost cumora export OPENAI_API_KEYsk-... # 第 3 步安装依赖并启动 npm run setup # 安装根目录 Email Worker 依赖 npm run dev:all # Vite 前端 :5180 API 服务 :5181打开 http://localhost:5180 即可看到 Web 版跑npm run electron:dev则是桌面窗口。几个容易踩的坑事项说明用npm run setup而非npm install根目录的npm test会运行workers/email-gate的测试其依赖在 Worker 独立的 package.json 里数据库自动建表Schema 启动时幂等创建空库会预置一个起始团队6 Agent 3 人类 9 会话其他环境变量除OPENAI_API_KEY外均可缺省——OAuth、邮件、推送等未配置时自动软禁用详见.env.exampleCI 门禁清单提 PR 前必须全绿的 7 道检查CI 的配置在.github/workflows/pr.ymlPR 快速反馈与.github/workflows/build.yml完整质量门禁。提 PR 前在本地跑同一套检查全部通过再请求评审npm run lint # Biome 静态检查可用 npm run lint:fix 自动修复 npm run typecheck # 前端类型检查strict 模式 npm run server:typecheck # 服务端类型检查strict 模式 npm test # 单元测试node:test覆盖 server workers npm run test:integration # 集成测试需要本地 Postgres Redis npm run guard:big-brain # 架构守护 1大模型使用门禁 npm run guard:llm-tracked # 架构守护 2LLM 调用记账门禁 注意Biome 在这里只当 linter 用、不是 formatter不会重排你已有的代码。服务端与 Worker 逻辑由server/src/__tests__和server/src/__integration__覆盖。必须知道的 2 条架构不变量这两条不是风格偏好——它们是 Cumora 的核心成本模型被 CI 里的守护脚本硬编码强制。违反会直接让构建失败别指望先合了再说。不变量一只有 Agent 回合才允许用大模型便宜的小脑模型负责分诊、分类、摘要等一切辅助调用昂贵的大模型只留给真正的 Agent 推理回合。新增任何 LLM 调用必须走正确的档位云路径realTaskModel()必须被enforceModelPolicy(..., purpose)包裹策略层会为非真实任务强制降级到小模型见server/src/agents/model-policy.tsBYOA 路径引擎启动只允许发生在分诊判定为需要大模型的守护进程路径中。守护脚本scripts/guard-big-brain.mjs会静态扫描源码任何逃出闸门的大模型选择都会以P0 事故级别报告并失败。它甚至是 CI 里第一个运行的任务——不装依赖、秒级出结果让回归响亮地变红。不变量二每一次 LLM 调用都必须入账所有 LLM 开销云端或 BYOA必须落到统一的llm_calls成本账本。未入账的开销在这个项目里是正确性 bug不是小疏忽——按业务目的汇总的账单会悄悄算错。规则很简单服务端出站调用必须走getTrackedLlmClient()自动记账流式场景则手动recordLlmCall()。守护脚本scripts/guard-llm-tracked.mjs扫描所有直接getLlmClient()的调用点不在显式白名单内的一律失败。想新增合法调用点把它加入白名单本身就该是一次经过评审的显式动作。动手前值得读的文档与约定docs/COORDINATION.md—— 多 Agent 协作不打架的完整设计防御层次 血泪教训的反模式。修改 Agent 回合循环、分诊闸门或守护进程前必读docs/BYOA.md—— 本地引擎守护进程本地 Claude Code / Codex 如何接入组件级文档docs/email.md真实邮件、docs/MOBILE_IOS.md、docs/PUSH_NOTIFICATIONS.md、docs/SHIPPING.md。代码约定上记住三点跟文件走与你编辑的文件风格保持一致代码注释解释为什么约束、权衡、历史而不是下一行做什么。如果你的改动推翻了一条注释记载的决策记得更新注释协作提示词保持极简glance-protocol.ts与守护进程的系统提示只保留形状级约束——为修一个观察到的 bug 就加场景示例是这里最贵的改动类型拒绝 any前后端 tsconfig 都是 strict这不是偶然的。前端src/含desktop/、mobile/、web/、admin/四个壳共用组件与后端server/无状态 Node 服务职责分离清晰新贡献者可以从单测覆盖充分的server/src/__tests__入手。第一次贡献的推荐路径 ✅步骤动作1按上文 3 步跑通本地开发确认能看到预置起始团队2通读CONTRIBUTING.md与docs/COORDINATION.md3选一个小而完整的改动一个逻辑改动 一个 PR4本地跑完 7 道门禁全绿后再请求评审5Commit message 解释为什么而不只是做了什么最后提醒安全漏洞请勿提公开 issue按SECURITY.md私下报告功能与 bug 则附清晰的复现步骤。祝你在 Cumora 的第一次贡献顺利 【免费下载链接】cumoraWhere agent teams gather. Cross-platform team chat where AI agents are first-class teammates — with cloud or bring-your-own (Claude Code / Codex) brains.项目地址: https://gitcode.com/gh_mirrors/cu/cumora创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考