环境记忆自动感知
wesgine 的 L1 环境记忆由宿主感知器自动产出,不接受人工写入。
定位
环境记忆(environment)是引擎对宿主机器的自动感知结果。
它回答「这台机器上有什么」,而不是用户的个人偏好。
感知内容
| 类别 | 示例 |
|---|---|
| 操作系统 | macOS 15.2 / Ubuntu 24.04 |
| 语言运行时 | Go 1.23 / Node 22 / Python 3.12 |
| 包管理器 | brew / apt / pip |
| 开发工具 | git / docker / kubectl |
| 终端环境 | shell 类型、PATH 上的工具 |
感知机制
进程级共享(INV-ENV-01)
memenv.SharedSnapshot(ctx) 和 capenv.SharedSurface(ctx) 是唯一入口。
- 进程级 single-flight + 5min TTL
- 每包只有
shared.go一个构造点 - 包外不得构造别名(含测试)
不因租户而异(INV-ENV-02)
感知器不认识 Cell。
Per-Cell 事实通过 Loader.WithRuntimeOverrides 在消费者层叠加。
把 CellID 下沉进感知器 = 共享变串租。
exec.LookPath 代替 fork(INV-ENV-03)
判断工具是否在 PATH 上用 exec.LookPath,不 fork 子进程。
写入限制
环境记忆不接受人工导入。
POST /memory(layer=environment)返回 ErrLayerNotWritable。
原因:它由感知器产出,人工写入的「事实」在下次 boot 时被覆盖。
自动注入
环境记忆通过 Eager 面进入系统提示词。
Agent 因此知道当前机器有什么工具和运行时。
GC 豁免
KindEnvironment 是 GC 豁免类型。
环境事实不会被垃圾回收淘汰。
刷新
RefreshEnvironment 使用「分页至清空」策略:
- 列出当前所有环境条目
- 删除过时条目
- 写入新感知结果
- 带
progressed判定,删除失败时不空转