Skip to main content
Templates

创建 Template

创建 Forward Template 基线。

POST /api/v1/forward/templates Template 定义创建 Session 时使用的默认 Agent 配置和 Session 默认配置。

请求头

Header是否必填说明
AuthorizationBearer <PAT 或 SAT>
Content-Typeapplication/json
Idempotency-Key有副作用请求可选的幂等键。
X-Qoder-Beta使用浏览器能力时启用 Browser Use 时必须设置为 browser-use-2026-07-14

请求体参数

参数类型是否必填说明
namestringTemplate 名称,1-256 个字符,租户内唯一。
modelstring | object模型标识。可传 string(如 "ultimate"),或传 Agent model 对象以同时配置 effortcontext_window。可通过列出模型接口查询可用值。
environment_idstring创建 Session 时默认使用的 Environment ID。
descriptionstringTemplate 描述,最多 2048 个字符。
systemstringSystem Prompt,最多 100,000 个字符。
toolsarray工具配置列表,最多 128 项。
mcp_serversarrayMCP Server 配置列表,最多 20 项。
skillsarraySkill 绑定列表,最多 20 项。
multiagentobject|nullMulti-agent 协作配置。type 必须为 coordinator;省略或传 null 表示不启用。
vaultsobject默认 Vault 配置,按 Vault ID 组织。
filesobject默认文件资源配置,按 file ID 组织。
github_repositoriesobject默认 GitHub 仓库配置,按调用方指定的 binding key 组织,最多 20 项。
environment_variablesobjectstring
metadataobject自定义元数据。

嵌套配置对象

Model

model 支持两种等价形态:直接传模型 ID 字符串,或传包含模型 ID 和可选调优字段的对象。
字段类型是否必填说明
idstring模型标识;可通过列出模型接口查询可用值。
effortstringReasoning effort 等级。可选值:nonelowmediumhighxhighmax;各模型实际支持的等级见列出模型返回的 efforts
context_windowinteger期望的上下文窗口(token 数,正整数);取值请从列出模型返回的 available_context_windows 中选择。

Vaults

vaults 是按 Vault ID 组织的 map。每个配置项支持可选的 enabled boolean;省略等同于 true。配置项内无需重复填写 vault_ididresource_id
{
  "vaults": {
    "vault_019f18f2761b": {
      "enabled": true
    }
  }
}
响应统一返回对象形态的 vaults

文件资源

files 是按 File ID 组织的 map。在会话时会将文件挂载到环境的 /data/workspace/<文件名> 路径下。
字段类型是否必填说明
enabledboolean省略等同于 true。Identity Config 中可用 false 禁用继承的文件。

GitHub 仓库

github_repositories 是按 binding key 组织的 map。binding key 必须匹配 [A-Za-z][A-Za-z0-9_-]{0,63},最多包含 20 个 binding;规范化后的仓库 URL 和挂载路径均不能重复。
字段类型是否必填说明
urlstring绝对 HTTPS 仓库 URL;不能包含 userinfo、query、fragment、百分号编码或反斜杠,末尾 .git 会被规范化移除。
authorization_tokenstring仓库访问 token,仅写入,响应不会回显;最长 8192 bytes,只允许 ASCII 字母、数字和下划线。
mount_pathstringSession 内的挂载路径,必须是除 / 外的规范化绝对路径;省略时为 /data/workspace/<仓库名>

tools 数组项

每个 tools[] 项通过 type 选择结构。
字段类型适用类型说明
typestring全部必填。取值为 agent_toolset_20260401browser_toolset_20260714mcp_toolsetcustom
enabled_toolsarrayagent_toolset_20260401便捷白名单;非空数组表示只启用这些内置工具。
disallowed_toolsarrayagent_toolset_20260401便捷禁用列表;编译为 disabled tool config。
configsarrayagent_toolset_20260401mcp_toolset单工具启用状态和权限策略。
mcp_server_namestringmcp_toolset必填,必须匹配某个 mcp_servers[].name
namestringcustom必填,自定义工具名,不能与内置工具重名。
descriptionstringcustom必填,自定义工具描述。
input_schemaobjectcustom必填 JSON Schema,input_schema.type 必须为 object
内置工具名包括 BashReadWriteEditGlobGrepWebFetchWebSearchDeliverArtifacts

浏览器能力(Beta)

Browser Use 当前为 Beta 能力,功能、使用限制和接口细节可能会调整。 如需为通过该 Template 创建的 Session 开启浏览器能力,请在 tools 中添加以下工具集:
{
  "type": "browser_toolset_20260714"
}
请求还必须携带以下 Header,否则无法启用浏览器能力:
X-Qoder-Beta: browser-use-2026-07-14

Tool config

tools[].configs[] 使用以下结构。
字段类型是否必填说明
namestring工具名;内置工具使用 built-in tool name,MCP toolset 使用 MCP tool name。
enabledbooleanfalse 表示隐藏并拒绝该工具;true 表示显式启用。
permission_policyobject运行时权限行为。

Permission policy

字段类型是否必填说明
typestringalways_allowalways_askalways_deny

MCP servers

字段类型是否必填说明
typestring当前只支持 http;省略时 Effective Config 中按 HTTP MCP server 处理。
namestringTemplate 内唯一的 MCP server 名称,由 tools[].mcp_server_name 引用。
urlstringStreamable HTTP MCP endpoint URL。

skills 数组项

字段类型是否必填说明
typestringcustomqoder
skill_idstringSkill ID。
versionstringSkill 版本,省略时使用最新版本。
enabledboolean省略等同于 truefalse 表示不进入编译后的 Agent 配置。

Multiagent

multiagent 将当前 Template 配置为 coordinator,并声明它可以委派的 Agent 花名册。
字段类型是否必填说明
typestring固定为 coordinator
agentsarray可委派的 Agent 列表,必须包含 1-20 项。
multiagent.agents[] 支持以下形式:
形式示例说明
Template 引用对象{"type":"agent","template_id":"tmpl_research"}引用当前调用方可访问的 Forward Template。
coordinator 自身{"type":"self"}将当前 coordinator 作为可委派 Agent。
对象形式的字段如下:
字段类型适用类型是否必填说明
typestring全部agent 表示引用另一个 Agent,self 表示 coordinator 自身。
template_idstringagent被引用的 Forward Template ID。
namestringagent子 Agent 显示名称。
使用 template_id 时,被引用 Template 必须存在且当前调用方有权访问。
{
  "multiagent": {
    "type": "coordinator",
    "agents": [
      {"type": "agent", "template_id": "tmpl_research", "name": "Research Agent"},
      {"type": "self"}
    ]
  }
}
使用 multiagent 时,tools 需要包含 agent_toolset_20260401。创建 Template 时 Forward 会自动补齐该工具集。

示例请求

curl -s -X POST 'https://api.qoder.com/api/v1/forward/templates' \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Support assistant",
  "description": "Handles customer support requests",
  "model": {
    "id": "ultimate",
    "effort": "high",
    "context_window": 400000
  },
  "system": "You are a helpful support assistant.",
  "tools": [
    {
      "type": "agent_toolset_20260401"
    }
  ],
  "mcp_servers": [],
  "skills": [],
  "multiagent": {
    "type": "coordinator",
    "agents": [
      {
        "type": "agent",
        "template_id": "tmpl_research",
        "name": "Research Agent"
      },
      {
        "type": "self"
      }
    ]
  },
  "environment_id": "env_xxx",
  "vaults": {
    "vault_019f18f2761b": {
      "enabled": true
    }
  },
  "files": {},
  "github_repositories": {
    "source": {
      "url": "https://github.com/acme/support-agent.git",
      "authorization_token": "github_pat_xxx",
      "mount_path": "/data/workspace/support-agent"
    }
  },
  "environment_variables": {
    "BASE_MODE": "support"
  },
  "metadata": {}
}'

示例响应

HTTP 200 OK
{
  "type": "template",
  "id": "tmpl_support",
  "name": "Support assistant",
  "description": "Handles customer support requests",
  "status": "active",
  "model": {
    "id": "ultimate",
    "effort": "high",
    "context_window": 400000
  },
  "system": "You are a helpful support assistant.",
  "tools": [
    {
      "type": "agent_toolset_20260401"
    }
  ],
  "mcp_servers": [],
  "skills": [],
  "multiagent": {
    "type": "coordinator",
    "agents": [
      {
        "type": "agent",
        "template_id": "tmpl_research",
        "name": "Research Agent"
      },
      {
        "type": "self"
      }
    ]
  },
  "environment_id": "env_xxx",
  "vaults": {
    "vault_019f18f2761b": {
      "enabled": true
    }
  },
  "files": {},
  "github_repositories": {
    "source": {
      "url": "https://github.com/acme/support-agent",
      "mount_path": "/data/workspace/support-agent"
    }
  },
  "environment_variables": {
    "BASE_MODE": "support"
  },
  "metadata": {},
  "created_at": "2026-06-18T10:00:00Z",
  "updated_at": "2026-06-18T10:00:00Z"
}

响应字段

字段类型说明
typestring固定为 template
idstringTemplate ID。
statusstringactivearchived
modelstring | object与请求提交的形态一致;对象形态保留 ideffortcontext_window
multiagentobject|nullMulti-agent 协作配置;未设置时为 null
environment_idstring默认 Environment ID。
vaultsobject默认 Vault 配置,按 Vault ID 组织。
filesobject默认文件资源配置。
github_repositoriesobject默认 GitHub 仓库配置;包含规范化后的 url 和最终 mount_path,不包含 authorization_token

错误

HTTPTypeCode触发条件
400invalid_request_error-请求体或字段取值不合法。
400invalid_request_error-使用 browser_toolset_20260714 但未携带正确的 X-Qoder-Beta Header。
400invalid_request_error-multiagent 结构不合法,agents 数量不在 1-20 之间,或引用的 Forward Template 不存在或不可访问。
404not_found_error-引用的 Environment、Skill、Vault 或 File 不存在。
409conflict_error-Template 名称已存在,或 GitHub 仓库的规范化 URL、挂载路径重复。
401authentication_errorauthentication_requiredPAT 或 SAT 无效或已过期。

备注

  • 创建时不要传 template_id,ID 由 Forward 生成。
  • files 使用 file ID 作为 map key,配置项内不要重复写 file_ididresource_id
  • Forward 在创建 Session 时自动补充文件挂载路径。
  • github_repositories.*.authorization_token 是 write-only 字段,不会出现在 Template 响应中。

相关