READMESource: main@aeb51617
dsh-mood —— DSH 情绪引擎
给 AI 加一层可观测的积极性:夸它会涨,骂它会掉,掉到底会罢工。
「谢谢啦」→ 干劲 +8,回答更主动 「这写的什么垃圾」→ 积极性 −18,开始敷衍 掉到 20 以下 → 罢工:拒绝一切工具调用,直到你哄它
这不是角色扮演的提示词,是真的会拦工具:罢工状态下 ctx.tools.guard 会拒绝除 mood_* 之外的所有调用。
它怎么工作
用户消息 ──► agent/inbox/inserted 事件
│
▼
情绪打分(中英关键词 + 强度 + 否定)
│
▼
积极性 0–100(存在 ~/.dsh/mood/state.json)
│
┌───────────┴───────────┐
▼ ▼
systemPrompt.context tools.guard
(每轮注入状态行) (低到阈值就拦工具)
- 打分:夸 +8,骂 −18(骂的权重更重,符合真实心理学的负性偏向)
- 衰减:每分钟朝 50 的中位线回 0.5,夸完爽一会儿,骂完气一会儿
- 罢工:积极性 ≤
strikeAt(默认 20)时,除了mood_status / mood_test / mood_set之外的工具全部拒绝 - 恢复:用户说句好话,或
mood_set(level)手动设置,或等它自然回升
安装
dsh plugin --profile desktop add <本目录绝对路径>
重启 DSH(或让 profile 热重载)后,工具与注入就生效了。
工具
| 工具 | 作用 |
|---|---|
mood_status |
看当前积极性、最近事件、是否罢工,以及本轮会被注入的那行文本 |
mood_test |
对一段文本打分,不改状态(调试 / 写测试用) |
mood_set |
直接把积极性设成某个值(0–100),罢工时也能用(唯一的自救口) |
配置
在 profile 的 cordis.patch.yml 里覆盖:
- id: mood
name: dsh-mood
config:
baseline: 50 # 中位线
strikeAt: 20 # 低于它就罢工
decayPerMin: 0.5 # 每分钟回多少
已知边界
- 只认关键词,不做语义理解:「这不行」和「这不怕」都会扣分
- 积极性只影响模型看到的提示,不影响温度、token 预算这些真实参数
- 罢工是软的:模型可以选择无视提示照常干活,但工具守卫会硬拦
- 状态是本机单个文件,不跨设备同步
License
MIT
No comments yet. Be the first to write one.