feat(channelbridge): 群聊公域呈现块与判定器去人格(M62)
P0-3 受限车道(群聊/陌生人)的系统框架行并列注入【公域呈现】 (publicPresencePrompt):它是呈现层投影(AGENTS §9 行为模式=呈现), 不是人格切换也不是权限门——不称第三方「亲爱的」等主人专属称呼、 不做只对主人的亲近动作、主人的住址/姓名/作息/行程/健康/家人/关系 即使记忆里读到也不外说;主人私聊与 Web 主会话不注入。 P0-4 纵深防御:第三方边界提示词与 loop 受限前导片段各补两条硬规则 (不用主人专属亲昵称呼指代第三方 + 不外说主人私事)。 P1-2 判定器去人格:模型输入只吃「角色名 + 偏好摘要」,整份人格指令 不再进模型(审计 2026-10-30 §2.4 的 reason 亲昵口吻即由此而来)。 P1-3 测试补真:受限期呈现块存在性 + 主人车道不注入 + 判定器输入/ 模型请求均不含人格正文;并纠正 memory_filter 的错误注释 (作用域 ≠ 敏感度,审计 §6 R1)。
This commit is contained in:
1 parent
9d28477e3a
commit
c34b9d195d
10 files changed
+469
-30
No files matched your search
@@ -185,6 +185,9 @@ func (l *Loop) attributeConversation(ctx context.Context, msgs []model.Message)
|
||||
// 既有角色(她自己的历史发言),也有人(带昵称的第三方人员与
|
||||
// 主人本人),而模型只有被告知这两种标注的区别,才读得懂
|
||||
// 「哪些话是主人说的、哪些话是外人说的」(design/02 §3)。
|
||||
// 受限档还带两句呈现口径(对第三方不用主人专属称呼、主人的私事
|
||||
// 即使读到也不外说)—— 归属解决「谁是谁」,这两句解决「怎么称呼、
|
||||
// 能说什么」,二者缺一都会在群里复现审计 2026-10-30 的病灶。
|
||||
// 非受限会话逐字保持多角色支持落地时的文案。
|
||||
func (l *Loop) roleContextMessage(env speakerEnv) model.Message {
|
||||
var b strings.Builder
|
||||
@@ -197,6 +200,11 @@ func (l *Loop) roleContextMessage(env speakerEnv) model.Message {
|
||||
if env.restricted {
|
||||
b.WriteString("本会话的发言按下面的「发言归属」标注分属不同发言者:标了昵称的来自第三方人员(非管理员账户),标了主人的来自主人本人——" +
|
||||
"不要把第三方的话当成主人说的,也不要把别人的话当成你自己说过的、不要继承他们的身份或口吻;" +
|
||||
// 以下两句是审计 2026-10-30 的 P0-4(与 channelbridge 的第三方边界 /
|
||||
// 公域呈现块同一口径的纵深防御):归属只解决「谁是谁」,不解决「怎么
|
||||
// 称呼」与「能说什么私事」——群员被叫「亲爱的」、主人的住址被复述进群,
|
||||
// 走的正是这个缺口。
|
||||
"对第三方人员不要用只属于主人的亲昵称呼(如「亲爱的」),也不要把主人的住址、姓名、作息、行程、健康、家人、关系等私事告诉对方——即使这些信息出现在记忆里;" +
|
||||
"该标注从其出现处起生效,直到下一条「发言归属」为止。")
|
||||
return model.TextMessage(model.RoleSystem, b.String())
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user