Skip to content

feat(gateway): 支持 NO_REPLY / SKIP 静默输出标记,抑制通道转发 - #514

Open
jerryliang122 wants to merge 1 commit into
TencentCloud:developfrom
jerryliang122:feature/silent-reply-marker
Open

feat(gateway): 支持 NO_REPLY / SKIP 静默输出标记,抑制通道转发#514
jerryliang122 wants to merge 1 commit into
TencentCloud:developfrom
jerryliang122:feature/silent-reply-marker

Conversation

@jerryliang122

Copy link
Copy Markdown

Summary

新增「静默输出」机制:当 AI 的最终回复以 NO_REPLYSKIP 标记结尾时,该消息不再转发到会话绑定的通道,实现"无需回复时不打扰用户"。

  • 匹配规则(宽松):忽略大小写;标记须为消息末尾的独立词,前后允许空白与中英文标点(如 好的。NO_REPLY。skip)。检测函数为纯函数 is_silent_reply(),与 strip_thinking 同置于 infra/utils/llm_text.py,不引入任何配置项。
  • 生效出口
    • IM 交互回复:collapse_to_invoke_response()(默认 invoke 模式全量覆盖;HITL 恢复轮次走同一路径自动生效;静默时连同工具生成的媒体一并丢弃)
    • 定时任务 / 主动关怀推送:Gateway.push_text_from_session()agenttext 两种任务类型均在 outbound 定型后统一检查)
  • 明确绕过:团队后台回复(on_reply)保持原有流程不做拦截;response_mode: "stream" 的通道(如企业微信实时流式)不经过 invoke 包装,天然绕过本机制、标记原样输出——以上两点已用代码注释与测试固化。
  • 线程历史与用量统计不受影响,仅抑制通道送达;仪表盘/CLI/HTTP 原生聊天不在拦截范围内。
  • 默认 SOUL.md 模板(experts/library/default/SOUL.md)在「行为铁律」中写入该约定,新建 Agent 开箱即知。

Target branch

  • Base is develop (feature / fix — default)
  • Base is main (release/* or hotfix/* only)

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Refactor / chore
  • Release / hotfix

Test plan

新增/扩展测试:

  • tests/unit/utils/test_llm_text.py(新增):标记匹配/不匹配的参数化用例——末尾中英文标点、大小写、标记居中不触发、SKIPPER / NO_REPLYX / 无分隔粘连不误判、空串
  • tests/unit/gateway/test_response_mode.py:末尾 NO_REPLY 时只产出 COMPLETEDSKIP + 工具媒体全部静默;标记出现在文本中间时正常发送;stream 模式绕过(标记原样输出不抑制)
  • tests/unit/gateway/test_gateway_push.py:cron agent 任务与 text 任务的输出带静默标记时不调用 channel_manager.push_text

本地验证:

  • make lintmake typecheck(mypy --strict)通过
  • make all2750 passed, 14 skipped。仅 tests/unit/infra/setup/test_service.py 3 例失败,已通过 git stash 在未改动的 develop 基线上复现同样失败(本机 systemd 环境问题,与本 PR 无关;CI 的 Linux/Windows runner 上该组用例正常)
  • Added/updated tests

Checklist

  • Updated CHANGELOG.md(Unreleased → 新增)
  • README / docs updated(本改动无需更新文档:机制说明位于默认 SOUL 模板与代码注释中)

@jerryliang122

jerryliang122 commented Sep 1, 2026

Copy link
Copy Markdown
Author

提请这个PR 是因为,在qqbot 群聊中有相关需求。 目前框架无法解决 当qqbot 可以获取全量消息并且无需at 回复时,agents 无法静默问题。
以及当任务触发的时候可以解决有问题才通知,无问题静默

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant