这个目录包含 Maestro 真正运行的 Elixir/OTP 实现。
根目录 README 解释项目价值;这份文档解释如何启动运行时、体验本地 demo、接入真实系统,以及应该继续阅读哪些运维文档。
Maestro 会把一个项目系统里的任务,变成一次可追踪的 AI Agent 执行过程:
从 TAPD / Linear / Memory 读取或同步任务
-> 在 Maestro 自己的运行环境中创建独立工作区
-> 按配置把目标 Git 仓库准备到工作区
-> 启动 Codex / Claude Code / OpenCode / Mock
-> 让 Agent 在仓库副本中分析、修改或产出建议
-> 记录日志、工具调用、diff、摘要和链接
-> 把结果写回项目系统
独立工作区不是创建在 TAPD 或 GitHub 里,而是创建在 Maestro 运行所在的本机、SSH 机器或 worker 环境中。它的作用是让每个任务有自己的目录、代码副本、日志和临时文件,便于并行、隔离、清理和复盘。
Maestro 的目标不是替代某个 Coding Agent,而是让团队能从真实项目任务中调度和管理这些 Agent。
对外项目名是 Maestro。
当前运行时中仍有一些来自 Symphony 的兼容命名:
SymphonyElixir模块名./bin/symphonyCLI 入口.symphony运行目录SYMPHONY_*环境变量
运行当前代码时请继续使用这些名字。它们是兼容命名,不代表另一个产品。
Maestro 仍处于早期阶段,适合可信评估、实验和试点部署。
建议先在本地或测试环境运行。接入真实项目系统、真实仓库或无人值守写入前,需要审查凭据、仓库权限、安全边界和合规要求。
这是最安全的体验方式,不需要 Linear、TAPD、GitHub、CNB、Codex、Claude Code、OpenCode 或外部凭据。
git clone https://github.com/joosure/Maestro.git
cd Maestro/elixir
mise trust
mise install
mise exec -- mix setup
mise exec -- mix build
mise exec -- ./bin/symphony \
--i-understand-that-this-will-be-running-without-the-usual-guardrails \
--template memory/no_repo/mock \
--port 4000打开:
http://localhost:4000
这会启动一个本地流程,使用:
- 本地模拟任务源;
- 本地模拟代码平台;
- mock agent;
- 端口
4000上的 dashboard/API。
Workflow template 可以理解成“运行配方”。它决定:
任务从哪里来 / Git 仓库或代码平台在哪里 / 用哪个 Agent 执行
| Template | 含义 | 适合场景 |
|---|---|---|
memory/no_repo/mock |
本地模拟任务 + 无真实仓库 + mock agent | 第一次安全体验 |
linear/github/codex |
Linear + GitHub + Codex | 用 Codex 处理 Linear/GitHub 任务 |
linear/github/claude_code |
Linear + GitHub + Claude Code | 用 Claude Code 处理 Linear/GitHub 任务 |
tapd/github/codex |
TAPD + GitHub + Codex | TAPD 任务 + GitHub 仓库 |
tapd/cnb/opencode |
TAPD + CNB + OpenCode | TAPD/CNB 流程 |
tapd/cnb/claude_code |
TAPD + CNB + Claude Code | TAPD/CNB 流程 |
完整说明见 Workflow templates。
只配置当前模板需要的凭据。
TAPD:
export TAPD_API_USER=...
export TAPD_API_PASSWORD=...
export TAPD_WORKSPACE_ID=...Linear:
export LINEAR_API_KEY=...
export LINEAR_PROJECT_SLUG=...仓库输入:
export SOURCE_REPO_URL=https://github.com/example-user/sample-repo.git
export SOURCE_REPO_BASE_BRANCH=main
export SOURCE_REPO_PROVIDER_REPOSITORY=example-user/sample-repo接入真实系统前,建议显式设置独立工作区目录:
export SYMPHONY_WORKSPACE_ROOT=/path/to/isolated/maestro-workspaces例如 TAPD + GitHub + Codex:
./bin/symphony \
--i-understand-that-this-will-be-running-without-the-usual-guardrails \
--template tapd/github/codex \
--port 4000例如 Linear + GitHub + Codex:
./bin/symphony \
--i-understand-that-this-will-be-running-without-the-usual-guardrails \
--template linear/github/codex \
--port 4000真实模板可能会更新项目系统、创建分支、推送 commit 或打开 PR。请只在可信测试环境或明确允许的生产环境中运行。
一个 workflow 文件包含两部分:
- YAML front matter:配置项目系统、仓库、Agent、工作区和限制。
- Markdown 正文:给 Agent 的 prompt。
示意:
---
tracker:
kind: tapd
workspace:
root: $SYMPHONY_WORKSPACE_ROOT
repo:
provider:
kind: github
agent_provider:
kind: codex
---
You are working on {{ issue.identifier }}.建议先使用模板,再写自定义 workflow。
使用 --port 开启 dashboard/API。
| 路径 | 用途 |
|---|---|
/ |
Dashboard |
/issues/:issue_identifier |
任务详情页 |
/api/v1/state |
运行状态 JSON |
/api/v1/<issue_identifier> |
任务详情 JSON |
/api/v1/refresh |
刷新接口 |
默认结构化日志在 ./log/symphony.log。
标准本地质量门禁:
make all提交前运行 secret scan:
make secret-scanTracker smoke 示例:
mix tracker.smoke --template memory/no_repo/mock --issue local-memory-1 --jsonLive test 和 destructive smoke 可能会创建真实任务、运行真实 Agent、推送分支或创建 PR。只应在一次性或明确批准的环境中运行。
- Workflow templates:选择运行配方。
- Operations guide:在真实环境中安全运行。
- Logging guide:日志、事件、脱敏和 dashboard。
- Repo provider guide:GitHub/CNB 仓库与 PR 操作。
- Testing guide:本地、live、smoke 和 destructive validation。
- Agent provider docs:Codex、Claude Code、OpenCode 的 provider 说明。