← 全部文档

智能体对话编排

用户在「消息」里对 帮助智能体 或 工作智能体 说话时,系统如何选材料、如何调工具、如何约束回答。用户继续说人话,不必写提示词。

来源 docs/core-mechanisms/智能体对话编排.md

表述:用户在「消息」里对 帮助智能体 或 工作智能体 说话时,系统如何选材料、如何调工具、如何约束回答。用户继续说人话,不必写提示词。 状态:目标机制。帮助智能体与工作智能体 继续分身份,不合并。代码尚未按本文整段重建;过渡期实现对照见文末。 关联:[产品规格.md](/docs/mech-spec) §4.1.5;帮助智能体对话操作.md(能代做什么);给目标自己找路.md(后续原则:人给目标,助手找路径);智能体调用知识文档的方式.md(知识怎么进对话);技能组成规范.md;对话主题与复盘.md


1. 为什么要单独写这一页

过去对话操作靠 进入模型工具环之前的类别判定 + 固定说法抽槽(实现上 chatintent、各类 *fromchat)。短句中文能代做,口语、英文、纠正上一轮容易漏或误伤。检索与办事也糊在一起:用户说「创建一个智能体」,帮助检索却可能读到操作规则模板,模型开始教配置、问温度,而不是去创建。

目标改成四件事:

  1. 帮助智能体和工作智能体仍是两种身份,工具面不同。
  2. 意图不再用正则猜;平台能做的事收成工具,由模型决定调不调。
  3. 材料先给目录、再按本轮选用正文;上一轮选中的不默认叠到以后每一轮。
  4. 身份、任务、约束、材料、沟通规则由产品注入,用户不必贴提示词模板。

「能代做什么」仍以 帮助智能体对话操作.md 为准。本文管 怎么编排每一轮。


2. 两种身份(不合并)

| | 帮助智能体 | 工作智能体 | |--|----------------|----------------| | 何时出现 | 未选工作区时的引导对话;选了工作区后仍在「系统」里;各模块右下角操作助手同一身份 | 已有工作区后,用户自己的助手(含自动出现的 开始) | | 主业 | 产品怎么用;对话里代做平台事 | 办事、记忆、技能、知识、落盘 | | 没有 | 个人记忆、备忘、主题复盘、人格文件 | 默认没有邀请成员、删除工作区等平台管理工具 | | 系统知识 | 可检索 | 用户问产品用法时也可检索,不作为人格 |

打开人力资源等应用时,右下角是 应用助手:同一只工作智能体(或该应用绑定的助手),工具面临时加上该应用的操作。帮助智能体接到同一类查改请求,也须调用同一套操作,不能只教去页面点。

未选工作区时,只有帮助智能体能对话:创建或加入工作区、说明产品。其它写操作先请用户选工作区。


3. 每一轮怎么走

用户发言(原文 = 本轮唯一任务)
        │
        ▼
① 按身份裁剪工具面与目录
        │
        ▼
② 选材料(廉价、结构化:要用的技能 / 知识条目 / 工具)
        │
        ▼
③ 组装提示:身份 + 本轮任务信封 + 约束 + 选中正文
        │
        ▼
④ 回复或调用工具(可多轮)→ 政策闸门执行
        │
        ▼
对用户说话:先结果或结论;需要时再依据与局限

短答续在未完成的追问上(例如刚问「这只智能体叫什么」,用户回「CRM」)时,跳过选材料,直接把短答交给进行中的工具,不要重新检索、不要重新猜意图。


4. 四层分工

4.1 工具面(谁看得见哪些工具)

不要把全部工具一次性交给任意助手。

谁在说话可以看见
帮助智能体平台写操作(工作区 / 智能体 / 技能 / 应用 / 成员 / 定时任务等)+ 系统知识检索 + plugin_invoke
工作智能体记忆、备忘、知识、技能阅读、落盘、该助手勾选的能力;默认没有 邀请成员、删除工作区
工作智能体(只对话)没有工具。只带人格与操作规则;不查数据、不写文件、不检索知识库。适合翻译、润色。人格里打开「只对话」后生效
应用助手该应用的操作清单 + 当前草稿回填

平台写操作做成 少量粗粒度工具(如创建智能体、创建工作区),工具说明用用户表达写清 何时用、何时不用(「用户说要创建智能体时用;问如何创建、或正在写文档时不用」)。中英文效果取决于工具说明是双语的,而不是词表。

4.2 选材料(每轮重选)

发给模型的是 目录(技能名称与使用范围、知识根索引、工具名),不是全书。

  • 选中后才读正文(知识两层索引、技能正文、规范库已发布条目等)。
  • 上一轮选中的只作参考,默认过期;连续多轮未再命中则丢掉。用户明确说「继续用刚才那个技能」才续上。
  • 检索词来自 本轮用户的话(可加当前所在页面),不要把整段历史拼成检索串。
  • 次数要有上限,避免检索空转。
  • 禁区:问数且已有数据连接时,通常不检索知识。用户是在 创建智能体 / 工作区,不要去取操作规则模板、人格模板当任务材料——那些篇只在用户问「如何写操作规则」时才读。
  • 应用操作清单:完整清单只在用户当前打开该应用、或正在对工作区 应用助手 说话时展开;普通工作智能体(含智能问数)只给短说明。查数据连接(含外部人事库)用问数,不要凭原话像不像「人力资源」去展开 Cadau 人力资源那套操作。
  • 选材料失败:空工作集 + 只带目录,让办事那一轮再用工具去取;禁止退回关键词去执行写操作。

4.3 工具环

模型决定调哪个工具、参数是什么。平台执行、返回回执。未见工具返回,不得声称已经查到、已经创建、已经入库。模型停手且没有 tool_calls 时,平台用本轮回执核对「有没有做成」;缺口则续跑,不按关键词代选工具(续跑提示只说缺回执,由模型按用户原话选工具)。写一份报告 / 总结报告 默认交可下载 HTML;用户点名 Word / PDF / Excel / PPT 时才走办公文档。

缺名称等必要信息时:工具返回「还缺什么」,对话追问,并给出合理默认(如工作区默认「我的工作区」)。不要展开成配置问卷(温度、技能绑定、生成 HTML 等用户没要求的项)。

不让用户看到半截活(实现:agenttool/runner_recover.go):

情况平台怎么办
正文被输出长度上限掐断、或半路断流只收到一段让模型从中断处紧接着续写并拼成一条(最多 4 段),不把半句话当最终答复
用户已说清改法(版式、部门怎么显示、重做),模型却复述再问「是否按此」提醒一次:按最新要求改完交付;若历史口径打架、把握不住,说明本对话已经太长、容易出错,请按最新要求新开一条对话
同类工具错误连刷、或轮数用尽不再直接报错中断,改为无工具收尾:说清已做成什么(附文件链接)、卡在哪、用户下一步怎么说
模型返回空正文,或去掉「下一步」围栏后只剩省略号「...」当作没回答:先提醒再要一次(需要工具就立刻发出 tool_calls);仍空则告诉用户没写出回复,请再说一次。不把「...」存成最终答复
工具参数因单次输出上限被截断(finish_reason=length,典型是把几万字 HTML 塞进一次 file_write)该调用不执行;回执说明是输出上限、与上下文无关、换模型没用,并给对症拆法:file_write 用 append_to 分段写(每段约 12000 字)、办公文档分多次 add/batch、查询一次注册一条。不再因此改选模型
工具参数不是合法 JSON 但 finish_reason=tool_calls(供应商把嵌套参数写坏,如 MiniMax 的 {"item":…} 包裹、重复字段、半路停住)该调用不执行;回执说明「不是长度问题」、给出出错位置与参数尾巴,要求写成扁平标准 JSON 重发。过去被误报为「达到长度上限」并顺手换了模型
上游 5xx / 429 / 连接被重置视为瞬时错误,整轮重试
用户浏览器与服务器连接断开生成在后台继续;页面改为轮询生成进度接管显示,完成后刷新历史,不再只报「连接已中断」

本轮以最新一句话为准:给模型的「本轮用户消息」加框只强调按这句话的意图办事、历史仅作背景,不带与本轮无关的报表 / 附图特例;判定用的是用户原话(不含系统拼进去的帮助片段、附件正文摘录)。旧附件只在用户明确指代(「这张图 / 刚才那个文件」)或紧接的极短追问时才继承。未回答的待确认问题(如「新智能体叫什么」)15 分钟后失效,不会把之后无关的话当成答案。

平台少替模型拿主意(2026-09-08 起;对照 Cursor 一类智能体的分工):

过去现在
用户原话含「查 / 统计 / 部门」就按关键词对预定义查询,对上了就在工具层拦截探表、逼模型 query.run(曾把「查看 part 表」配成员工名单)匹配结果只作候选建议写进提示;探表 / 看结构 / 现场 SELECT 是否合适由模型按原话判断,工具不再拒绝
续跑靠十来组关键词表猜「用户要 HTML / 要 Excel / 要写知识库」,猜中就强推、强制 tool_choice、代模型发起合并、用固定话术顶替答复(曾把「哪个文件是你刚才生成的」连推三轮,最后生成了没人要的文件)只核对模型自己的说法与本轮回执:说「已生成 / 已写入 / 已记住 / 已创建 / 本轮已取数」却没有对应回执才提醒;说「我来查 / 现在合并」却没发工具才提醒;说「合不了」而工具明明能合才指出。其余一律尊重模型收尾;提醒最多 3 次;不再强制 tool_choice、不代发工具、不整段顶替答复
系统提示每轮带 2~3 万字说明书(办公文档、脚本、文件链接、定时、企微……),禁令 100~200 条系统提示只留身份、【本轮优先】、八条【做事原则】、能力目录、【平台细则】目录、人格与操作规则、少量短桩;固定文字禁令 ≤ 30、≤ 4500 字(有测试守着)。各工具的说明书改为 guide_read 按需读取,且首次调用某工具时随回执附上一次(agenttool/guides.go)
压缩预算跟厂商窗口走(MiniMax 1M 几乎永不摘要)路由 profile 可设 context_max_runes(建议 240000),按质量阈值压缩
报表一次塞几万字 HTML,或用 Python 出图再塞进报表默认较短 HTML + 平台 ECharts;超过一屏分段 append_to。对话预览图 / Word·PPT 才用 chart(PNG)
模型心算几十个数的合计与比例(一次 12,000 字思考仍对不上)新增 python_calc:受限 Python(标准库白名单、AST 审查、不能读写文件 / 联网 / 反射、10 秒);用户表达为「临时算一下」
没有进度清单,长任务靠模型脑记新增 todo_write:模型先列步骤、做一步更新一步;界面渲染成勾选清单(用户表达「任务清单」)
压缩摘要是一段自由文本工具环检查点摘要与跨轮滚动摘要都改为固定字段(主要请求 / 关键事实 / 已完成有回执 / 失败尝试 / 用户纠正 / 未完成 / 当前一步 / 下一步)
「自动」选模按权重随机,同一任务里各轮可能换模型模型服务台可勾自动时首选(当前 MiniMax-M3):可用就一律选它,出错先走同一模型的另一家供应商(失败时改走),再轮到其它

4.4 政策闸门(不交给模型自由发挥)

政策做法
权限不是成员不能建智能体;不是管理员不能邀请。工具返回明确错误
确认删除工作区、移出成员、删智能体等,执行前必须确认
如何 vs 代做问「如何 / 怎么 / how to」只说明,禁止调用写工具
模型不可用什么都不做,宁可再问一句,不要用关键词乱执行
纠正用户说「刚才不是…」:本轮不按误判继续写;刚误建的智能体先去掉(只是改名字时不去掉)

LLM 负责「要不要调、调哪个、参数是什么」;平台负责「准不准调、调完怎么落库、错了怎么撤」。


5. 提示词由产品注入(用户不写)

每轮组装给模型的约定,对应「身份、任务、约束、材料、沟通」五段。用户继续说短句。

始终很短地带着:

  • 身份:帮助智能体或该工作智能体的人格。
  • 本轮任务:用户最新一句话单独加框;历史和主题只是背景,不当口令。
  • 约束:材料里没有的、工具没返回的,直接说还缺什么,禁止编造功能、数据、已经做成。事实(文档/回执)与助手建议分开。
  • 沟通:需求不清先问,并给默认;不要强行作答。

按本轮选用:

  • 选中的知识 / 技能正文、当前界面、工具表。
  • 输出:代做成功用白话回执(做成了什么、在哪个工作区、下一步可以干什么)。问产品、分析制度时才用「先结论,再依据,再局限」。闲聊不必五段长模板,保留「不编造、不够就问」即可。

工作智能体的人格、操作规则仍来自该助手自己的材料;帮助智能体没有个人人格文件。


6. 和「能代做什么」怎么分工

文档管什么
本页每一轮如何选材料、调工具、约束回答
帮助智能体对话操作.md帮助智能体已能代做的事、须点名工作智能体的事、操作归口
给目标自己找路.md后续原则:代做之后避免让用户当调度员;文档柜已按能判断就挂收口
智能体调用知识文档的方式.md三层知识如何索引、切段、注入
对话主题与复盘.md工作智能体的主题是背景,本轮以最新一句话为准

7. 归档与回归

每轮应能事后看见:

  • 本轮选中和丢掉的材料
  • 调了哪些工具、是否被政策拒绝
  • 是否发生撤销(误建回滚)
  • 用户是否纠正上一轮

把失败样例收成自动化测试,至少覆盖:中英文「创建一个智能体,CRM」/「create a agent, CRM」应代做;「how to create an agent」只说明;「把主题里不适合的文字移除」不是移出成员。


8. 落地顺序

  1. 帮助智能体把 创建智能体 / 创建工作区 收成工具。 (已落地)
  2. 关键词不再拦截执行:命中后把相关工具写进本轮背景,由模型决定调不调。改名、打开页面、帮助写操作、创建技能/应用/数据连接、复盘口令、过程技能报告同此。删除类仍须用户确认(工具内政策闸门)。 (本步已落地)
  3. 帮助智能体选材料:系统知识目录 + 平台工具表。创建类跳过知识检索,避免模板抢任务。
  4. 工作智能体做知识 / 技能 / 记忆的选材料;邀请成员、删除工作区等平台管理工具继续不暴露。

9. 实现对照

目标

  • 对话入口仍是 POST /api/v1/chat / chat/stream;help_mode 区分帮助智能体。
  • 平台写操作走工具环,由服务端执行器落库。关键词只作选工具背景。
  • 插件查改仍用 plugin_invoke。完整操作表只在 client_context.plugin 指向当前应用时展开。
  • 知识两层索引、技能目录由「选材料」调用,而不是每轮整本注入。

当前代码

  • tryPlatformByIntent / tryWorkSessionOps 不再在进环前代做。
  • 帮助智能体工具:create_workspace、create_agent、rename_workspace、open_page、platform_helpops、create_skill、create_app、create_datasource、undo_last_agent。
  • 工作智能体可另用 create_skill / create_app / create_datasource;没有删除工作区等管理工具。
  • 关键词命中写入「本轮相关工具(仅供参考)」;问「如何」时注明不要调用写工具。
  • 帮助检索对「创建一个智能体 / 工作区」仍可跳过正文,避免模板抢任务(这是选材料,不是代执行)。
  • 不得把「模型不可用」退回关键词去执行删除、移出。
  • 应用操作表按当前打开的应用钉死,不凭原话、不进粘性工作集。

10. 相关机制