pending

package
v0.31.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2026 License: MIT Imports: 2 Imported by: 0

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

func ColumnValue(clarify, kind string) string

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 取值无关。

func Encode

func Encode(s State) string

Encode 编码为列值(唯一写入形态)。

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 挂起态。列内容的唯一合法形态。

func Parse

func Parse(v string) State

Parse 解码列值:仅认 Encode 产物;非 JSON / 损坏 / 无 Kind 一律返回零值(无挂起)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL