Tanka · Work Memory / Design Note 2026 · 05 · 14 · Top-level

AI Coding · 协作观测 Future layer on Work Memory + Tanka

协作观测框架

在当前 Agent 仍然先验坍塌的前提下,观察并描述人在协作中是否注入了方向,以及这种注入是否在更长时间尺度上呈现可学习的结构。

Date
2026 · 05 · 14
Status
Top-level design note
Scope
Future layer over Work Memory · Tanka memory
Subject
人机协作中的负熵痕迹

§ 00 — Preface

一段不替代评估的观察

它不告诉用户「你是谁」,也不告诉团队「这个人能力如何」。它只显化已经发生过的、可被追溯到证据的事件。

这个框架建立在 Work Memory 之上,不替代它。Work Memory 负责记录工作事实和思考证据;协作观测层负责在这些证据里显化人的方向性输入:用户在哪里改变了 AI 的默认走向,这个改变后来怎样了。

它是一面镜子,不是判官。镜子只显影,不下判决。

用户在哪里改变了 AI 的默认走向?这个改变后来怎样了? 两个核心问题 · 全篇围绕

§ 01 — Position

一句话定位

这个框架只观察两件事:

  1. 人是否在协作中注入负熵。
  2. 这种注入是否在更长时间尺度上呈现可学习的结构。

它不是评估系统。所有用户面输出必须能追溯到 source refs:session id、canonical entry、commit、PR、spec。无 source 不发言。

1.1术语

W · plausible space
当前可被 AI 生成并讲得通的叙述空间。系统每多给一个解释、画像、标签,W 就在扩大。
plausible
不是「真实」或「被承诺过」,而是「能自洽、听起来合理、可被 AI 继续论证」。
梯度 · gradient
用户通过行动留下的方向性痕迹:拒绝、约束、承担代价、维持选择。不是人格,不是综合解释。
baseline · trajectory prior
这段协作自身演化出的「自然下一步」分布。判断「非默认」的目标参照系。
valence
正负价值判断。「有梯度」≠「正确/优秀」。框架剥离 valence。
source refs
支撑某个观察的原始证据引用。任何用户面陈述必须可追溯回去。
empty-state
未识别到事件时的输出。它不是空白,是对「没观察到什么、同时观察到什么」的明确陈述。

§ 02 — Premise

核心前提:plausible 坍塌

当前 Agent 在很多场景下会输出 plausible-but-flat 的分布——它能把 A 讲得合理,也能把非 A 讲得合理。

只要用户不施加方向性约束,决策方向就容易变成 AI 在 plausible 选项池里的采样结果。这就是「先验坍塌」:输出看起来丰富,实际方向性很弱。

在这个前提下,人的非默认动作才有观测价值。用户拒绝、约束、改道、承担代价,这些行为不是又一个 plausible 叙述,而是在压缩可能性空间。

如果未来 Agent 不再坍塌、或采样已稳定携带方向,这层框架的意义需要被重新定义。这不是永久真理,只是当前产品阶段的工作假设。

§ 03 — Refusal

为什么不能做评估系统

把对话提炼为「探索型 / 架构思维 / 协作能力 8 分」看起来很产品化,但它在结构上是错的。

原因不是「标签不礼貌」,而是它增加 W:把本应被用户行动压缩的可能性空间,重新扩张成更多可被讲通的身份解释。AI 已经能为他生成一百个听起来都对的解释;再加一个「数据驱动」的画像,本质上是在 plausible 池里再加一个更有权威感的选项。

本框架的判别标准只有一句:

它是在增加 W,还是在显化已有梯度 唯一判别 · 应贴在每个用户面输出旁
VS W → 扩张 · plausible-but-flat AI 生成的可能叙述 「类型标签」 「能力分数」 每多一个 plausible 解释 · W 再加一 TRACE · 已有梯度 · 显化 用户行动留下的痕迹 拒绝 约束 承担代价 每一次承诺 · W 收缩一截 FIGURE 01 W 扩张 / 梯度显化
Fig. 01左侧是 W 的扩张:每多一个 plausible 解释、画像或分数,可被讲通的叙述空间就再加一。右侧是梯度的显化:用户已经做过的取舍被照亮,本来被讲通的路径反而消失。

§ 04 — Philosophy

设计哲学(三条)

4.1镜子,不是判官

用户面输出必须停留在观察陈述层。

可以这样说

我给出过直接实现方案,你没有继续推进它,而是要求先理解原代码的不变量。后续三次类似情境里,你也做了同样的选择。

不能这样说

你是谨慎型工程师

前者是事件,用户可以继承、修正或否认。后者是身份命题,会被内化、反弹,并改变它所测量的对象。

4.2痕迹考古,不是身份综合

真正有信号的不是「偏好分布」——偏好太容易被 AI 模仿和包装。真正可观察的是承诺痕迹:用户在哪里放弃其他路径、拒绝更快方案、增加自己的工作量、在没有充分证据时做了方向明确的选择、后来承认「那次是错的」。

痕迹考古的目标不是推断人格,而是把已经发生过的负熵输入重新变得可见

4.3分析单位是协作,不是用户

同一个用户,跟另一个 Agent、做另一个项目、处在另一个组织压力里,可能呈现完全不同的模式。所以本框架只描述:

某个用户、与某个 Agent、在某个项目上的协作状态 分析单位 · 不是「这个人本质上是什么样」

这条边界对 Tanka 尤其重要。Tanka 会通过 User ID + Project ID 聚合长期记忆,若不锁定「协作」为分析单位,系统很容易滑向个人评分和组织管理画像。

§ 05 — Two questions · Three states

核心观察

5.1当下是否有负熵注入?

不是用户发言越多越好——大量指令也可能只是把 AI 的 plausible 生成继续推下去。真正有信号的是非默认动作:用户压缩了选择空间,承担了代价,并让后续工作沿着这个方向展开。

5.2长期是否结构化?

单点惊讶只说明某一刻用户做了非默认动作。结构化观察的是:这些非默认动作是否可以被学习。如果系统对「用户何时何处会这样做」的预测残差长期下降,说明这种负熵注入呈现结构。

残差长期不下降,本身也是一个信号。它不说明用户差,只说明这段协作关系里,人的方向性输入暂时没有形成稳定模式,或系统尚未学到。

5.3三状态分类(仅内部使用)

NEGATIVE-ENTROPY · 负熵 用户压缩方向空间 W 收缩 · 路径被约束 ZERO · 零 沿既有路径推进 W 近似不变 POSITIVE-ENTROPY · 正熵 用户授权 agent 继续生成 W 继续扩张 · 熵泵在运转 FIGURE 02 empty-state ≠ 空白 · 第三类不是中性
Fig. 02三种协作状态。左:人的约束让路径收束。中:沿既有路径静静推进。右:当用户长期把方向交给 agent,agent 继续生成 plausible 选项并执行——empty-state 不是「没事发生」,而是「没观察到人的方向,同时观察到熵泵仍在运转」。

§ 06 — Internal mechanism

梯度点 · gradient point

「梯度点」是内部工程术语,不进入用户面 UI。用户面只展示事件本身。

内部定义:

AI 预测路径与用户实际输入之间的 divergence 达到阈值,满足代价与持续性条件的事件。 梯度点 · 内部定义

6.1为什么用惊讶度

信息论里,自信息是 I(x) = −log P(x)。事件概率越低,信息量越大。「惊讶」不是修辞,它就是信息量。这件事的关键不是让 AI 评价用户,而是反过来利用 AI 的预测能力定位它自己触及不到的东西

系统的发言主语

「我在这里没有预测到你会这样做。」
而不是「我判断你很有洞察力。」

6.2参照系 · trajectory prior

  • 通用先验 — 测到的是「怪异度」。
  • 用户历史平均 — 测到的是「漂移」,分不开成长和噪声。
  • 轨迹先验(目标) — 测到「用户偏离了自己自然演化路径的下一步」。

MVP 阶段可用启发式近似轨迹先验;但目标必须保留,否则系统退化成「用户风格分析」。

6.3三要素合取

STAGE · 01 轨迹先验 系统预测的「自然下一步」 STAGE · 02 用户实际输入 偏离 · 落在分布尾部 GATE · 01 高惊讶? I(x) = −log P(x) 否 → 常规推进 ↓ 否则继续 GATE · 02 有代价? delay · rework · 拒绝捷径 否 → 随机发散 ↓ 否则继续 GATE · 03 3-5 turn 维持? 向后看一个窗口 否 → 抖动 · 丢弃 ↓ 否则记录 OBSERVED 观察事件 EVENT 进入命运追踪 FIGURE 03 偏离 · 代价 · 持续 · 三者合取
Fig. 03只有惊讶可能是随机发散,只有代价可能是常规流程,只有偏离可能是抖动。三条门同时近似命中,才把候选事件落为可记录的观察。

§ 07 — Negative space

负空间扫描

强信号不总在用户说了什么,也常在用户拒绝接住什么。

这类「沉默的拒绝」比正面表达更难伪装,也更容易被普通日志漏掉。但风险很高,不能凭空解释沉默。必须同时满足:

  1. AI 的建议足够具体,可以确认「用户没有接住什么」。
  2. 后续行为沿着另一个方向展开
turn t AI 提议 · 建议 A 具体到可识别 · 但未被接住 PIVOT B-continues B · 被维持的方向 后续工作沿 B 展开 FIGURE 04 「没接住什么」 · 不是 「反对了什么」
Fig. 04负空间不靠解释沉默来成立。AI 的建议必须具体可识别,并且后续工作真的沿另一条约束继续展开——否则只是普通的「话题转移」。

用户面陈述可以这样

我给出过直接实现方案,你没有继续推进它,而是把问题转回依赖边界。后续实现也沿着依赖边界展开。

不可以滑向

不喜欢直接实现。

§ 08 — Fate tracking

命运追踪

梯度点本身不携带 valence。它只说「这里注入了方向」,不说「这个方向对不对」。

方向后来怎样,要在更长窗口里观察:被维持 · 被扩展 · 被复现 · 用户后来怎么重新解释。

错的梯度点不能被删除 关键约束 · 否则系统在做 hindsight 选择

如果系统只保留事后看起来正确的事件,它就在偷偷做 hindsight 偏好选择,最后呈现的是一个无菌版本的用户。这仍然是评价系统,只是包装成了观察系统。

正确做法:事件保留、命运追加、意义可重开

T0 T1 T2 T3 T4 EVENT 原始事件 MAINTAINED 继续沿此方向 EXPANDED 影响更多决策 USER NOTE 用户重新解释 REVERTED 事件仍保留 · 状态追加 FIGURE 05 事件保留 · 命运追加 · 意义可重开
Fig. 05同一个事件的时间线。reverted 不擦掉原始痕迹,只追加一条「后来被推翻」的命运。这样系统不会偷偷选择事后看起来正确的版本。

§ 09 — Second-order predictability

二阶可预测性

单点惊讶回答「用户此刻是否做了非默认动作」;二阶可预测性回答「用户的非默认动作是否可学习」。

一个成熟的协作关系可能这样:

  • 单点上,用户仍然经常让 AI 惊讶。
  • 长期上,AI 开始知道用户会在哪些位置介入

不矛盾——第一层是事件概率,第二层是事件发生位置和模式的可预测性。

EARLY · 早期 单点惊讶高 · 介入位置散落 系统不知道用户会在哪里介入 MID · 中期 介入位置开始重复 同样的关口被反复触发 LATE · 后期 单点仍非默认 · 介入位置可预测 介入模式被学到 · 不评价好坏 PREDICTION RESIDUAL · 预测残差
Fig. 06残差长期下降,说明负熵注入呈现结构。残差不下降不等于不好——可能项目变化太快、用户在刻意探索、或系统证据不足。系统只观察结构在不在,不评价。

§ 10 — Pressure tests

三个压力测试

这些压力测试不是附录,它们决定了框架边界。

CASE · 01

完全授权的用户

「你来决定下一个最有价值的任务」——系统不应解读成「高度信任 AI / 战略授权能力强」。

三状态分类下,长期授权不是中性 empty:在当前 Agent 是 plausible-option generator 的前提下,它把方向选择交给熵泵继续运转。

empty-state 不能静默:「没有人的梯度」≠「没有事情发生」。

CASE · 02

事后证明错误的干预

高惊讶 · 高代价 · 被维持的选择,事后证明错了——仍然记录。它不是「好梯度」也不是「坏梯度」,它是一个方向性输入。

命运可以记录为 reverteduser_reframedcaused_rework,但事件不能删。

防止观察层变成事后胜利叙事。

CASE · 03

新手的错误干预

不断错误介入,按单点惊讶看会产生大量信号——但梯度的量 ≠ 方向质量

不能因为信号多 credit 用户,也不能因为信号错删除。继续观察反转率、冲突、复现、单位代价产出、自我标注。

仍是协作状态观察,不是能力评分。

§ 11 — Output forms

输出形态

11.1事件流(时间线 · 单事件)

2026 · 05 · 14 · Node runtime discussion 我给出过直接迁移路径,你没有接住,而是先要求锁定 Windows runtime、hook 入口和 Electron-bundled Node 的边界。后续设计确实围绕这三个约束展开。

11.2边界与方向(聚合 · 不下身份判断)

可以这样聚合

过去 30 个会话里,有 5 个事件指向同一类模式:当我准备快速进入实现时,你更常把问题拉回依赖边界、运行时边界或数据边界。

不能滑向

你是架构优先型开发者

11.3对话式确认

System asks 我注意到最近几次你都在写代码前追问「这个抽象的代价是什么」。这是一个真实模式,还是刚好这些项目特殊

如果用户说「只是这几个项目特殊」,系统接受这个反馈,不把它解释成「用户否认自己的模式」。

11.4Empty-state(必须诚实)

When nothing was observed 过去 30 个会话里,我没有识别到能称为方向性输入的事件。同时我注意到代码库增加了 N 行,大部分方案由 agent 提出并被接受。我不能告诉你这是好是坏——只能告诉你:这段协作目前更像是 agent 在你的授权下塑造代码,而不是你持续塑造 agent 的方向。

主语必须是系统:「我没有识别到」「我注意到」「这段协作目前呈现为」——避免把 empty-state 变成对用户的指责。

§ 12 — Relation to Work Memory

与 Work Memory 的关系

Work Memory 的 synthesizer 已经在抓 motivation · approach · attempts · lessons · decisions · blockers · next_steps——天然兼容。区别只是:

  • Work Memory 记录「这段工作为什么发生、怎么推进」。
  • 协作观测 记录「人的方向性输入在哪里出现、后来怎样了」。

三条边界:

  1. 不改 canonical log。观察事件是派生数据,绝不写回事实源。
  2. 不替代日报。Daily report 面向团队进展;协作观测默认面向用户本人。
  3. 不进团队看板。它比工作报告更接近个人协作反思,误用风险更高。

短期最有用的改动,不是新建复杂模型,而是强化现有 synthesizer prompt——显式扫描纠偏、拒绝、约束注入;扫描负空间;在 attempts 里区分 tried-and-rejected;在 motivation 里保留用户原话;artifact-only 工作不强行编造解释。

§ 13 — Data shape · Phased rollout

数据形态 · 分阶段落地

13.1派生层存储

建议放在项目 root 下,与 canonical log 解耦:

// ~/.work-memory/<userId>/<orgId>/projects/<projectId>/observations/
{
  "id": "obs_2026-05-14_ab12",
  "project_id": "tanka-work-memory-plugin",
  "event_window": { "started_at": ..., "ended_at": ... },
  "source_refs": [
    { "type": "session", "id": ... },
    { "type": "entry",   "id": "e_2026-05-14_abcd" },
    { "type": "commit",  "id": "a1b2c3d" }
  ],
  "user_visible_summary": "我给出过直接实现路径,你把问题拉回到运行时边界。",
  "internal": {
    "kind": "gradient_point",
    "baseline": "trajectory_prior",
    "signal_types": ["explicit_constraint", "negative_space"],
    "cost_signals": ["delayed_implementation"],
    "persistence_turns": 4,
    "confidence": "medium"
  },
  "fate":           [ /* append-only */ ],
  "interpretations":[ /* versioned, never overwritten */ ],
  "user_feedback":  [ /* higher priority than system interpretation */ ]
}

13.2四个阶段

PHASE · 01

Prompt hardening

不改 schema。让 synthesizer 更稳定地保留观测所需证据:纠偏、负空间、代价、持续。

PHASE · 02

Local observation report

work-memory observe --window 30d · 本地 markdown · 不上传 · 验证事件流是否有用。

PHASE · 03

Observation store

新增 observations/ 派生目录。命运追加、解释版本化、user_feedback、source refs audit。

PHASE · 04

Tanka integration

仅在 opt-in 下进入 Tanka。本人可见 · 不进管理评分 · 不排名 · 不输出用户类型。

§ 14 — Risk map

核心风险

RiskMitigation
观测滑向评价文案规则禁止标签、分数和能力判断。
系统过度解释沉默负空间事件必须有后续行为支撑,并以低确定性呈现。
管理场景误用默认本地、私有、opt-in,不进入团队日报。
生成 W+1 叙述只显化 source-backed 事件,不综合人格画像。
只保留「正确事件」事件不可删除,只能追加命运和解释版本。
二阶可预测性被理解为稳定性评分明确它只描述协作模式是否可学习,不评价好坏。
baseline 退化为通用比较长期目标锁定 trajectory prior,不做「和平均人相比」。

§ 15 — Bottom line

设计底线

Closing · 镜与判官

这层系统是一面镜子
不是判官。

镜子不告诉用户他是谁,
只让他看见
自己在这段协作里做过什么。

看见之后怎么解释、是否接受、下一步怎么走,仍然属于用户

Subject
协作状态 · 不是用户本质
Verb
显化 · 不综合
Object
source-backed 事件 · 不是身份判断
Tense
已发生的痕迹 · 不是未来预测