鸿蒙 ArkTS 实战|绿茶聊天万能公式:八种话术结构模板 + 逐句拆解
·


一、核心思想
"绿茶话术"表面千变万化,底层只有三种成分:夸奖、示弱、甩锅。任意排列组合,再加一个模糊边界词,就是一句茶言茶语。本应用把 8 种常见变体固化成结构模板,每条模板对应一段可交互的公式卡片,点击展开完整拆解。代码层面只有一个数据模型 + 一个展开状态,却撑起整个识别系统。
二、数据模型:公式 = 结构化记录
interface FormulaItem {
id: number;
name: string; // 公式名
formula: string; // 结构模板
principle: string; // 核心原理
example: string; // 典型例句
breakdown: string; // 逐句拆解
response: string; // 应对策略
}
8 条公式数据:
| id | 公式名 | 结构模板 |
|---|---|---|
| 1 | 夸赞示弱式 | 赞美你 + 示弱拒绝 + 免责甩锅 |
| 2 | 以退为进式 | 抢先道歉 + 自我贬低 + 反扣帽子 |
| 3 | 挑拨离间式 | 关心你 + 暗示隐患 + 制造矛盾 |
| 4 | 贬低抬升式 | 踩第三方 + 捧你 + 绑定自己 |
| 5 | 暧昧拉近式 | 亲密称呼 + 撒娇语气 + 模糊语义 |
| 6 | 模糊边界式 | 行为越界 + 抢先定性 + 堵你质疑 |
| 7 | 卖惨博怜式 | 自我贬低 + 对比处境 + 索取情绪 |
| 8 | 绿茶三连 | 我不是那意思 + 你误会了 + 都怪我不该说 |
三、一句话拆解示例(第 8 条"绿茶三连")
{
id: 8,
name: '绿茶三连',
formula: '我不是那意思 + 你误会了 + 都怪我不该说',
principle: '万能推卸三段式:先否认意图,再归咎理解,最后自我定罪,让话题无法继续,责任永远不在她。',
example: '我不是那个意思,是你误会了……都怪我不该说这些。',
breakdown: '①"我不是那个意思"——否认主观意图,事实不重要;②"你误会了"——把错误归给理解方;③"都怪我不该说"——自我惩罚收尾,反手扣你一个"揪着不放"的帽子。',
response: '那你说说,你到底是哪个意思?说清楚了我就不误会。'
}
四、UI 实现:公式列表 + 展开互斥
与语录分析表同款交互:@State expandedId 控制互斥展开,同一卡片再点一次收起。
@State expandedId: number = -1;
toggleExpand(id: number): void {
this.expandedId = (this.expandedId === id) ? -1 : id;
}
卡片头常显"公式名 + 结构模板",展开后追加四段分析(原理 / 例句 / 拆解 / 应对):
@Builder
formulaCard(item: FormulaItem) {
Column() {
// 卡片头:编号 + 公式名 + 展开箭头
Row({ space: 10 }) {
Text(item.id.toString().padStart(2, '0'))
.fontSize(12).fontColor(Color.White)
.backgroundColor('#B45309')
.borderRadius(8)
.padding({ left: 8, right: 8, top: 2, bottom: 2 })
Text(item.name)
.fontSize(15).fontWeight(FontWeight.Bold).fontColor('#111827')
.layoutWeight(1)
Text(this.expandedId === item.id ? '▲' : '▼')
.fontSize(12).fontColor('#9CA3AF')
}
.width('100%').alignItems(VerticalAlign.Center)
// 结构模板(常显)
Text('公式:' + item.formula)
.fontSize(13).fontColor('#B45309').fontWeight(FontWeight.Medium)
.width('100%').margin({ top: 8 })
.textAlign(TextAlign.Start)
// 展开区:核心原理 + 典型例句 + 逐句拆解 + 应对策略
if (this.expandedId === item.id) {
Column({ space: 8 }) {
this.infoRow('💡 核心原理', item.principle, '#B45309')
this.infoRow('💬 典型例句', '「' + item.example + '」', '#111827')
this.infoRow('🔍 逐句拆解', item.breakdown, '#6B7280')
this.infoRow('🛡️ 应对策略', item.response, '#10B981')
}
.width('100%')
.margin({ top: 10 })
.padding({ top: 10 })
.border({ width: { top: 1 }, color: '#EEF1F6' })
}
}
.width('100%').padding(14)
.backgroundColor(Color.White)
.borderRadius(14)
.onClick(() => { this.toggleExpand(item.id); })
}
顶部用琥珀色提示条固定"万能公式总览",让用户先建立整体认知再逐条学习:
Column({ space: 4 }) {
Text('🧪 万能公式:绿茶话术 = 夸奖 + 示弱 + 甩锅')
.fontSize(14).fontWeight(FontWeight.Bold).fontColor('#B45309')
Text('三种成分任意排列组合,再加一个模糊边界词,就是一句茶言茶语')
.fontSize(12).fontColor('#92400E')
}
.width('100%').padding(12)
.backgroundColor('#FEF3C7').borderRadius(12)
.margin({ left: 14, right: 14, top: 8 })
五、列表渲染
List({ space: 10 }) {
ForEach(this.formulas, (item: FormulaItem) => {
ListItem() { this.formulaCard(item) }
}, (item: FormulaItem) => item.id.toString())
}
.layoutWeight(1).width('100%')
.padding({ left: 14, right: 14, top: 12, bottom: 12 })
.scrollBar(BarState.Off)
六、识别心法:三看三问
- 看成分:一句话里有没有"夸奖 + 示弱 + 甩锅"三件套的任意组合?
- 看责任:她的话把责任归给谁?全是别人的错、或是"都怪我"式假认错?
- 看动作:话术再美,行为是否越界?行动比台词诚实。
技术要点小结:interface 定义记录、@State 驱动互斥展开、@Builder 封装卡片、List + ForEach 渲染——这套模板可直接复用到任何"识别类 / 拆解类 / 话术库"应用。
更多推荐



所有评论(0)