开发与扩展 Symphony
- 文档状态
- draft
- 文档 Owner
- DOC
- 事实源
- canonical-docs
- 更新
- 2026/10/16
先确定要修改核心机制、来源适配,还是团队项目扩展,再定位源码与已有检查。AutoDev 的核心是 Symphony;Plane 产品、文档站与团队审核桥分别有自己的 owning 仓库和交付合同。
确认修改归属
| 修改目标 | 先读什么 | 实现位置如何确定 |
|---|---|---|
| 调度、认领、并发、续跑与重试 | 执行循环和任务生命周期 | 所采用 Symphony revision 的 Orchestrator / AgentRunner |
| 工作目录、hook 与清理 | 工作空间 | 同一 revision 的 Workspace 与项目 hook |
| 来源字段、范围与原生工具 | 任务来源 | 对应 tracker adapter / client / agent_tool,不把来源状态规则放进通用核心 |
| Plane CAS、Backlog、审核桥或多后端 | 扩展边界与团队 Code Map | 项目注册的团队接入仓及各自固定 locator |
| 文档与索引 | 本文档仓 AGENTS、来源锁与导航输入 | 文档源码及受控外部生成流程,不手工编辑生成物 |
本文读取的是官方 be10a1b79df723d6d7612b5651c8522704dafb2e,不是目标团队服务的 installed revision。实际改动应从 owning 注册信息解析仓库和最新授权基线;不能以本文固定示例替换当前项目配置。
官方参考源码地图
以下路径均相对固定上游仓库的 elixir/;入口见固定源码树。
| 路径 | 关注点 | 阅读入口 |
|---|---|---|
lib/symphony_elixir/orchestrator.ex | tick、认领、派发前刷新、核对、重试与 snapshot | maybe_dispatch、dispatch_issue、reconcile_running_issues、failure_retry_delay |
lib/symphony_elixir/agent_runner.ex | 目录准备、首轮 / 续轮、来源刷新 | run、run_on_worker_host、do_run_codex_turns |
lib/symphony_elixir/workspace.ex | 目录 key、边界、hook、复用与清理 | create_for_issue、workspace_key、remove_issue_workspaces |
lib/symphony_elixir/tracker.ex、tracker/issue.ex | 读边界、注册表、会话绑定工具、归一化模型 | fetch_issues_by_states、fetch_issues_by_ids、bind_agent_tools、routable? |
lib/symphony_elixir/{linear,github,jira,asana,gitlab}/ | 来源特有配置、读取转换和原生工具 | 各 adapter.ex、client.ex、agent_tool.ex |
lib/symphony_elixir/workflow.ex、workflow_store.ex、config.ex、config/schema.ex | WORKFLOW 读取、有效配置、重载与 schema | 同 revision 的加载与解析流程,区分磁盘内容和生效设置 |
lib/symphony_elixir/cli.ex、http_server.ex、log_file.ex | 启动参数、可选 HTTP 与日志路径 | evaluate、start_link、default_log_file |
lib/symphony_elixir_web/ | dashboard、路由、API 与状态投影 | Router、ObservabilityApiController、Presenter |
团队运行仓、live-host WORKFLOW 和扩展安装路径不在上述公共源码中;沿团队 Code Map的固定版本继续定位,保留其各自 commit,不把多个历史版本拼成一个运行版本。
按改动选择现有检查
固定上游的 elixir/test/symphony_elixir/ 包含 core_test.exs、workspace_and_config_test.exs、app_server_test.exs、cli_test.exs、orchestrator_status_test.exs、ssh_test.exs 与各来源 *_adapter_test.exs 等。它们是既有测试阅读入口;文件存在不证明覆盖完整或当前检查通过。修改前阅读具体测试与 fixture,再按 owning 仓要求选择针对性检查,不为文档改字机械新增测试。
在获授权的上游实现仓外部 CI / 执行环境中,现有总入口是:
cd elixir
mise exec -- make all
固定 Makefile把 all 路由到 ci,依次 setup、build、格式检查、lint、coverage 与 dialyzer;mix.exs中的 setup / build 分别调用 deps.get / escript.build。本文只核对命令定义,没有执行或宣称通过。
live E2E 会创建外部资源并运行真实 Agent,须有相应范围与授权,不能当作无副作用默认检查。本知识库仓库继续禁止本地 build / test / validator,不能因为本页出现实现仓命令而在文档仓执行。
交付与调试证据
先复现具体行为,记录版本、输入、预期与实际结果;涉及来源时核对原生任务身份,涉及执行时核对同一实例快照,涉及外部写入时核对 provider 回执。日志与观察方法见Symphony 维护。
交付绑定精确 commit、PR / MR、检查结果与适用兼容、迁移和恢复说明。源码通过不证明已安装或运行;部署与真实任务另取证。业务 worker 修改自身服务时只交付源码,由进程外 owning CI 按既有流程替换宿主,不自行重启或覆盖自己的执行服务。