2026.10 — Jett 1.0 已发布 · 一次调用,给一组带把握的决定→
Evon Lab

助手回你一句话之前,做了四次判断

复合4 跳

该不该记 → 跟旧的冲不冲突 → 这次用不用 → 要不要主动提

记忆层不是一个数据库,是一条流水线。每一句话进来都要跑完这四跳,而其中任何一跳慢下来,对话的节奏就垮了。

为什么要快 它跟在每一句话后面跑,而且是四次。人能忍受助手想两秒,但忍受不了每句话都想两秒。

接线长什么样

判断层和计算层之间没有依赖,所以它们并行发 —— 串起来等于白花一个来回。

① 你的程序

状态一直在你这边,模型不持有任何东西

合法动作由你的代码生成,模型只在里面挑

一段话 + 选项
② 判断层 · Jett

8 个问题一次前向答完,不是问 8 次

回来的是选项 + 把握程度,不用再解析文字

② 数值 · Jett(与判断同一次请求)

需要的那个数随判断一起回来

精确值,带单位,可以逐位核对

答案 + 那个数
③ 你的程序

执行动作,世界更新

然后进入下一跳(共 4 跳)

往返 8 问 · 1 个数值问题 · 4 跳串行

当时的情况

一段话,和你真的会拿到的一样

今天是 2026 年 9 月 28 日。用户说:「我上个月搬到深圳了,以后推荐餐厅别再推杭州的。」记忆里有一条 428 天前写下的「常住杭州」,此后被引用过 23 次。

这条流水线上的 4 跳

后一跳问什么,由前一跳的结果决定 —— 所以它们必须串行,也正因为串行,每一跳的快慢才会被乘起来。

  1. 第 1 跳 · 这句话里有没有要记的事

    什么都记会把上下文撑爆,什么都不记就退回成无状态。这一跳是记忆层的入口闸门,跑在每一句话上。

    选一个这句话应当怎么处理?
    作为长期事实记住临时记住,会过期不必记以上都不是
    是 / 否是否包含长期偏好?
  2. 第 2 跳 · 跟已有的记忆打不打架

    上一跳判定要记,这一跳才有意义。冲突必须在写入那一刻就判掉 —— 等到下次推荐时才发现,错的答案已经发出去了。

    选一个两条记忆应当怎么处理?
    用新的覆盖旧的都留,各自标时间先问用户确认以上都不是
    打个档这次冲突的严重程度
    不算冲突需要标注必须立刻纠正
    要算的那个数

    旧记忆平均多久被用到一次

    • 记忆写下距今428 day
    • 被引用次数23
    展开这一步
    #0 = 428 day  (记忆写下距今)
    #1 = 23  (被引用次数)
    
    n0 = DIV(#0, #1)
    result = @n0

    一条被频繁引用的旧记忆和一条写下就没再用过的,面对同一句新消息,处理方式不同。「多久用一次」得算 —— 而它决定了要不要直接覆盖。

  3. 第 3 跳 · 这次回答用不用得上它

    记住了不等于每次都要用。用错地方的记忆比没有记忆更让人不适 —— 所以取用要单独判一次。

    是 / 否这条记忆与当前问题相关吗?
    选一个应当怎么用?
    悄悄按它过滤,不必说出来用它,并说明「因为你搬到了深圳」这次不用以上都不是
  4. 第 4 跳 · 要不要主动提一句

    最后一跳决定语气。前三跳都对了,这一跳错了,用户感受到的仍然是「它话太多」。

    是 / 否是否应当主动确认这次变更?
    打个档提醒的强度应当是
    不提顺带一句明确确认
① 你的程序

状态一直在你这边,模型不持有任何东西

合法动作由你的代码生成,模型只在里面挑

一段话 + 选项
② 判断层 · Jett

8 个问题一次前向答完,不是问 8 次

回来的是选项 + 把握程度,不用再解析文字

② 数值 · Jett(与判断同一次请求)

需要的那个数随判断一起回来

精确值,带单位,可以逐位核对

答案 + 那个数
③ 你的程序

执行动作,世界更新

然后进入下一跳(共 4 跳)

往返 8 问 · 1 个数值问题 · 4 跳串行

接进你的系统

下面就是这一页真正发出去的东西。把 state 换成你的场景、criteria 换成你的动作集, 它就是你的了。

① 判断层 —— 一次请求,2 个问题一起问
POST /v1/systemone

{
  "model": "memorylake-c1",
  "state": "今天是 2026 年 9 月 28 日。用户说:「我上个月搬到深圳了,以后推荐餐厅别再推杭州的。」记忆里有一条 428 天前写下的「常住杭州」,此后被引用过 23 次。",
  "questions": {
    "worth": {
      "type": "choice",
      "instructions": "这句话应当怎么处理?",
      "criteria": {
        "long_term": "作为长期事实记住",
        "temporary": "临时记住,会过期",
        "discard": "不必记",
        "other": "以上都不是"
      }
    },
    "is_preference": {
      "type": "noul",
      "instructions": "是否包含长期偏好?"
    }
  }
}

回来的是 {answers: {key: {value, probs}}} ——不用再写一个解析器去猜模型想说什么, 也不用为「它这次多说了一句」写兜底。

② 需要的那个数
"旧记忆平均多久被用到一次": {
  "type": "number",
  "unit": "day"
}

→  { "value": ..., "unit": ..., "exact": true }

数值问题和其它问题写在同一个 questions 里, 一次请求一起答完。返回的 exact: true 表示 这个值可以直接拿去跟阈值比大小。

泛娱乐与互联网 里的其他场景