|
|
@@ -39,23 +39,31 @@ Header: X-Access-Token: <JWT>
|
|
|
|
|
|
**与现有实现的替换**:实测平台智能助手现有"帮我打开风门监测页面"回答的链接点击后跳到首页模型页(指向错误)。接入本 skill 后,工具直接返回 `pages.json` 中实测正确的 path,替换旧知识/旧 prompt 中关于页面导航的部分。
|
|
|
|
|
|
-### 新标签页打开(链接行为,实测结论 2026-09-07)
|
|
|
-
|
|
|
-- **平台聊天面板支持 HTML 渲染**:实测 `<a href="..." target="_blank">` 输出后被渲染为蓝色可点击链接 → skill 默认输出 HTML 锚点,点击**新标签页打开**,不关闭当前页面与 AI 面板;
|
|
|
-- **注意(实测踩坑)**:让智能体"转述"URL 会把端口写错(8092→6092),因此 SKILL.md 规定 URL 必须逐字符来自 base_url+path 拼接,禁止凭记忆复述;
|
|
|
-- **宿主剥离 HTML 时**(降级 Markdown 链接),新标签行为由宿主前端一行配置实现:
|
|
|
- ```js
|
|
|
- // markdown-it:所有链接统一新标签页
|
|
|
- const defaultLink = md.renderer.rules.link_open ||
|
|
|
- ((t, i, o, e, s) => s.renderToken(t, i, o));
|
|
|
- md.renderer.rules.link_open = (t, i, o, e, s) => {
|
|
|
- t[i].attrSet('target', '_blank'); t[i].attrSet('rel', 'noopener');
|
|
|
- return defaultLink(t, i, o, e, s);
|
|
|
- };
|
|
|
- // marked 等价写法
|
|
|
- // renderer.link = (href, title, text) => `<a href="${href}" target="_blank" rel="noopener">${text}</a>`;
|
|
|
- ```
|
|
|
-- 某些嵌入式 webview(如应用内嵌浏览器)会拦截 `window.open`/弹窗,属宿主环境策略,不影响普通浏览器(Chrome/Edge)中 `target="_blank"` 的标准行为。
|
|
|
+### 新标签页打开(链接行为,两轮实测结论 2026-09-07)
|
|
|
+
|
|
|
+**目标**:用户点击智能体给出的链接在新标签页打开,不覆盖当前页面、不关闭 AI 面板。
|
|
|
+
|
|
|
+**实测事实(182 环境平台聊天面板)**:
|
|
|
+- ✅ Markdown 链接 `[名](url)` 正常渲染为蓝色可点击链接;
|
|
|
+- ❌ **HTML 标签被转义为文本显示**(`<a href=...>` 以等宽字体原样出现),skill 侧输出 HTML 锚点不可行;
|
|
|
+- ❌ Markdown 渲染出的链接无 `target` 属性 → 普通浏览器中点击**同窗跳转覆盖当前页**(用户实测报告的行为);
|
|
|
+- ⚠️ 让智能体转述 URL 会把端口写错(8092→6092),因此 SKILL.md 规定 URL 必须逐字符来自 base_url+path 拼接。
|
|
|
+
|
|
|
+**修复方案(平台前端必改项,一行配置)**:在 AI 面板的消息渲染器中给所有链接统一加 `target="_blank"`:
|
|
|
+```js
|
|
|
+// markdown-it:所有链接统一新标签页
|
|
|
+const defaultLink = md.renderer.rules.link_open ||
|
|
|
+ ((t, i, o, e, s) => s.renderToken(t, i, o));
|
|
|
+md.renderer.rules.link_open = (t, i, o, e, s) => {
|
|
|
+ t[i].attrSet('target', '_blank'); t[i].attrSet('rel', 'noopener');
|
|
|
+ return defaultLink(t, i, o, e, s);
|
|
|
+};
|
|
|
+// marked 等价写法
|
|
|
+// renderer.link = (href, title, text) => `<a href="${href}" target="_blank" rel="noopener">${text}</a>`;
|
|
|
+```
|
|
|
+改完无需动 skill——skill 默认输出 Markdown 链接,前端加 target 后即全量生效。
|
|
|
+
|
|
|
+**备注**:若未来面板升级为支持 HTML 渲染(验证方法:让 AI 输出一个 HTML 锚点看是否渲染成蓝色链接而非代码文本),可切换 skill 为 `<a target="_blank">` 输出模式(见 SKILL.md 链接输出格式)。某些嵌入式 webview(应用内嵌浏览器)会拦截弹窗/新窗口,属宿主环境策略,不影响 Chrome/Edge 等普通浏览器。
|
|
|
|
|
|
### 方式 B:纯 prompt + 知识注入(降级方案)
|
|
|
|