Memory / 记忆Note 12
03 只读与可写 Memory
学习目标
学习目标
理解一句话:memory 默认可以读写,但共享政策和组织级记忆应该只读。
它是什么
Agent 可以通过 edit_file 更新 memory,但不是所有 memory 都该让它改。用户偏好可以写,组织政策通常只读,敏感记忆可以要求人工审批。这个边界不划清,prompt injection 一来就能把共享记忆改烂,艹,后患无穷。
最小配置
FilesystemPermission(
operations=["write"],
paths=["/policies/**"],
mode="deny",
)
个人记忆需要人工确认时:
FilesystemPermission(
operations=["write"],
paths=["/memories/personal/**"],
mode="interrupt",
)
最小可运行例子
代码见 ../03_memory_permissions.py。
这个例子验证:
/policies/AGENTS.md可读但不可写。/memories/personal/AGENTS.md写入会触发interrupt。- 普通
/memories/AGENTS.md可以写。
运行
uv run python deepagent_src/memory_teach/03_memory_permissions.py
预期输出:
memory permissions ok
常见误区
权限规则是 first match wins。更具体的规则要放前面,否则会被宽泛规则提前吃掉。
相关资源
查看示例代码:deepagent_src/memory_teach/03_memory_permissions.py
from __future__ import annotations from deepagents import FilesystemPermission from deepagents.middleware.filesystem import _check_fs_permission POLICY_READ_ONLY = [ FilesystemPermission( operations=["write"], paths=["/policies/**"], mode="deny", ) ] PERSONAL_MEMORY_REVIEW = [ FilesystemPermission( operations=["write"], paths=["/memories/personal/**"], mode="interrupt", ), FilesystemPermission( operations=["write"], paths=["/memories/**"], mode="allow", ), ] def main() -> None: assert _check_fs_permission(POLICY_READ_ONLY, "read", "/policies/AGENTS.md") == "allow" assert _check_fs_permission(POLICY_READ_ONLY, "write", "/policies/AGENTS.md") == "deny" assert ( _check_fs_permission( PERSONAL_MEMORY_REVIEW, "write", "/memories/personal/AGENTS.md", ) == "interrupt" ) assert _check_fs_permission(PERSONAL_MEMORY_REVIEW, "write", "/memories/AGENTS.md") == "allow" print("memory permissions ok") if __name__ == "__main__": main()