生命周期规范

文件

AgentSeek 从当前目录向上查找生命周期规范:

.agentseek/lifecycle.toml

其他项目文件不参与生命周期发现。

编写版本与 catalog 边界

AgentSeek 当前加载并验证编写的生命周期版本 12。现有的人工使用命令及其 v1 行为保持兼容。

编写版本或位置 当前边界
1, 2 编写的生命周期文件会被加载和验证。
templates/ core 仍是 version = 1 兼容镜像。
agentseek-ai/agentseek-templates 锁定的独立 v0.1.0 catalog 为新项目提供 version = 2 模板。
规范化与机器接口 V1 和 v2 都投影到同一个安全规范化模型;info --jsondoctor --json 提供公共 schema 版本 1

完整的编写契约见已发布的 lifecycle v2 概览 (lifecycle-v2-service-discovery.md)。 精确的规范源地址为 https://github.com/ob-labs/agentseek/blob/main/specs/lifecycle-v2-service-discovery.md

生命周期 v1 形状

version = 1
template = "bub/default"
name = "My Bub Agent"
env_file = ".env"

[tools]
required = ["uv", "node", "npm"]

[paths]
required = ["frontend/package.json", "frontend/node_modules"]

[env.BUB_MODEL]
required = true
default = "openai:gpt-4o-mini"

[env.BUB_API_KEY]
required = true
aliases = ["BUB_OPENAI_API_KEY"]

[services.app]
url = "http://127.0.0.1:5173"

[processes.frontend]
command = ["npm", "run", "dev"]
cwd = "frontend"

[checks.frontend]
type = "http"
target = "http://127.0.0.1:5173"
timeout = 2
attempts = 3

[tasks.frontend]
description = "Install frontend dependencies."
command = ["npm", "install", "--prefix", "frontend"]

段落

段落 作用
env_file 可选项目本地 env 文件,只用于声明的环境检查。它不会注入子进程。
tools 项目需要的可执行文件。
paths 必需的本地文件或目录。
env.<name> AgentSeek 应检查的环境变量。默认值优先级低于 env_file 和 shell 变量。
services.<name> agentseek info 展示的公开本地服务端点。
processes.<name> agentseek dev 启动的长运行命令。
checks.<name> agentseek doctor --live 使用的 HTTP live 就绪检查。2xx 和 3xx 响应成功。
tasks.<name> agentseek task <name> 运行的一次性任务。cwd 是项目相对路径,且必须存在。

生命周期 v2 的 HTTP 检查要求 timeout 为大于 0 且不超过 300 的有限秒数, attempts 为正整数。

环境检查

AgentSeek 从生命周期默认值、可选 env_file 和当前进程环境检查环境需求:

lifecycle default < env_file < shell environment

只有 [env.<name>] 下声明的 key 及其 aliases 会从 env_file 读取。 模板不需要声明项目可能使用的每一个运行时变量。AgentSeek 不会把 env 文件或 生命周期默认值传给子进程。

生命周期 v1 第一阶段范围

Version 1 支持必需工具、必需路径、项目环境需求、HTTP live 检查、长运行进程和一次性任务。 它不支持可选 tool/path 检查、TCP 检查、进程级环境覆盖、多个 env 文件或 env 插值。

生命周期 v2 编写字段

V2 保留 v1 的 toolspathsenv 段,并仍要求至少声明一个 process。根字段为 versiontemplatename;可选字段为 descriptionenv_fileguidetemplatename 必须非空。guideenv_filepaths.required 以及 process/task 的 cwd 必须是项目相对路径,且解析后仍受限于项目根目录。

每个 services.<id> 条目包含 nameurlkinddisplayprimarydescription、可选 tech 与有类型的 linkskind 只能是 webapiprotocoldatabaseotherdisplay 只能是 defaultadvancedhiddendisplay 只是展示提示:它绝不控制认证、授权、网络暴露或 process 启动。

V2 默认使用同 ID 关系:同名 process 提供 service,同名 check 检查 service。需要显式关系时, 使用 processes.<id>.provideschecks.<id>.service 以及 tasks.<id>.startstasks.<id>.stops。标识符必须符合 v2 标识符语法,引用的每个 service 都必须存在。声明 service 的项目必须恰有一个非隐藏的 primary = true service;check 必须有同 ID 或显式 service。验证还会拒绝未知字段、空 command、重复的 tools.requiredpaths.required 值、不安全的可执行文件名、路径、端点及有类型的引用 URL。

公开命令

命令 行为
agentseek info [--verbose] [--json] 打印项目事实,或以 JSON 输出确定且安全的生命周期元数据。
agentseek doctor [--live] [--strict] [--json] 检查 tools、paths、env 和可选 live endpoints;--json 不能与 --strict 同时使用。
agentseek dev [--dry-run] [--skip-check] 打印或启动声明的开发进程。--skip-check 只跳过预先的 strict doctor 检查。
agentseek task --list 列出 tasks 下声明的任务。
agentseek task <name> 运行一个声明的一次性任务。

错误

条件 结果
缺少 .agentseek/lifecycle.toml Exit code 2
生命周期规范版本不支持 Exit code 2
生命周期规范无效 Exit code 2