veadk harness 命令行进行创建、配置和部署。部署后,Harness 服务以 AgentKit Runtime 的形式运行,提供对话接口、会话管理和运行时配置覆盖能力,适合需要独立托管智能体并通过 HTTP API 调用的场景。
何时使用
前置条件
- 已安装
veadk-python[harness]; - 已配置火山引擎访问凭据(
VOLCENGINE_ACCESS_KEY和VOLCENGINE_SECRET_KEY); - 不要把
.env、API Key 或访问凭据提交到代码仓库。
命令总览
veadk harness 提供以下子命令:
创建项目
my-harness 目录中生成以下文件:
配置智能体
使用veadk harness add 将参数写入 harness.yaml:
配置参数
veadk harness add 支持以下参数(未设置的字段保持原值):
每个后端的连接参数也有独立的标志,例如
--knowledgebase-project、--knowledgebase-region、--long-term-memory-host、--short-term-memory-host 等,写入对应组件分节。
harness.yaml 配置结构
harness.yaml 使用分节结构组织配置。部署时,顶层字段和 model 分节被展平为运行时环境变量(如 model.name 映射到 MODEL_AGENT_NAME),每个组件的 type 选择后端,其余参数映射到对应后端读取的环境变量。
harness.yaml
也可以在
harness.yaml 中使用 harness: 包装分节,将所有 Harness 参数放在一个嵌套对象中。harness: 分节内的字段会被提取并与顶层字段合并。结构化资源配置
除veadk harness add 写入的基础字段外,harness.yaml 还支持以下结构化字段,用于配置 AgentKit 控制面下发的资源。这些字段在部署时转换为对应的 JSON 环境变量:
结构化资源配置示例:
harness.yaml
查看配置
harness.yaml 中已配置的参数,以及可通过 veadk harness invoke 在调用时覆盖的参数列表。
知识库、长期记忆、采样参数(temperature、top_p 等)和注册表(registry)等字段仅通过 HTTP API 覆盖,不作为 CLI 标志暴露。
部署
harness.yaml,将其转换为运行时环境变量,执行 AgentKit 云端构建和 Runtime 创建。部署完成后,Runtime 端点、Runtime ID 和 API Key 会记录到 harness.json 中。
认证方式
默认使用 API Key 认证(key_auth)。在 harness.yaml 中添加 auth 分节或通过 --discovery-url 和 --allowed-id 启用 OAuth2/JWT 认证(custom_jwt):
harness.yaml
Authorization: Bearer <用户池 JWT>,CLI 不会生成该令牌。
调用 Harness 服务
--name 指定 Harness 名称,其 URL 和 API Key 从 harness.json 中读取。也可以通过 --url 和 --key 直接指定。
调用参数
调用时可以使用覆盖标志在本次调用中覆盖已部署智能体的配置,例如
--tools、--skills、--system-prompt、--model-name 等。覆盖仅对本次调用生效,不修改 harness.yaml。
HTTP API
部署后的 Harness 服务提供以下 HTTP 接口。对话接口
会话与配置接口
运行时配置覆盖
Harness 服务支持在每次请求中覆盖已部署智能体的配置。覆盖通过请求体中的harness 字段传入,仅对本次调用生效。
/harness/invoke 请求体结构:
请求体
harness_merge 行为
harness_merge 控制请求配置与默认配置的合并方式:
可覆盖字段
以下字段可通过harness 在请求级覆盖:
知识库和长期记忆的请求级覆盖通过 AgentKit 控制面资源 ID 解析为运行时配置。传入
id 时,Harness 服务会从 AgentKit 控制面获取对应资源的连接信息。创建会话
查询默认配置
appName、userId、sessionId),也支持 POST 方式提交请求体。
环境变量
Harness 服务通过环境变量配置运行时行为。harness.yaml 在部署时自动转换为对应的环境变量,也可以直接在运行时环境中设置。
模型与工具
资源配置
会话与记忆后端
max_llm_calls 的默认值为 10。未显式设置时,单次运行最多调用 LLM 10 次。可在 harness.yaml 中或通过请求级覆盖调整。