ForcePilot/backend/package/yuxi/channels/contract/dtos/truncation.py
Kris b88c0ae29e feat(channels): 批量新增多渠道网关限界上下文基础代码与契约
新增完整的 channels 限界上下文模块,包含契约层、领域核心层、应用服务、管道编排、插件体系、基础设施组合根等全层级代码,新增飞书与微信 iLink 渠道插件基础结构,补充各类 DTO、端口协议与领域服务实现。
2026-07-02 03:22:12 +08:00

53 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""截断检测 DTO。
定义上下文截断检测的不可变值对象,包括截断候选与截断结果。所有 DTO 均为
``dataclass(frozen=True)``,仅依赖标准库,用于上下文长度超限时的截断
检测与降级策略决策。
"""
from __future__ import annotations
from dataclasses import dataclass
@dataclass(frozen=True)
class TruncationCandidate:
"""截断候选。
描述一个待截断的文本片段,包括文本内容、来源与长度,用于截断策略的
优先级排序。
字段:
text: 文本内容。
source: 来源system_prompt | context_remark | user_message | ...)。
length: 文本长度。
"""
text: str
source: str
length: int
@dataclass(frozen=True)
class TruncationResult:
"""截断结果。
描述截断检测的结果,包括是否发生截断、缺失内容与是否降级到持久化查询。
检测到截断时携带补全文本与长度信息FR-28
字段:
is_truncated: 是否发生截断。
missing_content: 缺失内容(未截断时为 None
fallback_to_persistent: 是否降级到持久化查询(默认 False
completed_text: 补全后的文本(补全失败时为原始截断文本,未截断时为 None
original_length: 原始截断文本长度(未截断时为 None
completed_length: 补全后文本长度(未截断时为 None
"""
is_truncated: bool
missing_content: str | None = None
fallback_to_persistent: bool = False
completed_text: str | None = None
original_length: int | None = None
completed_length: int | None = None