智能体「嵌入网站或用作 API」对话框:改版方案

状态:2026-10-03 用户确认。分享页签按方案 2.10 保留「组织内成员」「第三方嵌入」两档(3.4);第 8 节三条按推荐定。界面部分待并入 P2 实施清单。 上游:docs/api-key-convergence.md 2.4(「智能体」资源 Key)、2.10(智能体入口分享),属于 P2。 页面代码:对话框 aimp-platform/packages/ui/src/views/chatflows/APICodeDialog.jsx(分享页签 ShareChatbot.jsx、嵌入代码 EmbedChat.jsx), 入口在单智能体编辑页 views/agentapps/index.jsx:357 与工作流画布 views/canvas/CanvasHeader.jsx:642;「API 管理」页 views/apikey/。

本文定 P2 的界面:智能体的「嵌入网站或用作 API」对话框改用「智能体」资源 Key,「API 管理」页新增这种资源类型,老 Key 停止新建。用户确认方案之前不改代码。

截图是本机 2026-10-03 的整页截图(1440×900)。画布与单智能体编辑页是壳外页面,没有左侧导航;「API 管理」页含左侧约 220px 导航。 团队「数据库团队」(1111),智能体 rag_test(工作流)与 code_agent(单智能体)是真实数据,两个都已发布 v1、都绑着 DefaultKey。截图里的老 Key 原文已遮盖。 示意图只画对话框或对话框里的一块,各图下写明;示意图里的资源 Key 名称与 Key 值是示例数据。

1. 现状

画布上的对话框,cURL 页签

图 1 现状:工作流画布 rag_test 的对话框,cURL 页签(整页截图)。下拉框显示 DefaultKey,代码里 x-chatv-apikey 是它的原文(已遮盖)。

画布上的对话框,嵌入代码页签

图 2 现状:同一对话框的嵌入代码页签(整页截图),要求选择下拉框里并不存在的「无需授权」。

画布上的对话框,分享聊天机器人页签

图 3 现状:分享聊天机器人页签(整页截图)。链接末尾的 apikey= 是老 Key 原文(已遮盖),右侧是「设为公开」开关。

单智能体编辑页的对话框,下拉框展开

图 4 现状:单智能体编辑页 code_agent 的对话框(整页截图),cURL 页签、下拉框展开。下拉框当前值为空,代码里没有 Key。

API 管理页,资源 Key 与老 Key 表

图 5 现状:「API 管理」页滚到资源 Key 区末尾与老 Key 表(整页截图,含左侧导航)。老 Key 表只有 DefaultKey 一行,用量 41。

2. 改动一览

位置改动不变的
页签行右侧下拉框改列我签发的 Key,分「已授权本智能体」与「我的其他 Key」两组,缺省不选;选中只取明文填代码;就地提供「加入」「移出」「签发新 Key」,写的是 Key 的资源列表,不写智能体(3.1)位置
Python、JavaScript、cURL、异步 API、A2A 页签Key 写进 Authorization: Bearer;没选 Key 时用占位,并给出 SSO 令牌的写法(3.2)示例结构;暂停与续跑说明
嵌入代码页签嵌入代码带选中的智能体 Key,并提示 Key 会出现在网页里;没选 Key 时提示先选;删掉「请选择无需授权」(3.3)全屏、弹泡、React 三种写法
分享聊天机器人页签分两档:组织内成员(不带 Key)、第三方嵌入(带选中的智能体 Key),都跑已发布版本;删「设为公开」;未发布时提示先发布;智能体从对话框参数取,不读画布全局状态(3.4)链接参数(开场问题、自动发送);外观配置
「API 管理」页见 api-keys-page/redesign.html—

3. 对话框

3.1 下拉框:挑 Key,也能就地关联

智能体与 Key 的关联存在 Key 上(资源 Key 的资源列表),不存在智能体上。对话框里的快捷操作与「API 管理」页改的是同一份数据、调的是同一组接口,任一处改动在另一处立即可见。 智能体上原来的 apikeyid 不显示、不修改,留到 P4 删除。

A. 展开
选择智能体 Key▲
B. 点「加入」后的确认
把 rag_test 加到「告警平台对接」?
这把 Key 现在授权了 3 个知识应用:变更知识库问答、故障案例库问答、值班手册问答。
加入后,持有这把 Key 的系统也能调用 rag_test,并使用它挂载的工具与技能。Key 本身不变,外部系统不用改配置。
取消加入
C. 点「签发新 Key」
创建资源 Key
授权名称
rag_test 调用
智能体
rag_test
有效期(留空长期有效)
年 / 月 / 日 --:--
取消创建
叠在 API 对话框之上。创建后弹现有的明文对话框,关闭后自动选中新 Key。其他资源类型的多选框照常显示,示意图省略。
D. 智能体未发布
选择智能体 Key▼
智能体还没有发布。发布后才能签发 Key、对外调用。

图 6 方案:下拉框展开、两个快捷操作、未发布时(只画下拉框与它弹出的对话框)。智能体 rag_test 是真实数据;Key 名、末四位、知识应用名是示例。

3.2 代码页签:Key 放在 Authorization

头字段按方案 2.4 第 12 条已定的纪律:资源 Key 与 SSO 令牌都放 Authorization: Bearer,x-chatv-apikey 只留给老 Key,示例里不再出现。 现有示例末尾「把用户令牌经 Origin-Auth 或 Authorization 透传给工具」的注释只保留 Origin-Auth 一行:Authorization 已经用来放调用凭据。 Python、JavaScript、异步 API、A2A 四个页签按同样的规则改,示意图只画 cURL。

嵌入网站或用作 API
嵌入代码Python 代码JavaScript 代码cURL 代码异步 APIA2A 协议分享聊天机器人
工单系统集成▼
curl http://192.168.31.220:18180/chatV2/api/v1/prediction/aea13a08-d460-45f5-b8f5-76f60bd50ef5 \ -X POST \ -d '{"question": "Hey, how are you?"}' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer aimp_res_9fQ2…k3Xq" # 改用 SSO 令牌调用时,把上一行的 Key 换成令牌;调用人必须是智能体所属团队的成员 # -H "Authorization: Bearer <SSO 令牌>" # 可选:把终端用户的登录令牌透传给 MCP / A2A 工具 # -H "Origin-Auth: <user-access-token>"
暂停与续跑说明、续跑请求 body 示例:不变

图 7 方案:工作流画布 rag_test 的对话框,cURL 页签,已选中一把 Key(只画对话框)。没选 Key 时那一行写成 -H "Authorization: Bearer <API Key 或 SSO 令牌>"。

3.3 嵌入代码页签:带智能体 Key,写明后果

嵌入网站或用作 API
嵌入代码Python 代码JavaScript 代码cURL 代码异步 APIA2A 协议分享聊天机器人
门户嵌入▼
这把 Key 会写进网页源码,访问网页的人都能看到。拿到它就能调用 rag_test,并使用它挂载的全部工具与技能。泄露后到「API 管理」吊销。
这把 Key 还授权了 1 个知识应用,嵌入后访客也能调用它。
全屏弹泡React
<div id="aimp-chat" style="width: 100%; height: 100%;"></div> <script src="http://192.168.31.220:18180/chatV2/portal/embed.js" data-chatflow-id="aea13a08-d460-45f5-b8f5-76f60bd50ef5" data-apikey="aimp_res_Wm7c…P0aL" data-mode="full" data-target="#aimp-chat" ></script>

图 8 方案:嵌入代码页签,选中的 Key 同时授权了一个知识应用(只画对话框)。外观仍在分享页签里配置,嵌入代码不变。

3.4 分享聊天机器人页签:组织内成员、第三方嵌入两档

按方案 2.10 的原写法,页签顶部切换两档,缺省「组织内成员」。下面的链接参数(开场问题、自动发送)与外观配置两档共用,不变。

嵌入网站或用作 API
嵌入代码Python 代码JavaScript 代码cURL 代码异步 APIA2A 协议分享聊天机器人
选择智能体 Key▼
组织内成员第三方嵌入
发给组织内的同事。打开的人用自己的账号登录,须是「数据库团队」成员;对话跑已发布版本 v1。
链接参数(开场问题、打开后自动发送)、标题设置、外观配置:不变,两档共用
嵌入网站或用作 API
嵌入代码Python 代码JavaScript 代码cURL 代码异步 APIA2A 协议分享聊天机器人
门户嵌入▼
组织内成员第三方嵌入
链接里带着 Key,拿到链接的人都能调用 rag_test,并使用它挂载的全部工具与技能。泄露后到「API 管理」吊销。可直接打开,也可作为 iframe 地址;要弹泡、全屏或 React 写法,用「嵌入代码」页签。
这把 Key 还授权了 1 个知识应用,拿到链接的人也能调用它。
链接参数、标题设置、外观配置:同上
第三方嵌入 · 没选 Key 时
第三方嵌入需要智能体 Key。在右上角选择一把,或签发新 Key。
未发布时(两档相同)
智能体还没有发布。分享链接跑的是已发布版本,发布后才能分享。

图 9 方案:分享聊天机器人页签的两档,以及没选 Key、未发布两种状态(只画对话框)。rag_test 的 ID 与团队是真实数据,Key 名与 Key 值是示例。「组织内成员」档不用右上角的下拉框。

4. 「API 管理」页

「API 管理」页的改动(新增「智能体」类型、老 Key 折叠为 Legacy、资源选择器、采集点 Key 挪到「代码采集」页、资源上限可配置)见 api-keys-page/redesign.html。 本对话框 3.1 的「签发新 Key」复用那里的「创建 API Key」对话框,跳过选资源一步,资源固定为当前智能体。

5. 被否决的方案

#做法否决原因
1关联存在智能体上:下拉框选资源 Key 写进智能体(沿用 apikeyid 的做法)资源 Key 的授权范围存在 Key 上,一把 Key 可以授权多个资源;智能体上再存一份,两处会不一致。资源 Key 是个人凭证,绑到智能体上以后,同团队其他人打开对话框看不到明文,示例代码是坏的
2分享页签只生成组织内链接,第三方只用嵌入代码页签2026-10-03 用户选择保留方案 2.10 的两档。第三方嵌入档给的是链接本身,可直接打开或作 iframe 地址;嵌入代码页签给的是 embed.js 写法,两处并存,多一个分类不构成问题
3下拉框列出团队里所有授权了本智能体的 Key别人签发的 Key 看不到明文,只能显示掩码,填不进代码。列出与吊销放在 API 管理页(方案 2.4)

6. 关键取舍

7. 影响面

对象变化
views/chatflows/APICodeDialog.jsx下拉框分组、选中取明文、「加入」「移出」调 PUT /apikey/resources/:id/resources、「签发新 Key」叠加创建对话框;代码示例的头字段;删「无需授权」提示
views/apikey/ResourceKeys.jsx「创建资源 Key」对话框与明文对话框抽成组件,API 管理页与 API 对话框共用
views/chatflows/ShareChatbot.jsx智能体从对话框参数取;删 isPublic 开关与 apikey 参数;加未发布提示
views/chatflows/EmbedChat.jsxdata-apikey 取选中的智能体 Key;加两条提示
views/canvas/CanvasHeader.jsx、views/agentapps/index.jsx传给对话框的参数加发布状态与团队,去掉 chatflowApiKeyId
views/apikey/(详见 api-keys-page 第 7 节)新类型「智能体」;老 Key 表去掉新建与导入。智能体选项用现有 GET /api/v1/chatflows?type=…(按当前团队列出,controllers/chatflows/index.ts:62)取工作流与单智能体,前端过滤已发布、已启用; 「流程·编辑」用现有的 useTeamResourcePermission('flow') 判,矩阵按团队给权限,不按单个智能体,所以不用服务端逐条返回。签发时服务端 canManage 再判一次
平台服务端resource-grants.ts 加类型 agent(agent:invoke),MATRIX_ROW 加 agent: 'flow';资源描述从 wf_chat_flow 读,可用的判据是 publishedVersionId 非空且 isEnabled 不为 0(方案 2.4)。删 /api/v1/public-chatflows
chat-portal?apikey= 接受 aimp_res_ Key;新增「跑已发布版本」的链接参数

8. 已定问题(2026-10-03 用户按推荐确认)

#问题影响结论落实时间
1智能体能否与知识资源混在一把 Key 里嵌入时整把 Key 暴露在网页里,混进去的知识源推送、代码系统写入权限一起暴露允许混选,与多资源设计一致;嵌入代码页签与分享页签的第三方嵌入档选中这种 Key 时显示提醒(图 8、图 9 第二条提示)。未采用的做法:嵌入时只列只含智能体的 Key,代价是用户要为嵌入单独签一把P2
2单智能体编辑页的三处异常(第 1 节)随 P2 一起修,还是先单独修编辑页上分享页签白屏,代码示例与嵌入代码不能用随 P2 一起修,这几处代码 P2 都要重写。依据:分享页签在每个单智能体的编辑页上都白屏,现在没有人能从这里生成链接,晚修不会打断谁在用的东西。P2 之前如果有人要在编辑页用分享,再单独补「分享页签从对话框参数取智能体」这一处P2
3组织内链接「跑已发布版本」的参数名链接发出去以后格式不好再改;portal 与对话框两边要一致在 P2 实施清单里与 portal 改动一起定P2 实施清单

9. 下一步

界面部分并入 P2 实施清单,按第 7 节拆提交;「跑已发布版本」的参数名在清单里定。