Maestro贡献者指南:新开发者提交第一个PR的完整教程
【免费下载链接】MaestroAgent Orchestration Command Center项目地址: https://gitcode.com/GitHub_Trending/maestro41/Maestro
Maestro 是一个跨平台的 AI 智能体编排桌面应用(Agent Orchestration Command Center),支持并行运行 Claude Code、Codex、OpenCode 等多个 AI 编程代理。本文是面向新开发者的 Maestro 贡献者指南,带你从零完成开发环境搭建、了解项目结构,直到顺利提交你的第一个 PR。
为什么要贡献 Maestro?
对初学者来说,Maestro 是一个理想的练手项目:
- 结构清晰:代码按
main(Electron 主进程)、renderer(React 前端)、cli(命令行工具)、shared(共享代码)分层组织,职责边界明确 - 文档完善:仓库自带 CONTRIBUTING.md、ARCHITECTURE.md 和 20 多篇 docs/agent-guides/ 开发指南
- 门槛友好:新增主题、设置项、文档页面都是适合新手的小任务,且项目使用 AI 自动代码审查,反馈及时
⚡ 项目迭代很快,CONTRIBUTING.md 开头特别提醒:PR 容易与最新代码不同步,提交前请尽量 rebase 到最新分支。
一键搭建 Maestro 开发环境
贡献前的第一步是跑起来。环境要求很简单:Node.js 20+、npm、Git。
环境搭建步骤
# 克隆仓库 git clone https://gitcode.com/GitHub_Trending/maestro41/Maestro cd Maestro # 安装依赖(自动安装 husky 提交钩子,无需额外操作) npm install # 启动开发模式(支持热重载) npm run dev完整命令说明见 CONTRIBUTING.md。
三种开发模式怎么选
| 命令 | 数据目录 | 适用场景 |
|---|---|---|
npm run dev | maestro-dev/(独立) | 日常开发,可与正式版同时运行 |
npm run dev:prod-data | 生产数据 | 用真实会话调试(需先关闭正式版) |
npm run dev:demo | /tmp/maestro-demo | 演示、截图、干净状态测试 |
📌 小技巧:npm run dev使用隔离数据目录,意味着你可以用正式版 Maestro 来开发开发版 Maestro,非常符合项目"键盘党"的风格。
多分支并行开发
如果你在多个 git worktree 中同时开发不同分支,可以用VITE_PORT环境变量错开端口,互不冲突:
# 主 worktree(默认端口 17173) npm run dev # 第二个 worktree VITE_PORT=17174 npm run dev读懂项目结构:先找对文件再动手
改代码前,花 5 分钟看一遍目录地图,能省掉大量摸索时间:
src/ ├── main/ # Electron 主进程(Node.js 后端) ├── renderer/ # React 前端(桌面 UI) │ ├── components/ # 组件 │ ├── hooks/ # 自定义 Hook │ └── constants/ # 主题、快捷键等 ├── cli/ # 命令行工具 maestro-cli ├── shared/ # 跨进程共享代码 └── web/ # Web 界面(移动端远程控制) docs/ # 用户文档(Mintlify)几个高频修改点,新手可以重点认识:
- 改 UI 组件:src/renderer/App.tsx 是总协调器
- 加设置项:
src/renderer/hooks/useSettings.ts - 加快捷键:src/renderer/constants/shortcuts.ts
- 加主题色:src/renderer/constants/themes.ts + src/shared/theme-types.ts
详细架构请阅读 ARCHITECTURE.md,编码时的速查手册是 CLAUDE.md。
新手友好任务清单:从哪里开始改代码
CONTRIBUTING.md 的"常见开发任务"章节列出了标准做法,以下三个任务最适合第一次 PR:
- 新增一个主题:在
themes.ts添加色板定义,再把 ID 加入ThemeId类型,16 个现有主题就是最好的参考 - 更新文档页面:在 docs/ 下新增 markdown 文件并注册到 docs/docs.json,还要求用 demo 模式截图(
rm -rf /tmp/maestro-demo && npm run dev:demo)保证视觉一致 - 修复 lint 报错或补充测试:跑一遍
npm run lint && npm test,把 CI 会报的问题顺手修掉
如果做功能性的改动,项目还有几个硬性约定(见 CONTRIBUTING.md):
- TypeScript 严格模式,所有数据结构都要有 interface
- 外部命令一律使用
execFileNoThrow,禁止 shell 拼接执行 - 所有 IPC 通信必须走 preload 脚本,保持上下文隔离
- 性能优先:
useMemo缓存计算、3 秒级轮询代替 1 秒级、useEffect中清理所有定时器
提交前的自动化检查:测试与 Lint
Maestro 使用Vitest作为测试框架(配置见 vitest.config.mts),测试按模块组织在src/__tests__/下:
npm run test # 运行全部单元测试 npm run test:watch # 监听模式,保存即重跑 npm run lint # TypeScript 类型检查(renderer + main + cli) npm run lint:eslint -- --fix # ESLint 自动修复提交钩子帮你把关
项目通过 Husky + lint-staged 实现了提交时自动检查:你执行git commit时,只对暂存文件跑 Prettier 格式化和 ESLint,有无法自动修复的错误会直接拦截提交。ESLint 规则定义在 eslint.config.mjs,重点检查 React hooks 规则、未使用变量等常见问题。
⚠️ 钩子会在
npm install时自动装好,一般不需要手动配置;仅在紧急情况下才使用--no-verify绕过。
写好你的第一个 PR:提交信息与目标分支
遵循 Conventional Commits
提交信息使用约定式格式,一眼看懂改动类型:
feat: new feature # 新功能 fix: bug fix # 修复 docs: documentation # 文档 refactor: code refactor # 重构 test: test additions # 测试 chore: tooling changes # 构建/工具选对目标分支:main 还是 rc?
Maestro 采用奇偶版本号双分支模型:main是稳定分支(0.15.x 等奇数版本),rc是预发布分支(0.16.x 等偶数版本)。对新手只需记住:
- 🐛Bug 修复和小改进→ 提交到
main - ✨新功能和较大改动→ 提交到
rc - ❓拿不准→ 提交到
rc(从 rc 摘到 main 比反向更简单)
详见 CONTRIBUTING.md 分支策略 与 PR 目标分支说明。
PR 提交检查清单
开 PR 前,确保这 6 项全部通过(原文见 CONTRIBUTING.md):
npm run lint && npm run lint:eslint全部通过npm test全部通过- 用
npm run dev手动验证了改动的功能 - DevTools 控制台没有新增报错
- UI 改动在深色/浅色主题下都正常
- 提交信息符合约定式格式
PR 描述要写清楚三件事:改了什么、为什么改、怎么测试。UI 改动记得附截图——项目文档要求截图统一用 demo 模式拍摄、PNG 格式、存放于docs/screenshots/。
AI 自动代码审查:PR 提交后会发生什么
打开 PR 后,两个 AI 工具会接力审查你的代码:
- CodeRabbit:逐行审查,发布 PR 摘要、行内评论,可用
@coderabbitai review手动触发 - Greptile:索引整个仓库做架构级审查,在 PR 评论中
@greptile提问即可
💬 两个工具都可以对话式追问——对评论直接回复你的疑问,它们会像真人一样解释,这对新手理解自己的代码为什么被打回特别有用。
卡住了?调试指南与求助渠道
CONTRIBUTING.md 内置了一份实用调试手册(Debugging Guide),覆盖最常见的四类问题:
| 症状 | 排查方向 |
|---|---|
| 焦点不生效 | 检查tabIndex、stopPropagation是否吞了事件 |
| 设置不保存 | 确认包装函数调用了window.maestro.settings.set() |
| 弹窗 Escape 无效 | 检查是否注册到 layer stack 及优先级配置 |
| 主题色不生效 | 用theme.colors.*内联样式,禁止硬编码色值 |
打开 DevTools 的两种方式:Quick Actions(Cmd+K→ "Toggle DevTools"),或启动时设置DEBUG=true。
其他可深入的参考资料:
- 测试写法规范:docs/agent-guides/TEST-PATTERNS.md
- IPC 通信模式:docs/agent-guides/IPC-PATTERNS.md
- UI 组件模式:docs/agent-guides/UI-PATTERNS.md
- 状态管理模式:docs/agent-guides/STATE-PATTERNS.md
总结:你的第一个 PR 路线图
- ✅
git clone+npm install+npm run dev,应用成功启动 - ✅ 通读 CONTRIBUTING.md,挑一个新手友好任务(主题、文档、小修复)
- ✅ 从
main或rc切出功能分支,按约定风格编码 - ✅ 本地跑通
npm run lint、npm run lint:eslint、npm test - ✅ 用 Conventional Commits 写提交信息,按分支策略选择目标分支
- ✅ 提交 PR,配合 CodeRabbit / Greptile 的 AI 审查意见逐条处理
Maestro 团队用"流畅的界面和更低的能耗"作为项目的根本目标——你的每一个 PR,都是让这个 AI 编排中心变得更快的砖瓦。祝你的第一个 PR 顺利合入!🚀
【免费下载链接】MaestroAgent Orchestration Command Center项目地址: https://gitcode.com/GitHub_Trending/maestro41/Maestro
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考