本文以我的参赛作品「路线先遣队」为例,聊聊在 AI Agent 中设计多角色系统的方法论——如何让同一组数据通过不同性格视角产生完全不同的输出,以及这种设计模式在企业 AI 应用中的潜力。


引言:同一组数据,为什么需要多种"声音"

AI Agent 领域有一个被低估的设计维度:输出人格化

大多数 Agent 的输出风格是单一的——要么正式严谨,要么轻松友好。但在实际业务场景中,不同用户对信息的消费方式差异巨大:

  • 决策者想要一句话结论
  • 执行者想要操作步骤
  • 旁观者想要轻松易读的摘要

我在高德开放平台Skill创意征集赛的参赛作品「路线先遣队」中,尝试了一种方案:用角色系统让 AI 以多种性格视角解读同一组数据

🔗 Skill地址:https://clawhub.ai/qhvssonic/amap-route-reviewer


一、设计目标

场景:用户提出旅行需求,系统调用高德 API 生成路线方案,然后需要帮用户做决策。

传统做法:列出方案的距离、耗时、费用让用户自己比较。

问题:冰冷的数字很难帮人做决策。“飞机2.5h / ¥1200” vs “高铁8h / ¥600”——信息都给了,但用户还是纠结。

我的思路:让 AI 替你体验一遍,再用你能共鸣的方式告诉你感受。而且不同人需要不同的"感受视角",所以设计了四个角色。


二、四角色系统设计

2.1 角色定义的三层结构

每个角色不是一句"你是一个毒舌的AI"就够了,需要三层定义:

第一层:性格内核(决定看问题的角度)
第二层:语言风格(决定怎么表达)
第三层:行为锚点(具体场景下的典型反应)

以「毒舌里子」为例:

层级 定义
性格内核 用反讽和冷嘲表达真实评价,吐槽中藏着有用信息
语言风格 反话正说、"恭喜你"系列、短句为主、冷幽默
行为锚点 堵车→"三环冥想体验";下雨骑行→"你真是个天才";费用高→"家里有矿"

为什么需要第三层?

只给 LLM 前两层定义,输出容易"飘"——有时候很毒舌,有时候又突然变温柔。行为锚点的作用是给模型足够多的"校准样本",让它理解"毒舌的分寸"在哪里。

2.2 四个角色的设计逻辑

不是随便定了四种性格,而是基于信息消费需求的分类:

角色 满足的需求 用户画像
🔥 热血小高 “我需要被推一把” 犹豫型用户,需要正面鼓励
👵 碎碎念德仔 “我需要知道细节风险” 谨慎型用户,怕遗漏
🤡 毒舌里子 “我需要听真话” 理性型用户,讨厌废话
🧊 高冷阿巴 “我只需要数据” 分析型用户,自己下判断

四者覆盖了用户决策风格的四个象限。用户可以按自己的当前心态自由组合。

2.3 角色之间的冲突是"Feature"

同一条路线,四个角色给出的评价可能完全相反:

  • 下雨天自驾:热血说"浪漫",毒舌说"愚蠢",碎碎念说"危险",高冷说"风险+40%"
  • 高消费方案:热血说"值得",碎碎念说"心疼",毒舌说"有矿",高冷说"性价比0.6"

这种冲突不是bug,是核心价值。 用户看完四种截然不同的观点后,自然会形成自己的判断。这比AI给一个"正确答案"更有决策帮助——因为旅行选择没有客观正确答案,只有主观偏好。


三、数据→性格反应的映射机制

角色系统最大的技术挑战是:如何保证角色的反应是基于真实数据的,而不是AI在"编段子"

3.1 触发规则表

我设计了一张数据条件→角色反应的映射表,作为 Prompt 的核心组成部分:

数据条件 热血小高 碎碎念德仔 毒舌里子 高冷阿巴
降水 + 户外活动 雨中浪漫 带伞/别感冒 天才决策 滑倒概率%
拥堵 > 2小时 听歌享受 带水/别憋尿 免费冥想 拥堵占比%
步行无遮荫 > 3km 晒太阳补钙 防晒霜/带水 免费桑拿 紫外线指数
景点评分 < 4.0 小众有惊喜 评分低别踩雷 花钱看差评 评分x.x/5
连续驾驶 > 2h无服务区 风景看不够 别疲劳驾驶 膀胱赛跑 服务区间距km

这张表的本质是"领域知识的结构化表达"。

它约束了 LLM 的发挥方向——不是让模型随便联想,而是在"满足条件X时,角色Y必须从方向Z来评价"这个框架内创作。既保证了真实性(每条评价都关联具体数据),又保留了创造性(具体怎么表达由模型发挥)。

3.2 数据深挖指引

为了让评价更有"内行感",我在 Prompt 中列出了高德 API 返回数据中值得挖掘的细粒度字段:

  • POI评分 + 评论数:低分景点让毒舌重点关照
  • 营业时间:如果到达时已关门,碎碎念提醒、毒舌嘲讽
  • 沿途设施密度:无厕所/便利店区段触发"膀胱挑战赛"
  • 红绿灯数:过多触发"停车起步大师训练营"
  • 收费站数量和费用:累计费用让毒舌发挥"这条路是金子铺的"
  • 公交换乘步行距离:换乘多让碎碎念发挥"别坐过站"

数据越细,角色评价越像真的"走过一遍",而不是在泛泛而谈。


四、两种输出模式的设计

4.1 速评模式

每个角色给一段总评。适合快速决策。

🤡 毒舌里子:
"经典热门路线,排队2小时拍照30秒。
 不过飞机至少体面,花钱买罪受也得有底线。"

设计要点:控制在3-5句话内,有观点、有数据、有态度。

4.2 实况模式

角色模拟按时间线行进,逐段发消息:

🤡 [08:00 出发]:"外面飘着小雨。你确定不是在拍公路灾难片?"
🤡 [09:30 到达]:"门票80,停车20。2000年前李冰治水没想到有人下雨来看水。"
🤡 [17:00 返程]:"全程280km,花了一天钱看了一天雨。"

设计要点:

  • 每条消息关联一个路线节点(出发/途经/到达)
  • 每条消息至少引用一个真实数据点
  • 按时间线排列,有"实时感"

实况模式的灵感来自"朋友旅行时给你发消息"的真实体验——你不在场,但通过对方的实时动态有代入感。


五、这种设计模式的更广泛适用性

角色系统不只适用于旅行评价,它的本质是一种多视角信息解读框架。以下场景也适用:

场景 角色设计思路
代码审查 Agent 安全官(只看漏洞)+ 性能控(只看效率)+ 架构师(看设计)+ 新人(看可读性)
投资分析 乐观派(看增长)+ 悲观派(看风险)+ 数据派(只看财报)+ 趋势派(看行业)
产品评审 用户视角 + 开发视角 + 商业视角 + 竞品视角
设备运维 效率导向(最快修好)+ 成本导向(最省钱)+ 安全导向(最稳妥)+ 预防导向(看趋势)

核心模式:N个固定视角 × 同一组数据 = N种有明确立场的解读

比起让一个 AI 给"全面而平衡"的答案(实际上往往是废话),多角色系统强制从不同极端给出观点,用户在冲突中形成自己的判断。这符合决策心理学中的"考虑对立面"(consider the opposite)去偏技术。


六、Prompt Engineering 的关键经验

做完这个Skill,总结几条角色系统设计的Prompt工程经验:

6.1 行为锚点比性格描述重要10倍

不要:你是一个毒舌的AI,说话要阴阳怪气
要:堵车→"恭喜解锁三环冥想";下雨骑行→"你真是个天才";费用高→"家里有矿"

给10个具体例子,比写100字性格描述有效得多。

6.2 触发条件要跟数据绑定

不要:如果用户的方案不好,就吐槽(什么叫"不好"?模型自己判断会飘)
要:如果降水概率>60%且活动类型=户外,则触发天气相关吐槽(数据条件明确)

6.3 限制输出长度

角色容易"话太多"。需要明确约束:

  • 速评:3-5句话
  • 实况每条消息:1-3句话
  • 每条消息必须关联一个数据点

6.4 显式定义"不做什么"

毒舌里子不能真的冒犯用户,只能吐槽"方案/情况"。
碎碎念德仔不能变成"否定一切"的悲观主义者。
角色的边界和角色的特征同样重要。


七、总结

「路线先遣队」的角色系统设计,核心是三件事:

  1. 基于用户决策需求设计角色(不是为了搞笑而搞笑,每个角色服务一种信息消费方式)
  2. 用触发规则表绑定数据和角色反应(确保输出有据可查,不是AI编故事)
  3. 在可控框架内保留创造性(约束方向,不约束具体表达)

这种"多角色×同一数据"的设计模式,在任何需要"从多个角度解读信息帮助决策"的 AI 应用场景中都适用。

🔗Skill地址:https://clawhub.ai/qhvssonic/amap-route-reviewer

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐