2026-10-09 校注:文中部署目录、服务、版本和验收计数为各段标注日期的历史记录;当前可验证状态见 current-status-2026-10-09,本次未复跑历史测试或读取私有健康/对话数据。

Humon 显式状态转折与绝对 TTL v1

为什么需要这一层

Humon 已能理解“我很累”一类当前、明确的第一人称自述,但此前对“我不累了”“缓过来了”采取了否定即拒绝的保守策略。这会漏掉人的状态已经变化这一关键事实,使旧的直接证据继续影响回复。

同时,延迟读取和重复融合曾可能把证据寿命重新从“本次读取时间”起算;由 energy/stress/focus 派生的 mood 标签也可能比来源维度存活更久。这两类问题都会让系统记住一个已经过时的人,而不是持续感知一个正在变化的人。

状态转折语义

新解析器 humon-state-transition-v1 只接受严格、当前、第一人称且语义明确的状态变化,并输出固定结构:

  • dimension
  • operation=supersede
  • direction=improved|changed
  • 受限的 target_label
  • confidence、observed_at、不可逆 source_ref
  • parser_version

转折表示“旧状态不再成立”,不表示系统知道新的数值。因此:

  1. 清除该维度当前的直接值和 known 状态,回到 unknown。
  2. 如果 mood 是由同一旧状态派生的 tired/anxious/focused 等标签,同时清除。
  3. 不把“不累了”猜成某个中性 energy 分数。
  4. 历史自报仍保留作审计,但转折本身不写成 ground truth、feedback 或校准值。
  5. 单独的转折不会触发休息、减负或另发消息;同一当前消息中另有独立、明确的新状态自报时,该报告仍可按正常规则生效。

普通任务完成语句、泛化“好多了”、服务器 pressure、问题、过去时、指令、示例与代码全部 fail-closed。

同回复与延迟读取闭环

Hermes 插件升级为 1.4.0,本地接口升级为 humon-inline-evidence-v2:

  • payload 顶层仅允许 schema_version、user、event_ref、reports、transitions;
  • 每类最多 4 项,总计 1–4 项;同一维度不能重复;
  • 先应用 transition,再应用当前的新 report;
  • 当前回复可立即看到 transition_evidence 与 transition_dimensions;
  • HTTP body、日志、数据库和 gbrain 都不保存原始消息;
  • 未授权身份在解析与网络访问前即返回;
  • loopback、Bearer、精确字段集合和 4096-byte 上限保持不变;
  • 实时插件与 Hermes/Codex 延迟读取器之间仍实行 120 秒事务化跨来源去重。

绝对证据寿命

所有直接报告和转折都以“原始 observed_at + 维度 TTL”为不可延长的截止点:

  • energy:2 小时
  • focus:90 分钟
  • stress:4 小时
  • mood:4 小时

延迟读取只能缩短,不能扩展声明的 expiry。重复自然融合会携带原始观察时间,不会把上一份 state 的生成时间变成新的证据起点。派生 mood 继承其来源维度 TTL,例如 tired 来自 energy 时最多只活 2 小时。

过期事件在读取器入口即被过滤;持久化账本读取、当前真值投影、融合与回复查询均使用同一条时效边界。

隐私与语料审计

对近 90 天的 676 条去重用户消息进行了只输出汇总的离线审计:

  • 新自述解析结果:0
  • 新状态转折结果:0
  • 泛化任务“好了”形状:4,全部被严格规则拒绝
  • 原始消息未写入审计输出或 Humon 数据库

该样本中四个普通任务完成表达被拒绝;不能由此推断所有未来语料都不会误判。上述结果为当时离线审计记录,本次未重新读取用户对话库。

2026-07-17 正式部署证据

  • 开发镜像与正式运行目录均通过 compileall、定向 Ruff 与 70 项全量测试。
  • 覆盖否定/歧义解析、同维度事件优先级、绝对 TTL、派生 mood TTL、同回复 schema、跨读取器去重、查询、ground truth/history、插件降级和原文不落库。
  • 开发、正式运行目录、正式集成副本及 Alaya 插件副本一致。
  • humon-context 1.4.0 由真实 Alaya PluginManager 加载,唯一注册一个 pre_llm_call hook。
  • 安全普通消息探针:授权上下文 1 个、未授权 0 个;direct=false、transition=false、action=none;数据库计数不变且探针原文不在数据库中。
  • 错误 Bearer 返回 403,所有相关计数不变。
  • humon-webui.service 与 hermes-gateway-alaya.service 均 active/running。
  • 01:35 与 01:40 两个重启后自然样本均带 dimension_observed_at 和 dimension_ttl_seconds;01:40 仍保留 01:30:02 的原始维度起点,没有把 TTL 重置到本轮融合时间。两份样本都保持 unknown-first、action=none。
  • 当前 natural v3=62、duplicate natural slots=0、历史 race-deduped=1;ground truth=0、feedback=0、transition observations=0、privacy events=0,没有制造测试性人类状态。
  • quality=operational-collecting、operational_ready=true;longitudinal、baseline、delivery 仍未放行。
  • 回滚点:${HOME}/.hermes/backups/humon-v3-pre-state-transition-20260717-013056,目录 700,数据库和私有配置 600。

已知的独立运行告警

manas 网关长期占用默认 API server 端口 8642,alaya 的同名可选子平台因此报告端口冲突。两套 systemd 主服务当前均 active,Humon 使用独立的 loopback 8657,真实 Alaya PluginManager 和 Humon hook 均已验证可用;该告警不影响本层,但多 profile API 端口仍应另行梳理,不能在未知消费者前提下直接改端口。

仍需自然验证

  1. 等待真实对话中自然出现的明确状态自述或转折,观察同回复效果与延迟读取去重;不主动诱导用户制造样本。
  2. 持续审计假阳性、绝对 TTL、重复自然槽与隐私写入。
  3. 保持主动投递关闭,直到原有 7 天、200 natural、真值、shadow、个人基线、帮助率和打扰率门槛全部满足。

关联

1.5.0 与精度元数据的关系

状态转折继续只撤销旧事实而不猜新值;现在还会同时清除该维度的 dimension_value_kinds 与 dimension_bands,防止 unknown 状态残留旧的 low/high 或 numeric 标记。绝对 TTL、派生 mood 寿命和 inline/delayed 幂等语义不变。详见 humon-direct-evidence-precision-v1。