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。
  • cloud.network(可选):运行时网络配置。enable_public_network 控制公网入口,enable_private_network 启用私有 VPC,vpc_id、subnet_ids 与 security_group_ids 指定私有网络资源,enable_shared_internet_access 控制私有网络共享公网出口。启用私有网络时必须提供 VPC 与子网。
  • model.name:推理模型名称(env MODEL_NAME,flag --model-name)。
  • model.credential_mode(可选):设为 obo_broker 时启用共享 OAuth Harness 的托管模型出口。该模式要求同时配置 auth,并提供 model.provider、model.api_base、model.target_alias、model.target_audience、model.workload_discovery_url 与 model.workload_issuer;不要在该模式下写入模型 API Key。
  • capacity(可选):运行时资源、并发和模型请求准入配置。可设置 cpu_milli、memory_mb、min_instance、max_instance、max_concurrency、model_max_inflight、model_max_inflight_per_user、model_queue_timeout_seconds、model_request_timeout_seconds、model_max_output_tokens、session_db_pool_size、session_db_max_overflow、session_db_pool_timeout_seconds 与 session_db_pool_recycle_seconds。
  • tools:内置工具名列表(env TOOLS,flag --tools)。
  • skills:Skill Hub slug、空间或 space:skill 引用列表(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:控制工具调用格式,以及是否在每轮模型调用中重复发送工具定义。
  • sidecar(可选):托管 Harness Sidecar 配置。profile 选择组件 profile,component_overrides 控制 context_engine、compressor、verifier、long_run_control 与 mcp_resilience 等组件。
  • 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.yaml,当前不由 harness set 生成。
展开规则:harness deploy 将顶层字段与 model 扁平化为环境变量(如 model.name → MODEL_NAME),组件参数映射为该后端读取的 DATABASE_<BACKEND>_* 等变量;空值会被跳过,由服务端回退到默认值。auth、cloud、capacity 与 Sidecar 配置用于部署控制面,不作为普通用户配置传入智能体进程。harness init 同时生成的 .env.example 只包含可选的云厂商 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 创建或更新运行时。
配置 auth 后,部署会创建 custom_jwt Runtime。部署完成后,将返回的 Runtime ID 与 HTTPS endpoint 发布到租户登录发现文档的 shared_harnesses 中,用户即可通过 agentkit chat <alias> 使用共享聊天。

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 网关是否会被启用;warnings 列出有效但需要关注的选择结果;plan_hash 用于发布后核验运行时实际加载的计划。mcp_resilience 会自动带上 SQL 只读保护,sql_readonly 不能作为 --component 直接选择。使用 ops profile 但关闭 mcp_resilience 时,计划会提示 SQL 只读保护已关闭。
最后修改于 2026年9月19日