卡片生成相关讨论

会议时间:2026-03-31 参与人员:说话人A(项目负责人,主导)、说话人B(小胖子,卡片生成功能开发者)

一、核心议题

1. 卡片生成顺序异常

  • 说话人A 发现:当前 agent 在执行流程中,所有卡片几乎都是”全部输出在最下面”,并没有按照”完成数据研究 / 完成进出口记录”等节点穿插展示。
  • 工具调用确实是在过程中调用的,但卡片渲染没有跟着工具调用就近输出。
  • 期望效果:在调用了贸易记录、客户分析等工具之后,卡片应在该工具调用位置就渲染出来。

2. 当前卡片生成的实现逻辑

  • 说话人B 解释当前方案:
    • 最后一段文本是一整段输出(先生成所有卡片,最后生成一段总结/说明文本)。
    • 卡片输出位置通过提示语约束:让模型在最后生成的总结文本里放占位符,然后根据占位符渲染卡片。
  • 说话人A 指出:当前是”占位符方案”,不太可靠。

3. 期望的渲染方式(参照旧 ASDK 方案)

  • 思路:基于 message parts 流式渲染。message 由很多 part 组成(text part / tool-call part 等),按顺序遍历:
    • 遇到 text part 直接输出;
    • 遇到 tool call,根据工具名做特殊 render(类似 switch 条件:if a → return Component A)。
  • 区分场景:
    • 通过命令产生的文本,需要捕获相应的工具调用;
    • 非命令产生的文本,捕获写入文件的工具调用,根据文件类型(MD / HTML / PDF)输出对应卡片。

4. 当前实际观察到的问题

  • 即便用占位符方式,模型在工具调用过程中几乎没有产生中间文本输出,只在最后产出一段总结文本。
  • 因此说话人A 想象中的”工具调用之间穿插显示卡片”实际并不会自然发生——因为模型默认只在结尾才输出说明文。
  • 说话人B 之前测试过中间有文本输出的情况,但那种文本是”接下来生成 XX”这类预告,不是真正的总结。

5. 模型相关的猜测

  • 说话人A 怀疑跟模型有关:当前用的是 GPT 模型;之前试另外一种情况时表现不太一样。

二、技术决策与方案细节

1. 短期方案(保留占位符方式)

  • 当前先继续用占位符渲染,不立刻改造。
  • 改进点(说话人B 当前正在做的方案):
    • 先把已经生成的卡片清单收集下来;
    • 在最后生成总结文案时去匹配,找合适位置替换占位符。
  • 说话人B 表示这种做法应该比当前实现稍好。
  • 说话人A 同意先这样,后面再考虑调整。

2. 长期方案(提示词约束 + 工具渲染)

  • 在系统提示词里加约束:
    • “执行过程中及时输出进展”
    • “尤其是生成了文件时快速输出总结”
  • 加上这些后,模型会偏向边执行边输出,例如”执行完 1-3 个工具后输出一段进展,再执行 4 个后再输出一段进展”。
  • UI 层只需要 render 工具调用产生的部分(哪些工具有 UI 就 render 对应组件)。
  • 这样实际效果:AI 输出过程中会自然把”顺序 + 文案 + 卡片”交叉在一起,不再依赖最后总结里的占位符。

3. 占位符方式的辅助优化

  • 即使继续用占位符,也可以在提示词里加上”输出进展”这类要求,那么占位符会被插入到模型边执行边输出的进度文本里,从而获得近似”穿插”的效果。
  • 例如:“分析报告 → 占位符 → 贸易记录 → 占位符” 这种文字与卡片穿插的呈现。

三、UI/交互细节

  • 期望最终呈现:分析报告卡片、贸易记录卡片、客户分析卡片等应在它们各自被生成 / 被调用的位置就近渲染,而不是堆叠到消息底部。
  • 用户从外部直接复制文字进来(未点”商机转化 agent”按钮)时,路径不同,导致没识别为完整流程,但不影响占位符方案的效果——只要把那一行加上去也能渲染。
  • 占位符版本与现有版本相比:占位符已经能让卡片”出现在某个位置”,比全部堆在末尾的体验好。

四、后续行动与分工

角色任务
说话人B(小胖子)短期:完善占位符匹配方案——收集已生成卡片清单,在最后总结文案中按位置替换占位符;可先这样做并发到群里看效果
说话人B后续可尝试”提示词约束 + 工具渲染”长期方案:在提示词中加入”及时输出进展”,并按 part 顺序流式 render
说话人A明天再决策是否切换到长期方案;先观察短期方案效果

五、其他要点

  • 商机转化 agent:说话人A 是直接复制文字进来(未点击 agent 按钮),这是”贸易记录、客户分析里没有邮件”的原因之一——流程入口未走完整路径。
  • 文本通过工具去渲染——这是说话人A 想要的最终模式:UI 由 tool call 产生,而不是依赖事后字符串解析占位符。
  • 当前模型在工具调用过程中倾向于”沉默执行 + 末尾一次性总结”,这是设计长期方案时必须配合提示词的关键原因。
  • 如果模型真的能配合输出进展,那它在执行的过程中就会自然交错”文字进展 + 工具调用卡片”,与短期占位符方案相比,长期方案对 AI 控制更自然,对前端逻辑更简单(只需 render parts)。
  • 说话人B 表示长期方案理解了,可以试。
  • 决议:长期方案明天再定要不要做。