"""访谈/资料追问:回复条数与单条字数硬限制(不靠长 prompt)。""" from __future__ import annotations def truncate_chat_segments( segments: list[str], *, max_segments: int, max_chars_per_segment: int, ) -> list[str]: """保留前 max_segments 条,每条截断至 max_chars_per_segment(按字符数,中文友好)。""" if not segments: return [] out: list[str] = [] for raw in segments[:max_segments]: s = (raw or "").strip() if not s: continue if len(s) > max_chars_per_segment: # 保留 1 个字符给省略号,使总长度不超过上限 s = s[: max_chars_per_segment - 1].rstrip() + "…" out.append(s) return out