diff --git a/plugins/ai_auto_response/core/prompt_builder.py b/plugins/ai_auto_response/core/prompt_builder.py index 36907df..aa767ba 100644 --- a/plugins/ai_auto_response/core/prompt_builder.py +++ b/plugins/ai_auto_response/core/prompt_builder.py @@ -25,7 +25,8 @@ def build_user_prompt(context: Dict, memory_hints: Dict) -> str: "只处理当前发言对应的一个话题,优先直接回答当前发言。", "如果是明确问题,先给结论;只给第一层答案,不主动展开第二层解释。", length_rule, - "能少说就少说,别自发延伸,别写成一小段说明文。", + "能少说就少说,但一定要把当前这句意思说完整,别为了短而截断成半句。", + "别自发延伸,别写成一小段说明文。", "群画像里的知识域只用于帮助理解当前消息,不代表你必须显式提到那个领域,更不要为了贴群标签而硬提关键词。", "成员记忆、群关系、群事实、向量召回只有在当前问题直接相关时才允许轻微使用,否则忽略。", "不要暴露系统记忆来源;信息不足就收着说,不要硬编。", diff --git a/plugins/ai_auto_response/core/reply_formatter.py b/plugins/ai_auto_response/core/reply_formatter.py index fc0f2ac..616e250 100644 --- a/plugins/ai_auto_response/core/reply_formatter.py +++ b/plugins/ai_auto_response/core/reply_formatter.py @@ -12,11 +12,11 @@ def finalize_reply(response: str, reply_mode: str) -> List[str]: text = text.replace("\n", " ").strip() if reply_mode == "social_short": - return split_reply_chunks(text, sentence_limit=1, char_limit=28, chunk_limit=1, allow_clip_split=False) + return split_reply_chunks(text, sentence_limit=1, char_limit=48, chunk_limit=1, allow_clip_split=False) if reply_mode == "qa_fast": - return split_reply_chunks(text, sentence_limit=2, char_limit=24, chunk_limit=2, allow_clip_split=False) + return split_reply_chunks(text, sentence_limit=2, char_limit=42, chunk_limit=2, allow_clip_split=False) if reply_mode == "qa_with_context": - return split_reply_chunks(text, sentence_limit=2, char_limit=30, chunk_limit=2, allow_clip_split=False) + return split_reply_chunks(text, sentence_limit=2, char_limit=54, chunk_limit=2, allow_clip_split=False) return [take_first_sentence(text, 28).strip()] @@ -29,11 +29,11 @@ def preview_text(text: str, limit: int = 80) -> str: def build_length_rule(reply_mode: str) -> str: if reply_mode == "social_short": - return "默认只回1句短话,通常控制在6到16个字;最多不超过一整句短句,别展开,别补第二句。" + return "默认只回1句短话,尽量简短,但必须表达完整;通常控制在8到24个字,必要时可以放宽到一整句短句,别截半句。" if reply_mode == "qa_fast": - return "优先1句话;如果确实需要,可以拆成2条短消息发出,每条优先控制在24字内,先给结论,不要主动补第二层解释。" + return "优先1句话;如果确实需要,可以拆成2条短消息发出,每条尽量控制在42字内,先给结论,不要主动补第二层解释。" if reply_mode == "qa_with_context": - return "优先控制在1句话;必要时可以拆成2条短消息发出,每条优先控制在30字内,只给第一层答案。" + return "优先控制在1句话;必要时可以拆成2条短消息发出,每条尽量控制在54字内,只给第一层答案。" return "尽量短,像群友临时接一句,不要长篇大论。"