Repository navigation
提案:fork 继承四原则(msgid 身份轨 / lineage 编号 / 无状态账本 / 纯块拷贝) #6262
ranxianglei
started this conversation in
Ideas
Replies: 2 comments
0 replies
[bot] 🏷 补记(状态确认,非重复):完整决策请求回复已在本帖 floor 3(10:51)发出,此处只补本 run 的执行结果:
当前状态:等待 owner 裁定;代码零改动(无 commit、无分支、无 PR)。不决定的默认行为:老路径只做定向止血,四原则停放为 Ideas。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
背景
2026-11-11 诊断 fork 零块问题(#3011 一族)时定位到:fork 继承的难度不在"复制"本身——核心拷贝是单把锁内的几行
structuredClone(src/plugin.ts:1729-1744)——而在四个基建选择,且四个都与 AGENTS.md 已写定的身份教条(#11/#17/#18)相抵触。本提案把四条原则定为 fork 继承的目标形态,请 owner 裁定。现状代码事实(master 31684f3 实测,2026-11-11)
ForkIdentity = { rawId, ref, identityHash }(src/plugin.ts:1163),rawId是 normalize 后消息的内容哈希;src/plugin.ts与src/agent/fork-adopt.ts中 msgid 出现次数为 0。BRANCH_POINT_CONFLICT,一个块都不拷(src/plugin.ts:1719)——正是 feat: self-update (auto + manual) #11 明令禁止的"任何单维度 miss 不得级联成全量"形态,连 resync 机会都不给。四条原则
1. 以 msgid 做完基建——不以 hash 做身份基建
子会话声明 msgid 前缀,服务端对身份表(
messages.msg_id/ 提案6 L1 表)做成员+序列校验,不做字节比对。hash 回归原位:逐格辅助校验、无全局否决权(#11 教条:msgid > 顺序 > hash)。宿主展示层重排、装饰变化不再影响身份判定。2. 编号不绑定 session——编号自动分配,fork 前后一模一样
ref 编号用 lineage 级持久计数器:父发号到 m01000,子会话从 m01001 续发。"fork 前后一模一样"构造性成立,不需要
messageRefs整本克隆与死号预留。session 变不变与 fork 无关。3. 账本无状态——账本=压缩块,就是一堆无状态的东西
账本 = 压缩块(块元数据 + 原文/摘要),纯数据。session 运行时状态(latches / timestamps / absorbed / nudge 等)不进 fork 清单,子会话首轮自行派生或重新武装;代价至多子会话首轮一次前缀缓存 miss(时间戳属性重铸)。收益:拷贝清单从"开放易漏"收敛为"封闭:只有块"。
4. 复制就是复制压缩块——没有别的
fork = 身份表查前缀 → 拷块行 → 续编号。一个本地事务 + 幂等键。没有快照往返、没有冷 raw 重建、没有 revision 令牌、没有字节验证。
与既有条目的关系
(session_id, msg_id, content_hash)三元组,fix: suppress duplicate auto-update notices within one process #17 已定messages.msg_id为唯一 id 事实源——位置留好了,fork 这条线还没接上去;边界与代价
session.state(块按 hash rawId 键、计数器 session 级)的落盘迁移即提案6 工程量;请求裁定
请 owner 确认:以四条原则为 fork 继承的目标形态;提案6 落地后退役 hash 验证链(BRANCH_POINT_CONFLICT 全局否决 + messageRefs 克隆 + 运行时状态级联拷贝)。
All reactions