本页目录
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()