harness - OpenAPI 业务接口接入
2026年6月14日 下午11:44:58
马具可以把现有的 HTTP 业务接口(OpenAPI 文档)接入为 Agent 可调用的工具,让 Agent 直接调用你的业务系统。接入以 docUrl(OpenAPI 文档地址)为唯一标识,支持 OpenAPI v2 / v3 文档。
1、构建期静态注册
HarnessEngine engine = HarnessEngine.of("work", ".soloncode/")
.sessionProvider(sessionProvider)
.toolsAdd(ToolPermission.TOOL_RESTAPI) // 开启 restapi 工具权限
.apiServerAdd("orders", new ApiSource().then(s -> {
s.setDocUrl("https://api.example.com/v3/api-docs"); // OpenAPI 文档地址(唯一标识)
s.setApiBaseUrl("https://api.example.com"); // 接口基地址
}))
.build();
ApiSource 也可用标准 setter 逐项设置:
ApiSource source = new ApiSource();
source.setDocUrl("https://api.example.com/v3/api-docs");
source.setApiBaseUrl("https://api.example.com");
source.addHeaderVar("Authorization", "Bearer ${token}"); // 透传请求头
source.addAllowedTool("getOrder"); // 只暴露指定接口
2、ApiSource 字段说明
| 字段 | 默认值 | 描述 |
|---|---|---|
docUrl | / | OpenAPI 文档地址,作为该 API 源的唯一标识 |
apiBaseUrl | / | 接口基地址(覆盖文档中的 server 地址) |
headers | / | 自定义请求头(可用 addHeaderVar 追加) |
allowedTools | / | 白名单,仅暴露列出的接口为工具 |
disallowedTools | / | 黑名单,排除列出的接口 |
timeout | / | 请求超时(Duration) |
authenticator | / | 鉴权器(ApiAuthenticator) |
enabled | true | 是否启用 |
接口工具的暴露由
allowedTools/disallowedTools共同裁剪:先取白名单(为空则全取),再剔除黑名单。
3、运行时动态管理
engine.addApiServer(apiSource); // 添加(以 docUrl 为标识)
engine.getApiServer(docUrl); // 获取 ApiSourceClient
engine.refreshApiServer(docUrl); // 刷新(权限/文档变更后)
engine.removeApiServer(docUrl); // 移除
engine.getApiServers(); // 全部 API 源
ApiSourceClient 可查看该源解析出的接口工具:
ApiSourceClient client = engine.getApiServer(docUrl);
client.getTools(); // 全部接口工具
client.getToolsActivated(); // 经白/黑名单裁剪后实际生效的工具
4、说明
- 工具权限:OpenAPI 接入需授予
TOOL_RESTAPI(即restapi)。授权方式见 《harness - 配置参考》。 - OpenAPI 工具由
OpenApiGatewayTalent统一网关管理,重试次数由apiRetries(默认 3)控制。 - 动态注册都会同步到引擎配置中,并即时对后续会话生效。
- MCP 接入见 《harness - MCP 服务接入》,LSP 接入见 《harness - LSP 服务接入》。