Skip to main content
harness 命令组用于以无代码方式创建智能体:先初始化一个 harness.yaml,再逐项设置字段,最后直接部署为运行时,无需编写任何应用代码。

harness init

创建一个 harness 目录,包含 harness.yaml 与 .env.example,用于Harness。
harness.yaml 是无代码智能体的唯一配置来源,harness deploy 会将其展开为运行时的环境变量。生成的文件里,常用字段处于启用状态,各组件的可选参数以注释形式按后端分组给出——设好组件的 type 后,取消注释该后端下的参数即可。完整内容如下:
harness.yaml
字段说明:
  • harness_name:harness 与运行时名称,同时用作知识库、长期记忆的索引名(env HARNESS_NAME,flag --name)。
  • cloud:部署使用的云厂商和区域,由 harness init 写入;云厂商为 volcengine 或 byteplus。
  • model.name:推理模型名称;部署后模型的火山方舟鉴权由运行时 IAM 角色提供,无需在此填写(env MODEL_NAME,flag --model-name)。
  • tools:内置工具名列表(env TOOLS,flag --tools)。
  • skills:技能中心名称列表(env SKILLS,flag --skills)。
  • system_prompt:智能体指令,留空则使用服务端默认(env SYSTEM_PROMPT,flag --system-prompt)。
  • description:用于发现和生成 AgentCard 的智能体描述(env DESCRIPTION,flag --description)。
  • runtime:智能体运行时后端,adk(默认)或 codex(env RUNTIME,flag --runtime)。
  • max_llm_calls:每次运行允许的默认最大 LLM 调用次数;agentkit harness invoke --max-llm-calls 可为单次请求覆盖。
  • structured_tool_calls / include_tools_every_turn:控制工具调用格式,以及是否在每轮模型调用中重复发送工具定义。
  • registry:可选 A2A registry。space_id 选择空间,top_k 控制最多检索的 AgentCard 数量,endpoint 与 region 指定服务位置。
  • knowledgebase:知识库。type 留空即禁用,支持 viking、opensearch、redis;设好 type 后取消注释该后端下对应的连接参数。
  • long_term_memory:长期记忆。type 留空即禁用,支持 viking、opensearch、redis、mem0。
  • short_term_memory:短期会话存储。type 为 local(默认)、sqlite、mysql 或 postgresql。
  • auth(可选):省略则使用默认的 API Key 鉴权 key_auth;填入 discovery_url 与 allowed_ids 则改用 OAuth2/JWT custom_jwt,网关仅接受该用户池签发、受众在白名单内的 token。
展开规则:harness deploy 将顶层字段与 model 扁平化为环境变量(如 model.name → MODEL_NAME),组件参数映射为该后端读取的 DATABASE_<BACKEND>_* 等变量;空值会被跳过,由服务端回退到默认值。harness init 同时生成的 .env.example 只包含可选的 Volcengine AK/SK 占位符,智能体配置全部在 harness.yaml 中。

harness set

设置 harness.yaml 中的字段(局部更新,仅修改传入的字段)。不带任何标志运行时会列出当前字段。字段分为若干组:核心(模型 / 工具 / 技能 / 提示词 / 运行时)、knowledgebase、long-term-memory、short-term-memory 以及鉴权。设置某个组件时,请先设置其 --<组件>-type,再设置连接参数。
只有显式传入的标志会被修改。若要配置某个组件,请先设置它的 --<组件>-type,再补充其连接参数。

harness dev

根据当前目录的 harness.yaml 在本地启动 Harness 服务,用于开发和调试。默认监听本机的 127.0.0.1:8000;如需从其它设备访问,可显式修改监听地址。

harness deploy

构建 harness 镜像,并根据 harness.yaml 创建或更新运行时。

harness invoke

调用已部署的 Harness,并可为本次请求临时覆盖模型、系统提示词、工具、技能、运行时后端或 A2A registry。覆盖项只影响当前请求,不会修改 harness.yaml。
对于使用 custom_jwt 鉴权的 Harness,可以通过 --token 显式传入 Bearer token,也可以先运行 agentkit login --identity-only <sso-address> 保存 OIDC 会话。CLI 只会在 Runtime endpoint 为 HTTPS、Runtime 的 discovery URL 与当前登录 issuer 匹配且当前 OAuth client ID 位于允许列表时自动转发缓存的 id_token。

harness sidecar catalog

输出 Harness Sidecar Product Component Catalog。该命令只打印 JSON,不创建或修改云资源;可用于在 Studio、CI 或脚本中展示当前 profile 下的可选组件、可用状态和默认选择。
输出包含 schema_version、catalog_version、profiles、selected_profile、components、total_component_count 与 selectable_component_count。其中 components[].selected_by_profile 表示该组件是否由当前 profile 默认选中,components[].availability.available 表示当前 Runtime 合约是否可用。

harness sidecar resolve

将 profile 与组件开关解析为确定性的 Harness Sidecar plan。该命令只输出 JSON 计划;当计划无效时会返回非零退出码,便于发布前校验 harness_sidecar.component_overrides 是否可用。
输出中的 effective_components 是最终启用组件;activation_targets 描述运行时组件、模型代理和 MCP 网关是否会被启用;plan_hash 用于发布后核验运行时实际加载的计划。mcp_resilience 会自动带上 SQL 只读保护,sql_readonly 不能作为 --component 直接选择。
最后修改于 2026年9月19日