Skip to main content
Templates

更新 Template

根据 ID 更新 Forward Template。

POST /api/v1/forward/templates/{template_id} 只更新请求体中出现的字段;数组字段在传入时整体替换。

请求头

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

路径参数

参数类型是否必填说明
template_idstringForward Template ID。

请求体参数

参数类型是否必填说明
namestring新的 Template 名称。
descriptionstring新的 Template 描述。
modelstring | object新的模型标识。可传 string,或传 Agent model 对象以同时配置 effortcontext_window。可通过列出模型接口查询可用值。
systemstring新的 System Prompt。
toolsarray整体替换工具配置列表。
mcp_serversarray整体替换 MCP Server 列表。
skillsarray整体替换 Skill 绑定列表。
multiagentobject|null整体替换 Multi-agent 协作配置;传 null 表示清空,省略则保留当前配置。
environment_idstringnull
vaultsobjectnull
filesobjectnull
github_repositoriesobjectnull
environment_variablesobjectstringnull
metadataobject合并更新自定义元数据。

嵌套配置对象

toolsmcp_serversskills 都是数组字段;更新请求中一旦传入,会整体替换原数组。

Model

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

Vaults

vaults 是按 Vault ID 组织的 map。每个配置项支持可选的 enabled boolean;省略等同于 true。更新时传入 vaults 会整体替换原配置,传 null 会清空。
{
  "vaults": {
    "vault_019f18f2761b": {
      "enabled": true
    },
    "vault_019f18f2762c": {
      "enabled": true
    }
  }
}
响应统一返回对象形态的 vaults

文件资源

files 是按 File ID 组织的 map。配置项内不要再写 file_ididresource_id。Forward 在创建 Session 时自动注入 mount_path
字段类型是否必填说明
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/<仓库名>。省略整个 github_repositories 字段仍保留已有配置。
更新时 github_repositories 使用整体替换语义:
请求形态语义
字段未出现保留当前仓库配置。
github_repositories: null清空全部 binding。
github_repositories: {}清空全部 binding。
非空 object使用该 object 整体替换当前仓库配置。

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
更新接口中的 tools 是整体替换语义。如果需要保留已有工具集,请将它们与 browser_toolset_20260714 一并放入新的 tools 数组。

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 时,tools 需要包含 agent_toolset_20260401。如果在同一个更新请求中也传入 tools,该数组会整体替换当前工具配置,因此需要在新数组中保留该工具集。
请求形态语义
字段未出现保留当前 multiagent 配置。
multiagent: null清空 multiagent 配置。
非空 object使用该 object 整体替换当前配置。

示例请求

curl -s -X POST 'https://api.qoder.com/api/v1/forward/templates/tmpl_support' \
  -H "Authorization: Bearer $QODER_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Support assistant v2",
  "model": {
    "id": "ultimate",
    "effort": "high",
    "context_window": 400000
  },
  "multiagent": {
    "type": "coordinator",
    "agents": [
      {
        "type": "agent",
        "template_id": "tmpl_research_v2",
        "name": "Research Agent"
      },
      {
        "type": "self"
      }
    ]
  },
  "environment_id": "env_support_v2",
  "vaults": {
    "vault_019f18f2761b": {
      "enabled": true
    },
    "vault_019f18f2762c": {
      "enabled": true
    }
  },
  "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_v2"
  }
}'

示例响应

HTTP 200 OK
{
  "type": "template",
  "id": "tmpl_support",
  "name": "Support assistant v2",
  "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_v2",
        "name": "Research Agent"
      },
      {
        "type": "self"
      }
    ]
  },
  "environment_id": "env_support_v2",
  "vaults": {
    "vault_019f18f2761b": {
      "enabled": true
    },
    "vault_019f18f2762c": {
      "enabled": true
    }
  },
  "files": {},
  "github_repositories": {
    "source": {
      "url": "https://github.com/acme/support-agent",
      "mount_path": "/data/workspace/support-agent"
    }
  },
  "environment_variables": {
    "BASE_MODE": "support_v2"
  },
  "metadata": {},
  "created_at": "2026-06-18T10:00:00Z",
  "updated_at": "2026-06-18T10:30:00Z"
}

响应字段

字段类型说明
返回值object更新后的完整 Template 对象;请求包含 model 时按提交形态返回,未包含时保持原有形态。
multiagentobject|null更新后的 Multi-agent 配置;未设置时为 null
github_repositoriesobject更新后的 GitHub 仓库配置;不包含 write-only 的 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-Template 或引用资源不存在。
409conflict_error-Template 名称已存在、状态冲突,或 GitHub 仓库的规范化 URL、挂载路径重复。
401authentication_errorauthentication_requiredPAT 或 SAT 无效或已过期。

备注

  • 归档后的 Template 不允许更新。
  • 更新 Session 默认配置不会修改已经存在的 Session。
  • github_repositories.*.authorization_token 是 write-only 字段,不会出现在 Template 响应中。

相关