Documentation
¶
Overview ¶
Package pending 反问/消歧挂起态的结构化载体。
多轮对话里「上一轮问了什么、这一轮的回答如何衔接」需要一个**唯一合法形态**的 持久化载体:列内容恒为 State 的 JSON(写入端 Encode 单源),读路径只认 JSON, 非法/损坏值一律降级为「无挂起」——挂起态是瞬态(等待用户答复), 跨版本存量行早已随会话终态或预算超时结算完毕,不需要保留历史协议兼容。
本包是**通用的多轮状态载体**,与「消歧/反问」的具体语义无关: Kind/Stage/Word 等字段的取值由宿主的决策链定义,本包只负责 「结构化 + 单一编码入口 + 宽容解码」。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ColumnValue ¶
ColumnValue 落列前的归一:**只透传真正解得回的 Encode 产物**,其余(裸关键词、 形似 JSON 但损坏的串、合法 JSON 但不是 State 的对象)一律包成指定 Kind 的 JSON, 保证**列内容恒 JSON**。
守卫原先只有 strings.HasPrefix(clarify, "{"),于是 "{节点A}和{节点B}"、"{" 这类串原样落列;Parse 解不出便返回零值,**挂起态被静默丢掉**——不是降级, 是消失。透传条件改成「真能 Parse 出带 Kind 的 State」,坏串则被当作 Word 保留, 至少内容不丢。
kind 为空时 fail-fast panic(issue #54):零值 kind 落出的 Encode 产物没有 k 键,读路径 Parse 判 s.Kind != "" 失败返回零值——本函数要消灭的「挂起态 静默消失」恰在自己的零值入参下复现,且丢的方式最隐蔽(写入成功、读回为零、 两头都不报错)。落内置哨兵 Kind 不能治它:哨兵值不在宿主决策链的 Kind 词表 里,宿主读到一个不认识的 Kind 照样不恢复挂起态——消失只是往后挪了一层。 空 kind 是调用方装配缺陷,在写入点当场炸出来,好过静默丢一列挂起态。 clarify 为空不受此限:没有内容就没有挂起态,返回空与 kind 取值无关。
Types ¶
type State ¶
type State struct {
Kind string `json:"k"` // 挂起类别(取值由宿主定义,如 disambig/term/done/target)
Word string `json:"w,omitempty"` // 消歧关键词 / 被反问词条 / 抑制词条
Stage string `json:"st,omitempty"` // 反问推进态(取值由宿主定义)
Orig string `json:"o,omitempty"` // 被反问中断的原决策(消解后恢复用)
Plan string `json:"p,omitempty"` // 决策点附带的方案意图标记
}
State 挂起态。列内容的唯一合法形态。