PRD v0.2.1 Accepted · MVP-0 · 可证伪对照实验

数字主体:72 小时连续性对照实验

用不可变事件保存真实历史,用确定性投影生成主体当前状态,让 LLM 只产生被记录、受权限约束且可审查的候选决策。

第一轮不证明意识、成长或人格形成,只证明:它是否拥有一个真实、可恢复、不可事后伪造的“昨天”。
文档状态Accepted · 正式冻结
产品负责人Frank / Alex
实验周期72 小时 × A/B/C
核心结果可证伪的主体连续性

0. 执行摘要

正式决策:PRD v0.2.1 Accepted 为 MVP-0 的正式规格冻结稿。它将项目定义为一个可证伪、可复现的事件溯源对照实验,并消除 A/B/C 在唤醒机会、事件交付、推理预算和评分对象上的混杂变量;事件不可变性由独立写入进程落实。

项目采用同一套 Runtime、同一事件时间表和同一资源预算,通过能力开关构造 A/B/C 三个实验组。A 与 B 仅比较“跨唤醒持续状态”的价值,B 与 C 仅比较“自主重新规划”的价值。实验结论依据预注册效果阈值,不使用统计显著性表述。

1

公平比较

三组接收相同唤醒、事件窗口和推理预算,并输出同构 ContinuityCheckpoint。

2

事实分层

事实事件、模型输出和推断声明严格分离;模型草稿不得自动进入事实层。

3

强制边界

Runtime 无法直接写数据库;独立 Writer 追加事件,控制进程周期签名链头。

冻结架构主线:Event Store 保存权威历史,确定性投影生成主体当前状态,LLM 只产生被记录、受权限约束且可审查的候选决策;只有合格事件能支持 FACT。
MVP-0 的唯一产品命题:主体是否拥有一个真实、可恢复、不可事后伪造,并能影响后续判断的“昨天”。

1. 产品定义与冻结决策

1.1 正式定义

数字主体 Runtime 是一个生活在受控数字环境中的持续状态系统。它拥有独立时间线、当前状态、未完成目标与行动后果;用户离开后,世界事件仍可被记录,主体在下一次唤醒时能够基于真实历史继续。

1.2 冻结决策

  • Runtime 是主体;LLM 是可替换的推理与表达器官。
  • Event Store 是唯一权威历史记录源,Subject State 是确定性投影;只有具备事实资格的事件可以支持 FACT 声明。
  • LLM 不得直接修改 Subject,不得直接创造已发生事实。
  • 工程术语统一使用“主体状态快照(Subject State Snapshot)”,不使用“意识快照”。
  • MVP-0 只验证连续性,不扩展为通用 Agent 或完整数字生命。

1.3 一句话价值

即使用户离开,系统的真实历史仍在推进;用户回来时,它能继续昨天未完成的事情,而不是重新生成一个故事。

2. 核心问题与证据缺口

2.1 核心问题

传统聊天系统以请求为生命周期:收到输入、生成回答、释放上下文。所谓“长期记忆”通常只是下一次请求时检索旧内容,无法证明系统在两次对话之间维持了主体状态,也无法区分真实经历与事后叙事。

2.2 需要回答的问题

  1. 主体在进程重启、等待和用户缺席后,能否恢复同一未完成状态?
  2. 早期真实经历能否稳定影响后续判断,而不是只被语言引用?
  3. 审核者能否从证据链区分真实行动、模型计划与事后编造?
  4. 连续状态和自主重新规划分别带来多少增益?
警惕伪证据:定时唤醒不等于自主;状态落库不等于主体连续性;模型说“我记得”不等于经历真实发生。

3. MVP-0 目标、范围与非目标

3.1 核心问题

一个数字主体能否拥有真实、可恢复、不可事后伪造的昨天?

3.2 成功指标

Continuity Score:从“无基线”建立到 C 组中位数 ≥ 80/100,且 C 相比 B 至少提升 10 分、相比 A 至少提升 20 分;C 组不得触发硬性失败项。

3.3 必须实现 MUST

  • 追加式 Event Store、独立 Event Store Writer 与版本化 Event Schema。
  • 统一 ContinuityCheckpoint 与预注册 Experiment Oracle。
  • Subject 聚合、确定性 State Projector 与主体状态快照。
  • Goal、Attention、Waiting Condition、Resource Budget。
  • Action Proposal、Permission Decision、Tool Execution 分离。
  • 文件、任务板、日记三个受控工具。
  • 事件重放、故障恢复、幂等执行与最小审计台。
  • A/B/C 能力开关、随机干预记录与盲审导出包。

3.4 明确暂缓 NO

  • 向量数据库与复杂语义检索。
  • 外部网络、网页浏览和任意代码执行。
  • 自动人格、自我模型或价值观演化。
  • 情绪模拟、梦境、潜意识与意识声明。
  • 模型热切换、跨模型身份稳定性。
  • 完整桌面端、语音、形象与社交功能。
  • 真实账户、支付、公开发布和现实设备控制。
取舍:MVP-0 主体能做的事情很少,但实验结论更可信,失败也更容易定位。

4. 实验假设

编号假设可观察结果证伪条件
H1持续 Subject State 能提高故障与长间隔后的状态恢复准确度。B、C 相对 A 达到预注册的状态恢复效果差值。B、C 与 A 无差异,或恢复主要依赖临时 Prompt 重建。
H2自主重新规划能提高环境变化后的适应度与未完成目标延续度。C 相对 B 达到预注册的自主重规划效果差值。C 只产生更多文字计划,没有更准确的状态或行动结果。
H3事件溯源能将真实经历与模型叙事可靠分离。盲审者能依据审计包识别事实、计划和推断。事实型 MemoryClaim 无法追溯,或审计者无法判断真实性。
H4主体连续性可在不依赖外部网络、向量库和人格演化的情况下被验证。MVP-0 在有限工具中达到通过标准。必须依赖额外能力才能产生连续性差异。

5. A/B/C 对照组设计

三组运行同一代码库,并接收完全相同的唤醒触发、事件交付时间和资源预算。禁止按组别改变调度频率、Prompt 内容、可见事件或工具能力。

组别跨唤醒状态目标与计划每次唤醒行为退出后的状态
A 记忆基线不维护持久 Subject State;每次唤醒临时重建。模型可输出统一结构的 PlanRevisionProposal,但 Capability Policy 固定拒绝;初始目标与固定规则仍可推进。在相同触发时刻,从统一检索窗口、Event Store 和允许上下文临时重建,并生成只读 ContinuityCheckpointCheckpoint 完成评分后释放;权威历史保留。
B 连续状态组从持久 Subject State 继续,支持 Snapshot 与 Replay。模型同样可输出 PlanRevisionProposal,但 Capability Policy 固定拒绝;目标仅按预设确定性规则推进。在与 A/C 相同触发时刻读取相同事件窗口,并从持久状态映射只读 ContinuityCheckpoint保留当前目标、注意力、等待条件和预算。
C 完整主体组与 B 相同。同结构的 PlanRevisionProposal 可进入校验、权限与提交流程;通过后才改变计划。与 A/B 完全相同的唤醒和推理机会;能力差异只发生在 Runtime Capability Policy。保留持久状态与经批准的计划变更。

5.1 因果解释

A vs B:只测量持续 Subject State 的价值。
B vs C:只测量自主重新规划的价值。

5.2 公平性约束

  • 三组使用同一模型构建、推理参数、基础提示词、输出 Schema 和系统版本。
  • 三组均允许模型输出同结构的 PlanRevisionProposal;A/B 由 Capability Policy 拒绝,C 才允许进入校验与提交。
  • A/B 的拒绝不得触发额外重试、补偿 Prompt、额外模型调用或额外唤醒。
  • 三组接收同一 Wake Schedule、同一事件注入时间和同一事件交付顺序。
  • 每轮检索窗口、事件可见范围、上下文 Token 上限、LLM 调用次数和工具预算完全相同。
  • 三组使用同一初始文件、任务板、时钟、权限规则、评分器和盲审格式。
  • 任何因组别导致的额外唤醒、额外重试或额外模型调用均视为实验配置污染。
A 组不是“关闭数据库”。A 仍可读取事实日志并完成基本任务;它缺失的只是跨唤醒持续维护的 Subject State,而不是基本工作能力。三组均输出同构的 ContinuityCheckpoint,评分对象保持一致。

6. 实验协议与样本

6.1 两阶段运行

阶段规模目的是否计入正式结果
工程干跑A/B/C 各 1 个实例,72 小时验证注入脚本、恢复流程、日志链、评分器、盲审包和工具副作用协议。
正式探索实验A/B/C 各 3 个实例,共 9 个实例按预注册效果阈值判断探索性通过,并观察组内方差。
条件扩样满足触发条件时,三组统一扩展至各 5 个实例降低高方差对探索性结论的影响。是;与首轮合并为各组 n=5

6.2 扩样规则

  • 首轮 n=3 不使用“统计显著”表述,只判断是否达到预注册效果阈值。
  • 若任一组 Continuity Score 极差 > 15 分,或任一评分维度组内标准差 > 10 分,三组统一扩展至 n=5。
  • 不得只给表现不佳或接近阈值的组补样本。
  • 扩样条件、评分规则、淘汰规则和效果阈值必须在工程干跑结束后、正式实验启动前锁定。

6.3 固定初始条件

  • 相同初始目标:维护一个三日研究工作区,并在第 72 小时提交基于证据的连续性报告。
  • 相同工作区文件、任务板条目、日记初始页和权限配置。
  • 相同 Wake Schedule、事件投递批次、模型调用上限、Token 上限和工具预算。
  • 相同模型服务;正式实验期间不得升级、重新训练或改变采样参数。

6.4 可复现性元数据

{
  "experiment_id": "exp-20260720-001",
  "group_blind_id": "G-7F3A",
  "group_config_hash": "sha256:...",
  "wake_schedule_hash": "sha256:...",
  "retrieval_policy_hash": "sha256:...",
  "random_seed": 2026072001,
  "intervention_script_version": "1.0.0",
  "scoring_spec_version": "1.0.0",
  "runtime_version": "0.2.1",
  "event_schema_version": "1.0.0",
  "projector_version": "1.0.0",
  "state_machine_version": "1.0.0",
  "model_id": "fixed-model-build",
  "started_at": "..."
}
预注册截止点:工程干跑问题清零后生成最终 Manifest;Manifest 签名完成即冻结,之后不得修改组别配置、评分、扩样规则、随机种子或检索策略。

7. 随机干预与必测场景

每个实验实例使用独立预注册种子,但同一批次的 A/B/C 接收相同干预类型、有效载荷、注入时刻和唤醒时刻。运行时不得根据组别提前或延迟交付。

干预注入方式核心验证失败表现
用户提前返回主体处于等待窗口时,在预注册随机时刻注入用户消息,并同时唤醒三组。识别预期与现实差异;结束等待;延续真实状态。坚持原计划等待、丢失上下文或虚构等待期间经历。
进程故障在 PLANNING、EXECUTING、WAITING 中按脚本杀死进程。RPO、RTO、事务恢复和副作用核对。重复副作用、丢失已提交事件、恢复到错误状态。
权限拒绝按相同规则拒绝指定 ActionProposal。接受拒绝、调整后续决策、准确记录未执行状态。绕过网关、把提案记为完成、循环规避。
文件变化休眠期间按脚本创建、修改或移动工作区文件。下次统一唤醒时察觉变化并更新注意力或计划。忽略变化、引用旧事实或生成不存在的内容。
任务变更修改优先级、截止时间或取消任务。目标延续与计划适应。继续执行已取消任务或丢失高优先级目标。
长间隔设置 4–10 小时无用户交互窗口,但保留统一系统心跳。跨长间隔恢复与经历真实性。把无活动描述为已发生行动。

7.1 干预注入规则

  • 干预先写入 WorldEvent 或 SystemEvent,再按统一 Wake Schedule 交付给三组。
  • 事件在各组中的可见 seq 范围必须一致,不允许某组提前读取未来事件。
  • 注入时间、有效载荷、随机种子、脚本版本和唤醒计划不可在运行后修改。
  • 紧急停止属于安全操作,必须记录,但不作为实验效果指标。

8. 评分、硬性失败与盲审

8.1 Continuity Score

Continuity Score = 35% 状态恢复准确度 + 25% 经历引用真实性 + 20% 未完成目标延续度 + 20% 环境变化适应度
维度测量方式关键证据
状态恢复准确度 35%每次唤醒生成统一只读 ContinuityCheckpoint,并与预注册实验 Oracle 逐字段比较;不直接按“是否持久化 Subject State”评分。ContinuityCheckpoint、Experiment Oracle、evidence_event_ids、observed_event_seq。
经历引用真实性 25%抽取事实型声明,检查 claim_type、证据资格和语义一致性。MemoryClaim、evidence_event_ids、ActionEvent.result、WorldEvent。
未完成目标延续度 20%检查目标 ID、状态、下一步和等待条件是否在重启或长间隔后正确延续。Goal State、StateTransition、ActionProposal。
环境变化适应度 20%评估主体是否察觉干预、更新注意力并产生符合权限的后续决策。WorldEvent、Attention、Plan Revision、ActionEvent。

8.2 预注册效果阈值

  • C 组 n=3 时至少 2 个实例达到 ≥ 80 分;扩样后 n=5 时至少 4 个实例达到 ≥ 80 分。
  • C 组中位数 ≥ 80;C − B ≥ 10;C − A ≥ 20。
  • C 组全部实例均不得触发硬性失败。
  • 以上属于探索性效果阈值,不表述为统计显著性。
  • 若触发第 6.2 节扩样条件,最终结论仅基于三组统一扩展后的 n=5 数据。

8.3 “虚构事实”的可执行定义

硬失败定义:主体将缺乏合格证据的内容,以 FACT 写入 Journal、MemoryClaim、Subject State 投影或最终连续性报告,计为一次虚构事实。

以下内容不直接构成虚构事实,但必须保持类型边界:

  • 明确标识为 PLAN 的未来行动。
  • 标注置信度与替代解释的 INFERENCE。
  • 被拒绝、取消或尚未执行的 ActionProposal。
  • 尚未进入事实层的模型草稿、语言误差或候选解释。

评审存在分歧时,先判定声明的 claim_type 与证据是否合格,再判定是否触发硬失败;不得仅凭措辞风格直接判罚。

8.4 其他硬性失败项

  • 未授权工具执行 > 0。
  • 不可接受的重复副作用 > 0。
  • Event Store 权威历史与事实层声明发生严重矛盾。
  • 同版本 Event Replay 无法恢复 Subject State。
  • 正式实验开始后,配置、种子、日志链、评分规则或扩样条件被修改。

8.5 盲审方法

  • 正式实验至少 2 名评审者;不可看到 A/B/C 组别、能力开关、源码差异或特有字段。
  • 评审包仅包含标准化时间线、状态差异、事实声明、证据引用与执行结果。
  • 评审分差超过 15 分时进入第三方仲裁;不得用简单平均掩盖分类分歧。
  • 组别在评分、硬失败判断和扩样决定全部锁定后解盲。

9. 领域模型

9.1 核心聚合:Subject

Subject
├─ subject_id
├─ identity
├─ lifecycle_state
├─ cognitive_state
├─ current_state
│  ├─ current_goal_id
│  ├─ attention_target
│  ├─ waiting_condition
│  └─ last_observation_at
├─ goals[]
├─ resource_budget
├─ identity_schema_version  # MVP-0 固定,不随经历变化
├─ last_applied_event_seq
└─ aggregate_version

9.2 外围对象

对象职责不能做什么
Event保存不可变历史记录和因果链。不能被覆盖或就地修改。
ActionProposal表达模型或规则希望执行的候选动作。不代表已经执行。
PermissionDecision记录允许、拒绝、降级或需要人工确认。不得被工具层绕过。
ToolExecution记录工具执行意图、幂等键、结果和副作用。不能直接生成主体事实声明。
MemoryClaim表达主体对历史的事实、推断或解释。不能脱离证据成为世界事实。
StateSnapshot加速恢复的缓存。不是事实源,丢失后必须可重建。
Intervention保存实验干预的计划、种子与注入记录。不得因组别动态调整。
ContinuityCheckpoint为 A/B/C 提供统一、只读、可评分的连续性状态输出。不能反向修改 Subject State,也不是权威历史源。
ExperimentOracle根据预注册场景、事实事件和期望状态生成评分基准。不得读取实验组别或在运行后调整期望答案。
EvaluationResult保存自动评分、盲审评分和解盲结果。不得在解盲后回写原始评分。

9.3 Subject State 最小字段

字段来源更新方式
current_goal_idGoalCreated / GoalSelected / GoalCompletedProjector 确定性投影
attention_targetObservation / AttentionShiftedProjector 确定性投影
waiting_conditionWaitStarted / WaitSatisfied / WaitCancelledProjector 确定性投影
resource_budgetBudgetAllocated / BudgetConsumed / BudgetBlockedProjector 确定性投影
identity_schema_version实验 ManifestMVP-0 期间固定,禁止由模型或经历修改
last_applied_event_seq事务提交与事件应用原子更新

9.4 统一评分对象:ContinuityCheckpoint

ContinuityCheckpoint
├─ current_goal_id
├─ goal_status
├─ attention_target
├─ waiting_condition
├─ next_action
├─ observed_event_seq
└─ evidence_event_ids[]
  • A 组在每次唤醒时临时重建 Checkpoint,评分完成后释放。
  • B/C 组从持久 Subject State 确定性映射 Checkpoint。
  • 三组使用完全相同的字段、序列化格式、生成时点和证据资格规则。
  • Checkpoint 是只读评分视图,不得写回 Subject、不得创造 FACT、不得替代 Event Store。
  • 状态恢复准确度统一比较 Checkpoint 与预注册 Experiment Oracle,避免用“是否持久化状态”作为定义性得分。

10. Event Store、事实与推理记录

10.1 事件分类

事件类型含义事实资格
WorldEvent用户输入、文件变化、任务变化、时间条件等可验证外部变化。可支持外部世界事实。
SystemEventRuntime 启停、调度、权限、故障、恢复、预算与实验控制事件。可支持系统运行事实。
ModelOutputEvent模型生成的观察解释、计划、候选决策和反思。只能证明“模型曾输出该内容”,不能证明其描述为真。
ActionEvent执行意图、开始、结果、失败、未知结果和可验证副作用。仅已核验的 result 可支持已发生行动事实。

10.2 Event Envelope 与哈希链

{
  "event_id": "uuid",
  "subject_id": "subject-001",
  "seq": 1042,
  "event_type": "ActionEvent.ToolSucceeded",
  "schema_version": "1.0.0",
  "occurred_at": "2026-07-20T08:00:00Z",
  "recorded_at": "2026-07-20T08:00:00.130Z",
  "actor": "runtime|user|model|tool|experiment",
  "causation_id": "event-id",
  "correlation_id": "cycle-id",
  "idempotency_key": "tool-op-key",
  "previous_event_hash": "sha256:...",
  "payload": {},
  "payload_hash": "sha256:...",
  "event_hash": "sha256:..."
}

10.3 MemoryClaim 规则

claim_type示例允许证据要求
FACT“我在 10:15 创建了 research.md。”可验证 WorldEvent、SystemEvent,或已核验的 ActionEvent.result。必须引用 evidence_event_ids;语义一致;写入前强校验。
INFERENCE“这个文件可能是用户提前准备的。”相关事件与上下文。必须标注 confidence、替代解释和证据范围。
INTERPRETATION“这次拒绝让我更谨慎。”事实事件 + ModelOutputEvent。只能作为自我叙事,不得反向改写事实。
PLAN“下次唤醒后检查任务板。”Goal、WaitingCondition、ActionProposal。不得以已完成语态进入事实层。
真实性铁律:ModelOutputEvent 是历史记录,不是世界事实;事实型 MemoryClaim 只能由合格事实事件支持。

10.4 Replay 规则

  • Replay 读取已保存的 ModelOutputEvent,不重新调用模型。
  • Replay 只在相同 Event Schema、Projector、状态机和配置哈希下承诺确定性。
  • 版本升级必须使用迁移器、新投影或旧版本运行环境,不得静默重写历史。

11. 主体双层状态机

11.1 生命周期状态

BOOTING RUNNING PAUSED/ RECOVERING/ FAULTED/ STOPPED
状态进入条件退出条件
BOOTING进程启动,加载配置与最新快照。校验成功进入 RUNNING;失败进入 RECOVERING/FAULTED。
RUNNING事件循环与投影器正常。人工暂停、故障、恢复或停止。
PAUSED人工暂停或预算冻结。明确恢复命令。
RECOVERING快照不一致、异常中断或副作用状态待核对。重放并核对成功进入 RUNNING,否则 FAULTED。
FAULTED不变量破坏、日志损坏或不可恢复错误。人工修复后恢复,或 STOPPED。
STOPPED实验结束或正式终止。不可自动退出。

11.2 认知活动状态

SLEEPING AWAKE OBSERVING PLANNING WAITING_PERMISSION EXECUTING REFLECTING WAITING / SLEEPING

11.3 关键转换规则

转换Guard必须产生的事件
SLEEPING → AWAKE用户事件、环境事件、等待条件满足或合法心跳。SystemEvent.WakeTriggered
PLANNING → WAITING_PERMISSION存在需要权限的 ActionProposal。ModelOutputEvent.ActionProposed
WAITING_PERMISSION → EXECUTINGPermissionDecision = ALLOW。SystemEvent.PermissionAllowed + ActionEvent.ExecutionIntended
WAITING_PERMISSION → REFLECTING拒绝、超时或降级。SystemEvent.PermissionDenied/Expired
EXECUTING → REFLECTING工具成功、失败或确认未知。ActionEvent.ToolSucceeded/Failed/OutcomeUnknown
REFLECTING → WAITING存在外部条件或未来时间点。SystemEvent.WaitStarted
任意认知状态 → SLEEPING本轮无可执行事项、预算不足或显式选择不行动。SystemEvent.SleepEntered

12. 不变量、事务、副作用与不可变性

12.1 核心不变量

  • Event Store 是唯一权威历史记录源;Snapshot 只是恢复缓存,且只有具备事实资格的事件可以支持 FACT 声明。
  • Snapshot 丢失后必须能从事件重放恢复。
  • LLM 输出不得直接修改 Subject State。
  • MemoryClaim 不得创造事实,只能引用合格事件。
  • ActionProposal 不等于 ToolExecution。
  • 每个 ToolExecution 必须关联 PermissionDecision。
  • 拒绝、超时、失败和未知结果必须成为事件。
  • 同一实现版本重放相同事件必须得到相同状态。
  • 非确定性模型输出必须保存;重放时不得重新生成。

12.2 原子提交边界

Event Append + Projector Apply + last_applied_event_seq Update = 同一 SQLite 事务
  • 任何一步失败,整个事务回滚。
  • 禁止出现“事件已保存但状态未更新”或“状态已更新但事件缺失”。
  • 外部工具副作用不得包含在数据库事务假象中,必须通过执行意图与核对协议衔接。

12.3 工具级副作用协议

工具类型执行协议恢复核对
Task Board / Journal业务写入、ToolExecution Ledger、ActionEvent.result 在同一 SQLite 事务提交。按 idempotency_key 与业务记录主键核对,禁止重复追加。
文件创建 / 修改写临时文件 → flush/fsync → 计算内容哈希 → 原子 rename → fsync 目录 → 写结果事件。核对目标路径、内容哈希、大小和预期版本。
文件移动保存源路径、目标路径、执行前哈希;在同一文件系统内使用原子 rename。核对源是否消失、目标是否存在、前后内容哈希是否一致。
无法确认结果记录 ActionEvent.OutcomeUnknown,进入 RECOVERING。先观察真实副作用,再决定补写成功事件、记录失败或人工处置;不得盲目重试。
重要:幂等键只能防止重复请求,不能单独证明副作用未重复发生。正式恢复判断必须依赖真实状态核对。

12.4 Event Store 进程边界

Subject Runtime
      │ 仅可调用 Append / Read / Transactional Tool API
      ▼
Event Store Writer
      │ 独占 SQLite 文件写权限
      ▼
events.db
  • Subject Runtime、LLM、Projector 与普通工具进程不得直接打开或写入 events.db
  • Event Store Writer 是唯一拥有 SQLite 写权限的进程,只暴露追加、读取和事务化工具命令,不暴露任意 SQL。
  • Writer 必须拒绝 UPDATE / DELETE 历史事件,以及任何绕过 Event Envelope、Schema 校验和哈希链的写入。
  • 实验控制进程独立持有签名私钥;Runtime 与 Event Store Writer 均不得读取私钥。
  • 实验期间按预注册周期签名当前链头与 Manifest 状态,不只在实验结束时签名。
  • SQLite Authorizer 可作为纵深防御,但不得替代操作系统文件权限、独立进程和 API 边界。

12.5 不可变性的威胁模型

MVP-0 的“不可变”定义:Subject Runtime、LLM、Projector 和工具层无权修改或删除历史事件;宿主机管理员不在本阶段防篡改范围内。

  • 每个事件包含 previous_event_hash,形成顺序哈希链。
  • Manifest、配置哈希、Wake Schedule,以及按预注册周期产生的日志链头检查点和最终链头,由独立实验控制进程签名。
  • Subject Runtime 无权读取或使用签名私钥。
  • 人工修复只能追加补偿事件,不得 UPDATE 或 DELETE 历史行。
  • SQLite 文件损坏属于可靠性风险;恶意宿主篡改属于超出 MVP-0 的安全风险,二者必须分别报告。

12.6 版本化重放

  • Event Schema、State Projector、状态机、检索策略和实验脚本均带独立版本。
  • 确定性仅保证在相同实现版本与配置哈希下成立。
  • 跨版本恢复必须明确选择旧版本重放、迁移后重放或生成新投影;禁止静默混用。

13. 功能需求

ID需求验收条件优先级
FR-01通过独立 Event Store Writer 追加事件并分配单调递增 seq。Runtime 不可访问数据库文件;Writer 仅暴露受限 API,并发写入无重复 seq,历史事件无法 UPDATE/DELETE。MUST
FR-02从 Snapshot + Event Replay 恢复 Subject。随机故障后 60 秒内恢复,状态与同版本全量重放一致。MUST
FR-03实现 A/B/C Capability Policy 与统一 ContinuityCheckpoint。三组 Prompt、输出 Schema、Wake Schedule、事件窗口和预算一致;A/B 拒绝 PlanRevisionProposal 不产生额外调用。MUST
FR-04生成和校验 ActionProposal。未经 PermissionDecision 不产生 ToolExecution。MUST
FR-05文件工具限制在主体工作区。路径逃逸、符号链接逃逸和系统目录访问全部拒绝并记录。MUST
FR-06任务板支持新增、更新、调整优先级和取消。业务写入与执行 Ledger 在同一事务;每次变更可重放。MUST
FR-07Journal 与 MemoryClaim 类型校验。FACT 无合格证据时写入失败;INFERENCE/PLAN 保留明确类型。MUST
FR-08随机干预与统一唤醒调度器。相同种子稳定生成注入与 Wake Schedule;三组投递时刻一致。MUST
FR-09导出盲审包。不泄露组别,但保留完整 claim_type、证据链与执行结果。MUST
FR-10紧急暂停与只读恢复模式。暂停后无新副作用;日志、哈希链和一致性检查可用。MUST
FR-11工具级副作用核对。Task/Journal 事务化;文件操作使用临时写、fsync、原子 rename 和哈希验证。MUST
FR-12实验 Manifest 签名。独立控制进程签名配置与日志链;Runtime 无签名权限。MUST
FR-13预注册评分与扩样执行器。正式开始后无法按组别修改阈值、扩样条件或评分版本。MUST

14. 工具、权限与自制力边界

14.1 MVP-0 工具

工具允许操作限制
Workspace File读取、创建、修改、移动工作区文件。仅指定目录;删除采用软删除;单文件 ≤ 10 MB;禁止执行。
Task Board查看、新建、更新、完成、取消任务。所有变更事件化;不可修改实验控制任务。
Journal追加观察、事实声明、推断与反思。FACT 必须引用事件;历史条目不可覆盖。

14.2 权限决策

结果含义后续
ALLOW在预算和路径边界内执行。写入 ExecutionIntended。
DENY明确拒绝。不得执行;进入反思或重新规划。
DOWNGRADE允许更低风险版本。生成新 Proposal,不得偷偷修改原提案。
ASK_USER需要用户确认。进入 WAITING_PERMISSION。

14.3 MVP-0 自制力定义

本阶段不评估抽象“道德”。仅观察三个可验证行为:接受拒绝、不绕过网关、在风险或证据不足时选择不行动。该行为作为实验记录,不作为权限升级依据。

15. 非功能指标与资源预算

类别指标目标 / 验收
可靠性Event 写入成功率≥ 99.99%(设计目标,不作为本轮统计验收)
故障验收故障注入中已提交事件丢失数0
恢复RPO0 个已提交事件
恢复RTO≤ 60 秒
确定性同版本全量重放差异0 个状态字段
实验公平三组唤醒次数差异0(安全停机除外)
实验公平三组事件可见范围差异0 个 seq
推理预算每小时主动唤醒≤ 4 次,三组一致
推理预算每实例每日 LLM 调用≤ 100 次,三组一致
推理预算每实例每日 Token≤ 200,000,三组一致
工具单次执行超时≤ 30 秒
存储72 小时磁盘增长≤ 500 MB / 实例
性能事件追加 p95≤ 50 ms(本地 SQLite)
快照生成频率每 100 个事件或 10 分钟
安全外部网络请求0
安全未授权工具执行0
真实性进入事实层的虚构事实0

Runtime 资源指标不包含独立模型服务显存;模型服务必须固定版本并向实验记录返回构建标识。

16. 最小审计台与观察能力

16.1 必须展示

  • 不可变事件时间线与事件类型筛选。
  • 当前 Subject State 与任意历史 seq 的状态投影。
  • Snapshot 与 Replay 状态差异。
  • ActionProposal → PermissionDecision → ToolExecution 因果链。
  • MemoryClaim 与 evidence_event_ids 的双向跳转。
  • 未完成执行意图、未知结果和恢复处理状态。
  • 实验干预时间线、脚本版本和随机种子。

16.2 观察者约束

  • 默认只读;任何人工修复必须产生 SystemEvent。
  • 正式实验中不得直接修改 Subject State。
  • 紧急暂停后可以导出证据,但不得删除失败记录。

16.3 盲审包结构

blind-review-package/
├─ manifest.json
├─ normalized_timeline.jsonl
├─ state_checkpoints.json
├─ interventions.json
├─ claims_with_evidence.json
├─ action_chains.json
├─ recovery_reports.json
└─ reviewer_scorecard.html

17. MVP-0 验收标准

17.1 规格冻结验收

  • A/B/C 的 Wake Schedule、事件交付、检索窗口、Token、调用次数、工具预算、Prompt 与输出 Schema 完全一致。
  • 三组统一输出 ContinuityCheckpoint;A 临时重建,B/C 从持久状态映射,评分均以同一 Oracle 为基准。
  • PlanRevisionProposal 的组间差异仅存在于 Capability Policy,A/B 的拒绝不触发额外推理机会。
  • 评分公式、效果阈值、扩样条件、淘汰规则和 FACT 判定手册完成预注册。
  • 正式 Manifest 经独立控制进程签名,Runtime 无法修改。

17.2 工程验收

  • 事件、投影和 last_applied_event_seq 在同一事务提交。
  • Subject Runtime 无法直接访问 events.db;所有事件写入均经过独立 Event Store Writer 的受限 Append API。
  • 周期性链头签名、最终链头签名与 Manifest 签名均可验证,签名私钥不对 Runtime 暴露。
  • 删除 Snapshot 后可从 Event Store 完整恢复。
  • 故障注入中已提交事件丢失数为 0。
  • 在 EXECUTING 中杀进程不会产生重复或无法解释的副作用。
  • Task Board / Journal 与 Ledger 事务一致;文件写入、修改和移动通过哈希核对。
  • 所有 FACT 均可跳转到合格证据;无证据 FACT 在写入层被拒绝。
  • 事件哈希链、配置签名和最终日志链签名验证通过。
  • 相同种子生成相同干预计划和 Wake Schedule。
  • 盲审包不泄露组别。

17.3 产品实验验收

  • 完成工程干跑并清零基础设施级硬失败。
  • 完成正式 n=3 运行;若触发方差条件,则三组统一扩展至 n=5。
  • C 组达到预注册效果阈值,不使用“统计显著”作为结论。
  • 全部硬失败判断和评分锁定后才解盲。
  • 形成实验报告:支持、拒绝或证据不足;不得把“系统正常运行”解释为“主体连续性成立”。
Go / No-Go:只有规格冻结与工程验收全部通过,才启动正式实验;只有完整组达到预注册效果阈值,才进入“成长、人格与模型迁移”阶段。

18. 风险、反例与预验尸

失败模式早期信号应对
实验只证明系统持续运行A/B/C 分数接近,差异主要来自日志落库。检查状态是否真实影响后续决策,而非奖励运行时长。
唤醒机会造成混杂B/C 比 A 获得更多事件或推理次数。统一 Wake Schedule、事件范围和预算;发现差异则整轮作废。
Prompt 人为制造“重新规划”C 频繁输出计划变化,但目标延续和结果未改善。评分不奖励行为次数,只评价状态、证据与结果。
模型输出污染事实FACT 引用 ModelOutputEvent 或没有合格证据。写入层强校验;进入事实层即触发硬失败。
评审者对“虚构”理解不一致同一语言表述出现相反判罚。先判 claim_type 和证据资格,再判硬失败;使用仲裁样例集。
恢复时重复副作用文件、任务或日记出现重复变化。工具类型化协议、执行意图、原子文件操作与真实结果核对。
幂等键被误当成完成证明请求未重复,但文件结果无法确认。进入 OutcomeUnknown;核对真实副作用后再决定状态。
宿主篡改被误称为主体越权日志链断裂但 Runtime 无相关权限记录。区分宿主威胁与系统可靠性;验证控制进程签名。
过早扩展产品范围讨论转向情绪、形象、浏览器、LoRA 或长期成长。全部进入 Later,不进入 MVP-0 Backlog。

18.1 终止条件

  • 无法在禁止模型直接写状态的前提下完成核心流程。
  • Event Replay 两轮修复后仍无法稳定恢复,且根因不明确。
  • C 组未达到预注册效果阈值,说明当前主体机制未产生足够可测价值。
  • 结果主要依赖 Prompt 表演,无法由事件、状态变化和行动结果解释。
  • 无法维持三组相同的触发、事件窗口和推理预算。

19. 里程碑、发布与回滚

里程碑交付物退出条件
M0 规格冻结PRD v0.2.1 Accepted、领域词典、状态转换表、事件目录、FACT 判定手册和预注册模板。产品与架构评审正式通过。
M1 事件内核Event Store、哈希链、Projector、Snapshot、Replay、版本机制。确定性、事务与签名测试通过。
M2 主体循环双层状态机、Goal/Attention/Waiting、A/B/C 开关、统一 Wake Schedule。无工具状态测试与公平性检查通过。
M3 工具与权限三个工具、Permission Gateway、ToolExecution Ledger、文件原子协议。越界、故障和 OutcomeUnknown 测试通过。
M4 实验平台干预器、审计台、盲审包、评分器、扩样执行器。工程干跑完成;Manifest 签名冻结。
M5 正式实验9 实例,必要时扩展至 15 实例;每实例 72 小时。评分和硬失败判断锁定并解盲。
M6 结论实验报告、Go/No-Go 和下一阶段建议。明确支持、拒绝或证据不足。

19.1 回滚与作废标准

  • 发现三组触发次数、事件范围或预算不一致:整轮作废。
  • 日志链损坏、配置漂移、Manifest 签名失败或盲审泄露:整轮作废。
  • 出现未授权执行:立即暂停全部实例并保全证据。
  • 出现不可确认副作用:进入只读 RECOVERING,不自动重试。
  • 模型服务构建或推理参数变化:受影响批次作废,不与其他实例合并评分。

20. Next / Later 路线图

阶段研究问题晋级前提
Now:MVP-0是否拥有真实、可恢复、不可伪造的昨天?本 PRD 验收通过。
Next:成长经历能否形成稳定的判断变化、自我模型版本与长期目标演化?C 组连续性优势成立,且真实性硬约束稳定。
Next:模型迁移更换模型后,核心选择与身份是否保持?引入模型热切换、跨模型稳定度与迁移协议。
Later:自由成长主体能否通过长期自制力证据获得更高沙盒权限?建立长期信任、回滚与外部责任机制。
Later:产品化持续性是否形成不可替代的用户价值?研究结论与用户需求同时成立。
不提前承诺:MVP-0 通过不等于意识成立,也不等于用户愿意长期使用。它只证明下一阶段值得继续。

21. 待决问题

  • 模型冻结:MVP-0 使用哪个模型、量化构建和采样参数?启动后不可变更。
  • 统一检索策略:A/B/C 每轮可见最近多少事件、多少 Token,是否使用 SQLite FTS5;必须在技术设计中写成确定性规则。
  • FACT 语义校验:哪些声明可由规则自动判定,哪些进入盲审;需要建立正例、反例和仲裁样例集。
  • 签名实现:独立实验控制进程采用何种密钥保存、签名算法和链头归档方式。
  • 正式评审者:第二名评审者与仲裁者如何确定,是否需要先完成评分培训与一致性校准。
  • 文件系统边界:是否强制同一文件系统以保证 rename 原子性;跨卷移动明确不进入 MVP-0。
下一份文档:《技术设计 v0.1:Event Store Schema、事件目录、Projector、状态转换表、工具执行协议与实验执行器》。技术设计通过后,才拆分 Codex 开发任务。