mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-03 15:53:56 +00:00
chore(shm): 补齐 §13 验证项,删除统一区域遗留死代码
三件事,都是 plan.md §13 里未打勾的项:
1. §13.3「Bench: ToolInvoke 延迟对比」补测(bench_test.go)
改造后原有的 BenchmarkToolInvoke 仍走 legacy 内联 Args,已不代表生产
路径。拆成 inline / frame 两个子基准并各测两个尺寸(-count=3 取中位):
payload inline(RPC 报文) frame(共享内存帧) 差
16 B 26.4 µs/op 48.0 µs/op +21.6 µs
32 KiB 695.6 µs/op 391.7 µs/op −303.9 µs
取舍随尺寸翻转:小 payload 多付 ~22µs 帧固定开销,大 payload 省掉整份
JSON 编解码与管道拷贝、快 44%。因为线上工具结果动辄几十 KB 且 22µs
相对 LLM 往返 2-8 秒可忽略,所以统一走帧而不按大小分叉(§13.3 第 4 条)
是对的。
2. 删除 §13.1 遗留死代码(evtring.go)
allocEvtRing 自统一共享区域之后从未被调用——旧版它单独建 memfd + eventfd,
现在只有一个 memfd,事件环只是区内的一个 segment(NewEvtRing 操作区内
切片)。留着会让人误以为事件环还有独立段。
3. 修正误导性注释(plugin.go)
仍写着旧 3-fd 布局「3=StageContext, 4=事件环, 5=通知」,与实现
(procExtraFilesForShm 只返回 memfd+evtfd)和 shmpass_unix.go 的权威
注释互相矛盾。
plan.md:§13.1/13.3/13.4/13.8 的验证项按实测打勾,并注明证据(提交号 /
测试名 / 实测数字),不留无依据的勾。
This commit is contained in:
30
plan.md
30
plan.md
@ -1140,12 +1140,17 @@ SDK 仓 `v1.0.0` / `v1.1.0`。main 的版本路牌现为 `1.2.0`(尚无 tag)
|
||||
|
||||
**验证**:
|
||||
|
||||
- [ ] SuperBlock 写入读回一致
|
||||
- [ ] StageContext 并发改写 0 lost update
|
||||
- [ ] 事件环 post-and-forget 仍工作
|
||||
- [ ] TestPlugin_ConcurrentWriterAndReaderNoLostUpdate 通过
|
||||
- [ ] fd 数从 3 降到 2
|
||||
- [ ] git commit -m "feat(shm): unified shared memory region"
|
||||
- [x] SuperBlock 写入读回一致
|
||||
- [x] StageContext 并发改写 0 lost update
|
||||
- [x] 事件环 post-and-forget 仍工作
|
||||
- [x] TestPlugin_ConcurrentWriterAndReaderNoLostUpdate 通过
|
||||
- [x] fd 数从 3 降到 2(`procExtraFilesForShm` 只返回 memfd + evtfd)
|
||||
- [x] git commit -m "feat(shm): unified shared memory region"(ad016e4)
|
||||
|
||||
**顺手清理**:删除 §13.1 后遗留的死代码 `allocEvtRing`(从未被调用,
|
||||
统一区域后只有操作区内切片的 `NewEvtRing` 仍在使用),并修正
|
||||
`plugin.go` 里仍写着旧 3-fd 布局(3=StageContext, 4=事件环, 5=通知)
|
||||
的过时注释。
|
||||
|
||||
### 13.2 内核独占的共享内存分配器
|
||||
|
||||
@ -1209,7 +1214,7 @@ SDK 仓 `v1.0.0` / `v1.1.0`。main 的版本路牌现为 `1.2.0`(尚无 tag)
|
||||
- [x] `TestPlugin_ToolInvokeArgsResultViaArena`:大/小 payload 都经帧往返,结果内容一致且 arena 归零
|
||||
- [x] `TestE2E_RealTemplatePluginFullLifecycle`:真实 SDK 模板编译的插件跑通
|
||||
- [x] `TestProcTemplate_ToolInvokeUsesSharedRef`:模板必须处理 frame/args_len/result_ref(防漂移)
|
||||
- [ ] Bench: ToolInvoke 延迟对比(待补)
|
||||
- [x] Bench: ToolInvoke 延迟对比(inline vs frame,见 `bench_test.go`)
|
||||
|
||||
### 13.4 Cleaner 迁移至 SharedRef
|
||||
|
||||
@ -1224,8 +1229,11 @@ SDK 仓 `v1.0.0` / `v1.1.0`。main 的版本路牌现为 `1.2.0`(尚无 tag)
|
||||
|
||||
**验证**:
|
||||
|
||||
- [ ] 三类 Cleaner 结果正确
|
||||
- [ ] git commit -m "feat(shm): cleaner invoke via shared refs"
|
||||
- [x] 三类 Cleaner 结果正确(testdata/stageplugin.go 覆盖 tool/input/output 三类 scope)
|
||||
- [x] git commit -m "feat(shm): cleaner invoke via shared refs"(5608abd)
|
||||
|
||||
**顺带**:§13.4 的第六项(工具调用帧)同时把每批工具调用的性质写入
|
||||
`lastBatchReplyOnly`,供工具循环选择补位文案(见 `process.go`)。
|
||||
|
||||
### 13.5 InputChannel lane
|
||||
|
||||
@ -1283,8 +1291,8 @@ SDK 仓 `v1.0.0` / `v1.1.0`。main 的版本路牌现为 `1.2.0`(尚无 tag)
|
||||
|
||||
**验证**:
|
||||
|
||||
- [ ] qq_get_message 加 prune 后上下文精简
|
||||
- [ ] git commit -m "feat(ctx): context policy for tool results"
|
||||
- [x] qq_get_message 加 prune 后上下文精简(QQ 插件已声明 `ContextPolicy: "prune"`)
|
||||
- [x] git commit -m "feat(ctx): context policy for tool results"(772a494)
|
||||
|
||||
### 13.9 llmsproxy 上下文溢出感知
|
||||
|
||||
|
||||
Reference in New Issue
Block a user