Eve Manifest Authoring 用于编写和维护 Eve manifest 文件(.eve/manifest.yaml),其核心理念是让 manifest 成为构建与部署行为的唯一事实来源。
用途
该技能面向需要修改或新增服务、环境、流水线、工作流以及密钥插值配置的场景,帮助以声明式方式维护构建与部署行为。
主要能力
- 服务定义:在 services 下提供 image,并可选提供 build(context 与 dockerfile),使用 ports、environment、healthcheck、depends_on。可用 x-eve.external: true 与 x-eve.connection_url 表示外部托管服务;用 x-eve.role: job 表示一次性服务(如迁移、种子)。
- 构建配置:build.context 指定构建上下文目录,build.dockerfile 可选,默认取 context/Dockerfile。每个部署流水线应在 release 之前包含 build 步骤,以生成被追踪的 BuildSpec/BuildRun 记录与镜像摘要。
- 环境与流水线:通过 environments.<env>.pipeline 将环境关联到流水线;设置后 eve env deploy <env> 会触发该流水线而非直接部署。可用 pipeline_inputs 提供默认输入,运行时用 --inputs 覆盖,用 --direct 绕过流水线直接部署。流水线步骤可为 action、script 或 agent,action.type: create-pr 用于 PR 自动化。
- 工作流:位于 workflows 下,通过 CLI 调用,db_access 生效。步骤支持 harness、harness_profile、harness_options、condition 以及 git 控制。工作流与步骤级 scope 块可收窄步骤 job token 与组织文件系统挂载,支持 orgfs、orgdocs、envdb、cloud_fs 轴;步骤 scope 与工作流 scope 取交集,调用 scope 可收窄不可放宽。请求提供的 scope 需要 jobs:harness_override 权限。
- 数据库:用 x-eve.role: managed_db 声明平台供应的数据库(class、engine、engine_version),不由 K8s 部署,由编排器在首次部署时供应,可用 ${managed.<service>.<field>} 引用。数据库迁移使用 eve-migrate 镜像(public.ecr.aws/w7c4v0w3/eve-horizon/migrate:latest),使用带时间戳前缀的纯 SQL 文件,记录在 schema_migrations;迁移步骤必须在 deploy 之后运行。
- Registry 模式:registry: "eve" 为 Eve 原生 registry(内部 JWT 认证);registry: "none" 禁用 registry 处理;BYO registry 需提供 host、namespace 与 auth(username_secret、token_secret)。
- 自定义域名与出口:ingress.domains 声明自带主机名(最多 10 个),首次部署时绑定;networking.egress: stable 将 pod 调度到稳定出口节点组并使用 hostNetwork: true,仅在需要时启用。
- 项目品牌与认证:x-eve.branding 配置邀请与魔法链接邮件的品牌;x-eve.auth.login_method 支持 password_or_magic_link、password、magic_link;org_access.domain_signup 配置预批准邮箱域名;allowed_redirect_origins 配置自定义域名应用的重定向来源。
- 服务令牌权限:每个部署服务自动注入只读默认的 EVE_SERVICE_TOKEN,需显式声明所需写作用域(如 jobs:write、events:write、threads:write),未声明即拒绝。
- 平台注入环境变量:EVE_API_URL、EVE_PUBLIC_API_URL、EVE_PROJECT_ID、EVE_ORG_ID、EVE_ENV_NAME,可在服务的 environment 中覆盖。
- 插值与密钥:环境插值 ${ENV_NAME}、${PROJECT_ID}、${ORG_ID}、${ORG_SLUG}、${COMPONENT_NAME};密钥插值 ${secret.KEY};托管 DB 插值 ${managed.<service>.<field>}。本地用 .eve/dev-secrets.yaml 覆盖,生产通过 API 设置真实密钥。
- x-eve 扩展:顶层 defaults、agents(profiles、councils、availability 规则)、packs、chat.config_path、agent 与 teams 配置路径;服务级扩展包括 ingress、role、api specs、worker pools、cli、object_store、networking、permissions。Cloud FS 挂载通过 integrations 配置而非 manifest。
- App CLI:建议每个有 API 的应用把服务 API 封装为 CLI 并在 manifest 注册,agent 更偏好 CLI 命令。平台会自动发现带有 x-eve.cli 或 x-eve.api_spec 的服务并放到 $PATH。CLI 名称须为小写字母数字加连字符且项目内唯一。
- Worker 工具链:agent 声明所需运行时工具链(python、media、rust、java、kotlin),平台以 init container 注入;工作流步骤可覆盖。
使用方式
以 v2 最小骨架为例:schema: eve/compose/v2、project、registry、services、environments、pipelines。通过 eve project sync、eve env deploy 等 CLI 命令操作;在流水中按 build → release → deploy(→ migrate)顺序编排。旧版清单若使用 components: 需迁移到 services: 并添加 schema: eve/compose/v2,保持 ports 与 env 键不变。
适用场景
适用于使用 Eve 平台管理多服务应用构建与部署、需要按环境配置流水线与工作流、声明托管数据库与迁移、管理 registry 与密钥、配置品牌与登录方式以及为 agent 注册 CLI 与工具链的团队。
限制
每个部署流水线应在 release 前包含 build 步骤;迁移步骤必须在 deploy 之后;迁移应使用平台迁移运行器而非 Flyway、TypeORM 或 Knex;domain_signup 的 v2 形状要求每个 domains 条目为对象且含 target_org,且需出现在 allowed_orgs 中;无效于 login_method: password;ingress.domains 最多 10 个。收费、价格与平台支持范围暂未提供。