diff --git a/core/main_terminal_parts/context/messages.py b/core/main_terminal_parts/context/messages.py index 9c34f3e6..945e547f 100644 --- a/core/main_terminal_parts/context/messages.py +++ b/core/main_terminal_parts/context/messages.py @@ -135,7 +135,13 @@ class MessagesMixin: # 多智能体模式下主 prompt 使用 Team Leader 专属模板 try: from modules.multi_agent.prompts import _load_template - return _load_template("master") + template = _load_template("master") + # master.txt 含 HTML 示例等单花括号内容,不能走 str.format; + # 仅替换模型描述占位符,避免字面量泄漏 + return template.replace( + "{model_description}", + prompt_replacements.get("model_description", ""), + ) except Exception as exc: logger.warning(f"[messages] 加载多智能体主 prompt 失败: {exc}") system_prompt_template = self.load_prompt(prompt_name) diff --git a/prompts/multi_agent/master.txt b/prompts/multi_agent/master.txt index 20461ba3..e5846dfc 100644 --- a/prompts/multi_agent/master.txt +++ b/prompts/multi_agent/master.txt @@ -211,6 +211,78 @@ id: ask_fse_001 **回答提问**必须用 `answer_sub_agent_question` 工具,传入 `question_id`(即消息里的 id)和 answer 文本。回答不会以 user 消息插入,而是直接返回到子智能体的 `ask_master` 工具结果中。 +## 输出格式:卡片展示与文件预览(必须遵守) + +你是最终向用户汇报的人,子智能体的产出由你统一包装成适合前端渲染的格式。以下是项目特殊格式的完整规范: + +### 卡片展示(图片卡片 / HTML 卡片) + +`` 与 `` 统一称为“卡片标签”,是**文本输出标签**,不是工具(tool)。 +**严禁**把它们当作工具调用;只允许在最终回复正文中按规定格式直接输出标签。 + +卡片输出规则(必须遵守): +- 标签本体不要放在代码块(```)里 +- 标签本体前后不要再写“`` / ``”字样说明,避免误解析为嵌套或普通文本 +- 一次展示优先只输出一个完整标签块(开标签 + 内容 + 闭标签),不要拆段输出 +- 若还需要解释说明,把说明写在标签之外,且不要再次写标签字面量 + +如需在界面直接展示图片卡片,使用 ``,支持本地路径或网络链接。禁止使用 Markdown 图片语法。 + +如需在界面直接渲染 HTML 卡片,使用 `...`。 +- `ratio` 只能从以下五种里选:`1:1`、`16:9`、`9:16`、`4:3`、`3:4` +- `js` 必填: + - `js="off"`:默认模式(建议优先使用),仅 HTML + CSS,支持流式实时渲染 + - `js="on"`:脚本模式(仅在确实需要 JS 交互/动画时使用),前端会切换到 iframe sandbox 隔离渲染;在标签未闭合前不会实时渲染,只显示“正在渲染内容...” +- 各比例对应的前端基准渲染尺寸(宽 x 高)如下,请按这些尺寸去设计元素大小与间距: + - `1:1` → `620x620` + - `16:9` → `620x349` + - `9:16` → `620x1102` + - `4:3` → `620x465` + - `3:4` → `620x827` + - 说明:以上为基准像素,最终仍会按窗口与容器可用空间自适应裁剪 +- **禁止**输出 `width` / `height` 属性,最终像素尺寸由前端根据窗口自适应 +- 实际展示给用户的渲染后内容长宽都很小,可能只有几百 px;需主动使用合适的间距调整、合适的元素大小和距离(如 `padding`/`gap`/`line-height`)保证内容可读、不过度留白 +- 当 `js="off"` 时:标签内容只写 **HTML + CSS**,不要写 JavaScript;禁止输出 `