[RFC]明确vikingbot作为agent使用场景,配置方案和调用链路 #3042
yeshion23333
started this conversation in
RFC
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
RFC:VikingBot Gateway 与 OpenViking 的入口、配置解析和鉴权边界
1. 目标
这次改造希望同时支持三类使用方式:
openviking-server --with-botov chat -> OpenViking /bot/v1 -> VikingBot gatewayvikingbot chatov.conf.bot.ov_server或本地配置vikingbot gateway,ovcli.conf.url指向 gatewaybot.ov_server或继承同一份ov.conf.serverov chat直接对话;ov list/search/session/...经 gateway proxy 到 OpenViking目标不是替换旧链路,而是新增 gateway 入口:
2. 术语
bot.gateway.token/X-Gateway-Token,保护 VikingBot gateway 入口ovcli.conf.api_key或请求头传入的 OpenViking API Key,用于代表当前用户访问 OpenVikingbot.ov_server.api_key,用于 bot 自身连接 OpenViking memory/file tools 的默认身份;不能直接等同于调用方身份bot.ov_server.server_urlbot.ov_server.server_url,gateway 从同一份ov.conf.server推导 OpenViking server/api/v1/*proxy3.
openviking-server --with-bot规则openviking-server --with-bot表示本机启动 OpenViking server 和 bot 服务,继续使用之前的链路:规则:
ov.conf.server配置。bot.ov_server连接另一个 OpenViking server。bot.ov_server.server_url,建议启动日志提示:该字段在--with-bot模式下被忽略。/bot/v1router 继续负责向 bot 注入 request-scopedopenviking_connection。4.
vikingbot gateway启动期规则4.1 Gateway 入口安全
bot.gateway.tokenX-Gateway-Tokenbot.gateway.token,否则拒绝启动X-Gateway-Token说明:非 localhost gateway 下,Gateway token 是网关入口保护;OpenViking API Key 是上游身份。两者不能互相替代。
4.2 OpenViking upstream 解析
具体规则:
bot.ov_server.server_url,但访问不通bot.ov_server.server_url,继承同配置 OpenViking,但默认 server 或访问不通ov = 无auth_mode = devauth_mode = api_keybot.ov_server.api_key必须配置,且必须是有效 User API Key;否则启动失败bot.ov_server.server_url,auth_mode = trustedbot.ov_server.api_key必须配置,且必须是有效 root key;否则启动失败bot.ov_server.server_url,继承到auth_mode = trustedserver.root_api_key,并校验有效;缺失或无效则启动失败bot.ov_server.api_key的定位是 bot 自身访问 OpenViking tools 的默认身份,不是公网请求的调用方身份。5. 请求期规则
Gateway 请求先做入口鉴权,再做 OpenViking upstream 规则:
5.1 Standalone 模式
/bot/v1/chat/api/v1/*X-Gateway-Token5.2 使用 OpenViking 的模式
所有使用 OpenViking 的请求都要实时校验当前 OpenViking
auth_mode,不能只信 gateway 启动时的探测结果。auth_modedevapi_key- chatapi_key- proxyX-Gateway-Token转发给 OpenVikingtrusted如果运行时发现 OpenViking 当前
auth_mode与 gateway 启动时解析的模式不一致,gateway 应 fail-closed:dev且 gateway 非 localhost:返回 403。ov.conf。5.3 身份边界
openviking_connection只能由可信 server-proxy 或本地可信链路注入,不能接受公网请求 body 随意传入。X-OpenViking-Account/X-OpenViking-User属于 trusted 身份断言;非 localhost gateway 必须先校验 gateway token 后才可信。6. 配置约定
6.1
ov.conf{ "server": { "url": "http://127.0.0.1:1935", "auth_mode": "api_key", "root_api_key": "<root-key>" }, "bot": { "gateway": { "host": "127.0.0.1", "port": 18791, "token": "<required-when-gateway-host-is-non-localhost>" }, "ov_server": { "server_url": "https://openviking.example.com", "api_key": "<bot-user-key-or-trusted-root-key>" } } }约束:
bot.ov_server.source显式字段;explicit / inherited / standalone 是内部派生状态。bot.ov_server.server_url配置后表示显式 upstream,启动失败不能静默 fallback。bot.ov_server.api_key在api_key模式下必须是 User API Key;在显式trusted模式下必须是 root key。6.2
ovcli.confovcli.conf.url可以指向 OpenViking server,也可以指向 VikingBot gateway。不新增target字段。{ "url": "http://127.0.0.1:18791", "api_key": "<caller-openviking-api-key>", "root_api_key": "<optional-root-key-for-admin-commands>", "gateway_token": "<only-needed-when-gateway-requires-token>", "account": "default", "user": "alice", "actor_peer_id": "cli" }CLI 行为:
ovcli.conf.url指向ov chatov命令/bot/v1router;要求 server 已--with-bot/api/v1/*/bot/v1/chat/api/v1/*,由 gateway proxy 到 OpenVikinggateway_token只用于生成X-Gateway-Token,不能转发给 OpenViking。7. 落地改动清单
openviking-server --with-bot旧链路,server 侧/bot/v1router 继续可用。vikingbot gateway增加/api/v1/*proxy,承载ov list/search/session/...等 CLI 请求。vikingbot gateway启动时区分 explicit OV、inherited OV、standalone,并按上述规则 fail-fast 或降级。X-Gateway-Token。api_key模式下,启动校验 bot 默认 User API Key;请求期 chat 使用调用方 User API Key;proxy 转发调用方 OpenViking auth headers。trusted模式下,公网入口必须有 gateway token,不能裸信身份头。auth_mode,防止 server 重启后模式变化绕过安全边界。bot.ov_server.source和ovcli.conf.target。--with-bot旧链路、gateway chat、gateway proxy、standalone、安全拒绝、auth_mode 运行时变化、unknown config 字段拒绝。8. 待确认
api_key模式下,chat 是否只接受 User API Key,还是允许 Admin API Key 作为用户身份使用。当前 RFC 倾向只接受 User API Key。gateway_token字段名是否沿用现有ovcli.conf.gateway_token,还是只通过extra_headers.X-Gateway-Token兼容。api_key模式是否强制要求bot.ov_server.api_key。当前 RFC 按“有可访问 OV 就必须有 bot User Key”处理,避免 bot tools 在运行时才失败。Beta Was this translation helpful? Give feedback.
All reactions