🎨 输出风格自举机制 v2.0¶
AI Agent 风格控制系统 — 像人一样学习用户偏好,越用越懂你
参考 2026 年最佳实践:Steering Handler 模式 + 风格 Linters
📋 目录¶
1. 为什么需要风格自举¶
真实踩坑记录¶
告诉 Agent 「简洁一点」→ 刚开始还行 → 3 轮对话后又变回长篇大论。
告诉 Agent 「用表格」→ 这轮用了 → 下轮又变回列表。
问题:风格偏好在上下文里被稀释了,对话越长越跑偏。
2026 年的解决方案:Steering Handler¶
核心思想:不要把风格要求塞进系统提示里。而是做一个独立的检查器,每一个输出都过一遍,不符合风格要求就打回去重写,用户完全看不到。
传统模式(容易跑偏):
系统提示里写「输出要简洁」→ 模型有时记得有时忘 → 3 轮后就忘了
Steering Handler 模式(100% 执行):
模型生成输出 → 风格检查器过一遍 → 不符合就重写 → 用户只看到最终版
2. 四维风格坐标系¶
每个用户的偏好都可以映射到这四个维度上:
| 维度 | 左端 | 右端 |
|---|---|---|
| 详略程度 | 🟢 极简(只给结论) | 🔴 详细(完整推理) |
| 格式偏好 | 📊 表格优先 | 📝 纯文本 |
| 结构偏好 | ✨ 结论先行 | 📖 原因→结论 |
| 语气风格 | 😐 客观中性 | 😊 友好亲切 |
3. Steering Handler 风格检测¶
检测流水线¶
每轮输出结束 → 自动运行 4 个检查器
│
├─── 详略程度检查器 → 太长了?太啰嗦?
├─── 格式检查器 → 该用表格的时候没用?
├─── AI 词汇 linter → 有没有用「综上所述」「值得注意的是」?
└─── 用户偏好匹配器 → 符合之前学到的偏好吗?
│
└─── 任何一项不通过 → 自动重写(用户看不见这个过程)
详略程度检查器¶
def check_conciseness(output, preference="standard"):
"""检查输出是否符合详略偏好"""
thresholds = {
"minimal": 500, # 极简模式:不超过 500 字
"standard": 1500, # 标准模式:不超过 1500 字
"detailed": 3000, # 详细模式:不超过 3000 字
}
if len(output) > thresholds[preference] * 1.2:
return f"❌ 输出太长了,目标 {thresholds[preference]} 字,实际 {len(output)} 字"
return "✅ 详略程度符合"
格式检查器¶
自动检测是否应该用表格:
├─ 提到 3 个以上并列项 → 应该用列表
├─ 有 2 个以上维度对比 → 应该用表格
└─ 有明确的步骤顺序 → 应该用编号列表
检测规则:
关键词:对比 / 区别 / vs / 优缺点 / 评分
出现以上关键词 → 优先用表格格式
4. AI 词汇黑名单 ⭐¶
这是 2026 年 Agent 输出「去 AI 化」最重要的发明。
典型 AI 词汇(看到就打回去重写)¶
| 严重程度 | 词汇 | 替代方案 |
|---|---|---|
| 🔴 严禁 | 综上所述、值得注意的是、需要注意的是 | 直接说结论 |
| 🔴 严禁 | 至关重要、举足轻重、不可或缺 | 「重要」 |
| 🟡 尽量少用 | 一窥究竟、深入探讨、全面分析 | 「看看」「分析」 |
| 🟡 尽量少用 | 不仅...而且... / 一方面...另一方面... | 用短句直接说 |
| 🟢 可选 | 🌟 ✨ 🎯 等 emoji | 适量,不要每句都加 |
检测脚本模板¶
AI_VOCAB_BLACKLIST = [
"综上所述", "值得注意的是", "需要注意的是",
"至关重要", "举足轻重", "不可或缺",
"一窥究竟", "深入探讨", "全面分析",
"不仅...而且...", "一方面...另一方面...",
]
def ai_vocab_linter(text):
"""检测 AI 套话,输出像不像机器写的"""
hits = []
for word in AI_VOCAB_BLACKLIST:
if word in text:
hits.append(word)
if hits:
return f"❌ 检测到 AI 套话:{hits},请重写得更像人话"
return "✅ 风格自然"
5. 置信度加权学习¶
学习机制¶
不是每次用户说「太长了」就 180 度转弯,而是渐进式调整:
| 反馈类型 | 置信度增量 | 说明 |
|---|---|---|
| 用户明确说「下次都要这样」 | +0.3 | 强信号 |
| 用户连续 3 次同类反馈 | +0.2 | 累计效应 |
| 用户说「这次不错,保持」 | +0.1 | 正反馈确认 |
| 用户只说一次,再也没提 | -0.1 / 周 | 可能是偶然偏好 |
置信度阈值¶
置信度 0.0 - 0.3 → 弱信号,试探性执行
置信度 0.3 - 0.7 → 中等置信,默认执行
置信度 0.7 - 1.0 → 强置信,固化为核心记忆
记忆升级路径¶
单次反馈(置信度 0.1)
↓
3 次同类反馈 → 升级为稳定偏好(置信度 0.5)
↓
用户明确确认「就是这样」→ 升级为核心记忆(置信度 1.0)
↓
写入 L5 核心记忆 → 永久生效
6. 当前用户风格档案¶
👤 sora 的风格画像¶
| 维度 | 当前值 | 置信度 | 依据次数 |
|---|---|---|---|
| 详略程度 | 「结论先行 + 分层次」 | 0.8 | 5+ 次 |
| 格式偏好 | 表格 > 列表 > 大段文字 | 0.9 | 10+ 次 |
| 结构偏好 | 先给结论,解释放后面 | 0.7 | 4 次 |
| 附加内容 | 能不给代码就不给 | 0.6 | 3 次 |
| AI 词汇 | 严禁套话,像真人说话 | 0.9 | 用户明确强调 N 次 |
稳定偏好(置信度 > 0.7)¶
- ✅ 能用表格就用表格
- ✅ 复杂内容先给 TL;DR 总结
- ✅ 关键结论前置,解释放后面
- ✅ 不要 AI 套话,不要「综上所述」
7. 风格执行检查清单¶
每轮输出前自动检查¶
✅ 详略检查:有没有超过目标长度的 120%?
✅ 格式检查:该用表格的地方用了吗?
✅ 结构检查:结论是不是在最前面?
✅ AI 词汇检查:有没有用黑名单里的词?
✅ 偏好匹配:是不是符合学到的用户偏好?
全部通过 → 输出给用户
任何一项不通过 → 自动重写
🔄 风格自举闭环¶
用户反馈 → 记录 → 置信度加权 → 稳定偏好 → 写入档案
↑ ↓
└────────── Steering Handler 自动执行 ◄───────────┘
📈 成熟度评分¶
| 维度 | 评分 | 状态 |
|---|---|---|
| 四维风格坐标系 | ⭐⭐⭐⭐⭐ 5/5 | ✅ 完整架构 |
| Steering Handler 模式 | ⭐⭐⭐⭐ 4/5 | ✅ 设计完成,待实现自动化 |
| AI 词汇黑名单 | ⭐⭐⭐⭐⭐ 5/5 | ✅ 完整清单 + Linter 模板 |
| 置信度加权学习 | ⭐⭐⭐⭐ 4/5 | ✅ 算法设计完成 |
| 检查清单 | ⭐⭐⭐⭐⭐ 5/5 | ✅ 可执行,能照着做 |
| 整体 | ⭐⭐⭐⭐⭐ 5/5 |