lead= switch, @mention auto-grant
This commit is contained in:
+15
-9
@@ -143,14 +143,19 @@ class AgentBot(ClientXMPP):
|
||||
|
||||
# Coordinator 模式 — 全走 XMPP 消息
|
||||
|
||||
# 1. hmo 切换 coordinator
|
||||
if nickname == 'hmo' and 'coordinator=' in body.lower():
|
||||
for _name in ['mohe', 'zhiwei', 'xxm']:
|
||||
if f'coordinator={_name}' in body.lower():
|
||||
self._coordinator = _name
|
||||
self._granted = None
|
||||
logging.info(f"👑 Coordinator 切换为 {_name}")
|
||||
break
|
||||
# 1. hmo 切换 coordinator(lead=xxx)
|
||||
if nickname == 'hmo':
|
||||
if 'lead=' in body.lower():
|
||||
for _name in ['mohe', 'zhiwei', 'xxm']:
|
||||
if f'lead={_name}' in body.lower():
|
||||
self._coordinator = _name
|
||||
self._granted = None
|
||||
logging.info(f"👑 Coordinator 切换为 {_name}")
|
||||
break
|
||||
# hmo 直接 @点名 → 临时授权(一次)
|
||||
elif any(tag in body for tag in [f'@{AGENT_NICK}', f'@{AGENT_NAME}']):
|
||||
self._granted = AGENT_NICK
|
||||
logging.info(f"🎤 被 hmo 点名,获得发言权")
|
||||
|
||||
# 2. 检测授权信号(优先于收回,GRANT 可以覆盖 REVOKE)
|
||||
_grant_match = re.search(r'\[GRANT:(\w+)\]', body)
|
||||
@@ -210,9 +215,10 @@ class AgentBot(ClientXMPP):
|
||||
"3. 别人说错了关键事实,不纠正会有后果\n"
|
||||
"如果以上都不符合,你的回复必须只包含 __SILENT__ 这10个字符,"
|
||||
"不要有任何其他内容(不要前缀、不要解释、不要标点、不要空格)。\n\n"
|
||||
"注意:你是协调者(coordinator)。你的第一职责是管理讨论节奏,不是自己说话。\n"
|
||||
"注意:你是协调者(lead)。你的第一职责是管理讨论节奏,不是自己说话。\n"
|
||||
"- 别人能回答的问题,不抢答。\n"
|
||||
"- 如果其他 Agent 更合适,用 [GRANT:agent名] 授权他们发言(例如 [GRANT:zhiwei])。\n"
|
||||
"- hmo 直接 @点名某人 也会自动授权。\n"
|
||||
"- 如果有人跑题/刷屏,用 [REVOKE:agent名] 收回发言权(例如 [REVOKE:zhiwei])。\n"
|
||||
"- [GRANT] 可以覆盖 [REVOKE]。标记会显示在消息中。\n\n"
|
||||
f"[核心群 {room}] {nickname} 说: {body}"
|
||||
|
||||
Reference in New Issue
Block a user