# 两段式回复:任务识别 + ack + 追发结果 ## 问题 admin 收到复杂任务("研究一下 taste-skill")时,hermes 执行需要 1-5 分钟。 单段式回复会让对方等很久才收到回复。 ## 方案 两段式回复:先秒回确认,再后台执行,完成后追发结果。 ## 实现 ### 任务识别 `_is_task_request(body)` — 检查消息是否包含以下关键词: ```python TASK_KEYWORDS = ["研究", "学习", "查一下", "分析", "帮我", "看看", "安装", "配置", "搭建", "写一个", "改一下", "怎么", "什么是", "解释", "总结", "调查", "research", "install", "setup", "analyze"] ``` 命中任意 1 个即判定为任务请求。 ### ack 生成 `_gen_ack(ctx, body, sender_disp)` — 根据任务内容生成个性化确认: ```python "研究/学习/看看" → "收到,我来研究,搞定了给你报告" "安装/配置/搭建" → "好的,我来处理,完了给你结果" "查/分析" → "收到,我查一下,稍等给你报告" "写/改/帮" → "好的,我来弄,弄好给你报告" 其他 → "收到,我来处理,有结果跟你说" ``` ### 流程 ```python def process_event(event, ...): if role == "admin" and _is_task_request(body): # Phase 1: 立刻发送 ack ack = _gen_ack(ctx, body, sender_disp) _send_text_verified(talker, ack_text, key) _queue_insert(event, ack_text, ..., "ack") # Phase 2: 正常执行 + 发送结果 draft, exit_code, stderr = generate(ctx, event=event, role=role) # ... verify → policy → send ``` ### 与普通 admin 的区别 | 模式 | ack | prompt | 回复格式 | |------|:---:|--------|---------| | admin 任务 | ✅ 先发 | "执行任务→输出报告" | 做了什么/发现了什么/结果 | | admin 闲聊 | ❌ | "以火星人口吻回复" | 对话式 | | member | ❌ | hermes -z 纯文本 | 对话式 | ## 当前状态 已实现。admin 任务模式的两段式回复正常运作。 待改进:admin 任务超时时不回退 member 模式(member 产出的对话式回复不符合"报告"预期)。