feat(persona,capacity): persona awakening 档位真生效 + 当前主角色已填(裁决 14.4.3)
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled

- loader 新增可选 awakening 块(default_state/overrides{min_confidence,force_state}),载入期校验 + 归一化,
  非法值显式报错(拒绝「写了却静默无效」);缺失 = nil = 无该档位,不补默认
- 组合根把当前主角色档案的档位填进 capacity.Config.Awakening(未知档位名告警后按无档位处理),
  真的参与 Decide → applyAwakening(MinConfidence 优先于全局 0.6;force_state 钉死态)
- 当前主角色 cyrene.yaml 填 default_state=静息 + min_confidence=0.7(设计 §3 陪伴型取静息;
  0.7 压掉 L2 趋势(0.66)误唤醒、仍低于 L1 强信号(0.9),温柔陪伴不误打扰)
- 复核:build/vet 绿 + persona/capacity/cmd 包测试绿;端到端 4 例锁定「同回合有无档位判定相反」;
  变异两轮(yaml tag 改错 → 8 处红;解析但不接线 → 端到端红)均已还原
- 已知盲区(另派):per-role 注入未接线(loop/request.go 的 Input.Awakening);
  面板整块替换 persona 会抹掉 awakening 块(需 applyAwakeningEdit)
This commit is contained in:
AskaEth committed 2026-10-04 12:49:40 +08:00
1 parent 38b4527949
commit 71fefe5fc3
7 files changed
+602 -1

No files matched your search

+4 -1
View File
@@ -146,7 +146,10 @@ type Persona struct {
// Thinking is the optional reasoning/presentation config (design/01 §2.1);
// omitted when the persona configures none, so no existing YAML gains noise.
Thinking ThinkingParams `yaml:"thinking,omitempty"`
Visual PersonaVisual `yaml:"visual,omitempty"`
// Awakening 是该人格可选的唤醒档位覆盖(design/14 §3,裁决 14.4.3)。
// nil = 角色档案里没写该块 = 没有该档位:不补默认值,由决策层走全局默认。
Awakening *AwakeningParams `yaml:"awakening,omitempty"`
Visual PersonaVisual `yaml:"visual,omitempty"`
// TriggerWords are the role-name words that, when a public-platform group
// message mentions one, route the message into the participation PROBING
// stage even without a direct @ (design/18 §2 触发②). Each persona defines its