模板编写规范

本规范适用于新增模板或对现有模板进行较大调整。框架实现可以不同,但生成项目必须保持统一的 AgentSeek 接口。

新模板在独立的 agentseek-ai/agentseek-templates 仓库中开发。core 仓库的 templates/ 是为已发布 0.0.x 客户端冻结的 lifecycle-v1 兼容镜像,不再承载常规模板功能开发。

必需结构

路径 要求 验证依据
templates/<type>/<name>/cookiecutter.json 必需。定义渲染参数和默认值。 test_templates_render.py 中的模板发现逻辑。
templates/<type>/<name>/README.md 必需。说明模板用途和渲染参数。 test_registered_templates_have_readme
templates/<type>/<name>/{{cookiecutter.project_slug}}/ 必需。包含生成项目。 Cookiecutter 渲染测试。
生成项目的 pyproject.toml 内置 Python 模板必需。项目名不能为空,依赖列表必须有效。 test_template_renders_without_unrendered_jinja
生成项目的 .agentseek/lifecycle.toml 必需。声明模板身份和本地生命周期行为。 渲染测试和生命周期 smoke 测试。
生成项目的 .env.example 当运行时从环境变量读取配置时必需。 生成 README 和生命周期声明。
生成项目的 README.md 必需。给出从配置到首次成功运行的完整路径。 渲染检查和模板 smoke 验证。

注册表

字段 要求
Key 使用 type/name,并与模板目录和生命周期中的 template 值一致。
描述 用一句话说明生成应用及其主要差异。
唯一来源 独立 catalog 中的 templates/index.json。每个 catalog 模板目录都必须注册。
新类型 必须单独评审 CLI 和测试;只新增目录不够。

模型服务配置

变量 何时需要 规范
AGENTSEEK_MODEL 模板选择托管聊天模型时。 模板面向用户的主要模型配置。可以兼容旧别名。
AGENTSEEK_API_KEY 单个 OpenAI-compatible 凭证可以配置运行时时。 主要通用凭证。运行时代码可以把它适配到 SDK 变量。
AGENTSEEK_API_BASE 支持自定义 OpenAI-compatible endpoint 时。 主要通用 endpoint 配置。留空表示使用提供方默认值。
AGENTSEEK_MODEL_PROVIDER 支持多个原生模型提供方时。 选择 provider adapter,模型值必须与所选 provider 匹配。
Provider 原生密钥 所选 SDK 要求独立凭证时,例如 ANTHROPIC_API_KEYGOOGLE_API_KEY 可以按需提供。.env.example、生命周期检查、运行时代码和 README 必须使用相同名称和优先级。

只要概念适用,公开的模板配置统一使用 AGENTSEEK_*。框架原生变量只作为 adapter 或兼容别名,不能形成第二套未记录的配置方式。

生命周期声明

区块 要求
根字段 version = 2、准确且非空的 template = "type/name"、非空 name、有用的 description、项目相对 guide;声明环境检查时使用 env_file = ".env"
[tools] setup 或本地开发前必需的所有可执行文件。
[paths] agentseek doctor 需要检查的生成文件或安装目录。
[env.<name>] agentseek doctor 需要检查的配置。别名必须与运行时代码一致。
[services.<name>] 每个稳定本地 endpoint,包含 namekinddisplayprimarydescription、可选 tech 和有用的类型化 links。必须恰有一个非隐藏主服务。
[processes.<name>] agentseek dev 启动的所有长时间运行进程。至少需要一个进程;同 ID 推断不够时使用 provides
[checks.<name>] 对每个可检查服务声明 HTTP readiness check;同 ID 推断不够时使用 service
[tasks.<name>] 通过 agentseek task 暴露的一次性动作。每个 task 都必须有描述;用 startsstops 表达服务效果。

display 只决定展示建议:default 优先展示,advanced 按需展示,hidden 不生成默认动作。它不控制认证、授权、网络暴露或启动。

每个 catalog 模板还包含内部 Cookiecutter 值 _agentseek_source_url_agentseek_source_ref。它们必须指向 catalog release 配对的 core 仓库与精确 依赖快照;常规模板修改不能把它们替换为 catalog 仓库或可变分支。

生命周期检查的环境变量优先级:

lifecycle default < env_file < shell environment

生命周期默认值和 .env 只用于检查就绪状态。AgentSeek 不会把它们注入子进程,process command 必须自行加载运行环境。

Task 命名

Task 要求
sync 当项目需要单独安装 Python 或 backend 依赖时使用。新模板统一使用 sync,不要使用 backend 等框架专属名称。
frontend 项目存在独立 frontend 依赖树时,用于安装 frontend 依赖。
models 本地开发前需要下载或转换模型文件时使用。
<service> 准备或启动无法完全由 agentseek dev 管理的可选依赖,例如 seekdb
ingest-sample 模板包含 ingestion 流程时,用于导入可重复验证的示例内容。
<integration>-skills 安装可选外部 skill pack。该 task 必须能通过 agentseek task --list 发现。

生成 README 统一通过 agentseek task <name> 引导 setup。原始包管理命令可以解释实现,但不能成为另一条主要使用路径。

本地服务和网络

能力 要求
开发环境 agentseek dev 启动文档所需的所有长时间运行进程。
默认绑定 Backend 和 frontend server 默认绑定 loopback。
远程开发 支持远程访问时,必须提供并说明 host override。
浏览器 API URL Frontend 根据浏览器地址推导 backend host,或接受显式 public API URL。不能为远程客户端写死 loopback backend。
无 frontend 纯 backend 模板必须明确说明不提供 frontend,并指出支持的入口。

可选能力

能力 必须说明的内容
知识库 说明 ingestion 通过本地文件、server endpoint、UI 还是 lifecycle task 完成,并提供一个可用示例。
可观测性 说明是否支持 tracing、如何开启,以及发送到哪个 backend。不能暗示所有模板都支持 LangSmith。
本地模型 说明模型文件准备方式、支持的 device 配置,以及用于准备模型的 lifecycle task。
对话语言 除非有明确产品要求,默认 prompt 包含 Answer in the same language as the user's question.

README 规范

文档 必需内容
模板根目录 README 用途、架构摘要、Cookiecutter 参数、生成目录结构和面向贡献者的实现说明。
生成项目 README 前置条件、.env 配置、按顺序排列的 lifecycle tasks、agentseek doctoragentseek dev、服务入口、可选能力,以及支持时的远程绑定。
缺失能力 对常见但未提供的能力作出明确说明,例如 frontend 或可观测性。
例外 只有存在例外时才添加 Deviations from the template contract,并说明规则、原因、用户影响和替代验证。

例外

要求 规范
理由 必须来自框架或运行时约束,不能只是贡献者偏好。
文档 在生成 README 中记录偏离项。
Pull request PR 描述中重复说明偏离项及其用户影响。
验证 用测试或 smoke check 证明替代方案可用。

验证

检查 命令或依据
完整 catalog 契约 在独立 catalog checkout 中运行 make check
注册表与自包含 Catalog 测试要求注册表与目录完全一致、只含普通文件/目录,并确保每个模板子树自包含。
默认渲染和生命周期 smoke Catalog 测试渲染每个注册模板,并用配对 core 快照验证严格 lifecycle v2。
生成项目检查 使用 agentseek create <absolute-template-path> --no-input 渲染本地模板。
Core 文档 本规范变化时,在 AgentSeek core checkout 中运行 make docs-test

相关页面