Skip to main content

开发与扩展 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.extick、认领、派发前刷新、核对、重试与 snapshotmaybe_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.exWORKFLOW 读取、有效配置、重载与 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 按既有流程替换宿主,不自行重启或覆盖自己的执行服务。

继续阅读:工程文档使用方法 · 系统与仓库地图 · 开发流程。