首页/新闻资讯/正文详情

IronClaw 记忆目录树工具 `ironclaw.memory.tree` 完全指南:作用域、参数、输出格式与源码解析

发布时间:2026/9/23 19:35:03 来源:云帆数科 栏目:资讯中心
IronClaw 记忆目录树工具 `ironclaw.memory.tree` 完全指南:作用域、参数、输出格式与源码解析
人工智能AI 应用交互助手AI Agent【免费下载链接】ironclawIronClaw is an Agent OS focused on privacy, security and extensibility项目地址https://gitcode.com/gh_mirrors/iro/ironclaw点击查看免费下载导读本文围绕 IronClaw 开源仓库中 memory-native 记忆扩展包扩展 IDironclaw.memory提供的ironclaw.memory.tree模型工具展开它用于将当前租户/用户/Agent/项目作用域内的持久化记忆文档以紧凑的树形结构列出帮助模型在读取或写入之前快速发现已有记忆文档。读完本文你将掌握该工具的调用参数path与depth、输出格式约定、作用域解析与路径安全校验的底层实现以及它与read、search、write、profile_set四个兄弟工具配合的完整记忆工作流。一、工具定位记忆工具族里的目录浏览入口memory-native 是 IronClaw 内置的默认[memory]提供方以文件系统为后端实现 provider 无关的ironclaw_memory::MemoryService契约扩展 ID 为ironclaw.memory。它的包说明文档README.md明确指出该扩展提供 5 个记忆工具工具 ID职责ironclaw.memory.read按相对路径读取持久化记忆文档返回内容与词数ironclaw.memory.write写入、追加或就地补丁持久化记忆文档ironclaw.memory.search用自然语言查询在记忆文档中检索最佳匹配片段ironclaw.memory.tree将记忆文档列出为紧凑树本文主角ironclaw.memory.profile_set记录时区 / 区域 / 位置的私有本地用户事实tree在工具族中承担先浏览、后操作的发现职能。其模型提示词文档tree.md原文定义了它的核心行为将持久化记忆文档列出为紧凑的树形结构作用域限定在当前 tenant/user/agent/project 内。可选传入path列出某个子目录传入depth限制遍历深度。在读取或写入之前用它发现存在哪些记忆文档。与search不知道确切路径时用自然语言找和read知道路径后按路径取内容不同tree解决的是我不知道记忆里有什么的问题——它是记忆命名空间的根目录浏览工具。二、输入参数详解path与depthtree的输入契约由 JSON Schema 文件 tree.input.v1.json 定义仅有path和depth两个可选参数且additionalProperties: false不接受任何额外字段。2.1path要列出的相对记忆目录路径类型字符串默认值为空字符串。语义相对记忆目录路径。省略或传空字符串时列出记忆根目录传入路径时列出对应子目录。硬性约束Schema 中的not正则与描述双重声明不能是绝对路径不允许前导/不能包含..路径穿越不能使用反斜杠\作为分隔符。二次校验描述中说明宿主文件系统额外将路径解析到作用域内的/memory挂载点内意味着即使通过了 Schema 层校验底层文件系统挂载仍然会约束路径不能逃逸出当前作用域的/memory虚拟根。2.2depth最大遍历深度类型整数minimum: 1maximum: 10默认值1。语义要包含的最大目录深度。默认只列出一层需要深入子目录时逐级调大。2.3 参数校验的源码层印证服务层service.rs的tree()方法对参数做了与 Schema 一致的运行时防御pub async fn tree(self, invocation, request) - ResultMemoryServiceTreeResponse, ... { if !request.path.is_empty() { reject_local_or_traversal_path(request.path)?; } let (scope, context) self.scoped_context(invocation)?; // ... }其中reject_local_or_traversal_path会在以下三种情况直接返回Input错误路径包含反斜杠\路径看起来像本地文件系统路径——以/或~/开头或形如C:\、C:/的盘符形式任一路径段为..contains_traversal按/分段逐一比对。这构成了Schema 层正则 服务层逻辑的双重防线保证tree永远不会把作用域之外的目录暴露给模型。三、输出格式紧凑树的结构约定tree的输出由 tree.output.v1.json 定义一个字符串数组每个元素是一个记忆文档路径或带尾部/的目录路径。Schema 层面的格式约定文档条目直接输出相对路径字符串例如notes/alpha.md目录条目路径末尾带/用于与文档区分例如daily/输出是无序数组但从源码实现看服务层会对底层返回的全部路径做一次字典序排序paths.sort()再渲染保证输出稳定、可预测。3.1 从源码看嵌套结构需要补充说明的是从实现函数tree_for_paths位于 service.rs的代码结构可以推断当depth 1时实际渲染结果比 Schema 描述更丰富——目录节点会递归展开为嵌套对象形如{ daily/: [ ... ] }子目录内部再嵌套其下的目录与文件而当depth 1默认值时子目录只输出为daily/这样的带斜杠字符串不再展开。测试 memory_service_contract.rs 中也是通过serde_json::to_string(tree.entries)对输出做 JSON 序列化后断言其包含目标文件名印证了输出的 JSON 数组性质。tree_for_paths的核心算法如下按源码结构还原以root参数即请求的path空串代表记忆根为前缀过滤出相关路径将剩余路径按是否含/分为两类含/的归入子目录分组用BTreeMap按首段目录名聚合不含/的直接作为文件条目若max_depth 1每个子目录仅输出dir/字符串否则递归调用自身渲染子目录树递归深度逐级减一目录条目在前、文件条目在后最终拼成完整数组。四、作用域解析tenant/user/agent/project 四级隔离tree与所有记忆工具一样只列出当前调用作用域内的文档。作用域由MemoryDocumentScope建模其虚拟路径语法定义在 path.rs/memory/tenants/{tenant}/users/{user}/agents/{agent}/projects/{project}/{path}从ParsedMemoryPath::from_virtual_path的解析逻辑可以看到tenant_id、user_id为必填段支持两种书写形态带 agent 的完整形态.../agents/{agent}/projects/{project}/...与省略 agent 的.../projects/{project}/...agent 段或 project 段为字面量_none时解析为None即无该层级绑定否则为具体的 ID第 7 个段之后的所有剩余段拼接为相对文档路径并经过validated_memory_relative_path校验——该校验会拒绝以.meta、.chunks、.versions等保留副产物后缀结尾的路径段防止用户文档与存储层内部元数据文件命名空间冲突见path_validation_tests中的rejects_path_segments_ending_in_reserved_sidecar_suffixes测试。服务层tree()通过scoped_context()从调用方传入的MemoryInvocation.scope重建MemoryDocumentScope与MemoryContext再调用后端list_documents(context, scope)获取该作用域下的全部文档路径。因此不同租户、不同用户、不同 Agent、不同项目之间的记忆目录互不可见tree天然是隔离的。五、安全与权限边界tree的权限与安全属性同样定义在包清单 manifest.toml 中[[tools]] id ironclaw.memory.tree description List Reborn persistent memory documents as a compact tree. effects [read_filesystem] default_permission allow visibility model origin_gate_matrix { loop_run ungated, product forbidden, automation forbidden }几点值得注意效果声明为只读effects [read_filesystem]tree不会产生任何写副作用来源门控origin gateloop_run为ungated循环运行上下文免审批属于受审的UNGATED_LOOP_RUN_CAPABILITIES白名单语义而product与automation来源默认forbidden——清单注释明确说明缺失的门控矩阵并不是无门控而是 S4 authorize 折叠对所有来源标记的调用默认失败关闭Forbidden。这与read、search保持一致而写路径的ironclaw.memory.write则保持gated_unless_granted任意路径写入需授权读/列目录与写入的信任等级被有意区分开路径逃逸防护除第二节介绍的输入校验外宿主文件系统还会把解析后的路径限制在作用域内的/memory挂载点内双重保证tree只能看到该看的记忆目录。六、测试验证与调用示例memory-native 的契约测试 memory_service_contract.rs 覆盖了tree与write、read、search的联动场景其流程对理解tree的典型用法很有帮助// 1. 先写入一条记忆 write(invocation, MemoryServiceWriteRequest { target: notes/alpha.md.into(), ... }) .expect(write through IronClaw memory service); assert_eq!(write.path, notes/alpha.md); // 2. 按路径读取确认内容与词数 let read service.read(invocation.clone(), MemoryServiceReadRequest { path: notes/alpha.md.into(), ... }).await; assert_eq!(read.content, alpha native IronClaw memory marker); // 3. 用 tree 从根目录发现该文档depth2 let tree service.tree(invocation.clone(), MemoryServiceTreeRequest { path: String::new(), depth: 2 }).await; assert!(serde_json::to_string(tree.entries).unwrap().contains(alpha.md));一个完整的模型侧调用示例以 JSON 参数形式描述{ name: ironclaw.memory.tree, arguments: { path: , depth: 2 } }预期返回示意[ daily/, MEMORY.md, notes/alpha.md ]典型使用节奏发现会话开始时先tree或带path定位到某个子目录了解当前作用域记忆里有什么定位不确定路径时用search做自然语言检索读取用read取回某个文档全文写入用write目标memoryappend模式最合适保存单行事实沉淀新的持久化偏好或调用profile_set记录时区/区域/位置等结构化用户事实。tree的先浏览再读写定位也与其兄弟工具read、search的提示词read.md、search.md互为呼应read强调在行动前回忆已记录的笔记、日志或画像事实search强调不知道确切文档路径时找到相关笔记而tree正是这两者之前的第一步——先把记忆目录的全貌呈现在模型面前。七、适用前提与注意事项提供方绑定tree由 memory-native 提供方实现且每次部署只有一个[memory]提供方处于激活状态默认 memory-native可替换为 mem0 后端而不改变这些工具形态见 README.md。使用前提是当前部署绑定的是该提供方。深度上限depth最大为 10避免无界遍历默认 1 意味着不深入子目录。路径合法性path必须是相对路径、不含..与反斜杠根目录浏览直接省略path即可。内容边界tree只返回路径与目录结构不返回文档内容需要内容请用read需要语义检索请用search。结语ironclaw.memory.tree是 IronClaw 记忆系统发现层的关键入口它以紧凑树形把当前租户/用户/Agent/项目作用域内的持久化记忆文档呈现在模型面前配合严格的路径校验、只读效果声明与来源门控保证安全性并通过path/depth两个参数提供灵活的浏览粒度。无论是作为模型在行动前的记忆盘点工具还是作为排查记忆存在但检索不到问题的目录索引它都是理解 IronClaw 记忆子系统时值得掌握的第一个工具。赞分享人工智能AI 应用交互助手AI Agent【免费下载链接】ironclawIronClaw is an Agent OS focused on privacy, security and extensibility项目地址https://gitcode.com/gh_mirrors/iro/ironclaw点击查看免费下载相关推荐终极Arjun参数发现工具输出格式完全指南JSON、文本和BurpSuite格式详解终极Arjun参数发现工具输出格式完全指南JSON、文本和BurpSuite格式详解 Arjun是一款强大的HTTP参数发现工具能够帮助安全测试人员和开发人网络安全应用安全渗透测试broot 目录树导出指南使用 :print_tree 与命令行参数输出剪枝后的树broot 目录树导出指南使用 :print_tree 与命令行参数输出剪枝后的树 Broot 是一款以树状结构浏览、过滤和导航目录的工具。当你在 broot开发工具Hydra 工作目录定制指南run 与 multirun 输出目录模式全解析Hydra 工作目录定制指南run 与 multirun 输出目录模式全解析 本指南围绕 Hydra 的 hydra.run.dir 、 hydra.swee开发工具后端CLI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

全球十大创意广告完整示例:3步拆解底层逻辑
全球十大创意广告完整示例:3步拆解底层逻辑

全球十大创意广告完整示例:3步拆解底层逻辑 别再去翻那堆几万字、排版还乱的官方文档了,真没时间也没耐心。想搞懂【全球十大创意广告】到底为啥能火,看这篇【完整示例】就够了。… · 2026/9/23 19:35:03

Win8商店应用隐私声明:从被拒到过审的完整实践
Win8商店应用隐私声明:从被拒到过审的完整实践

从第一版易网新闻阅读器提交到 Windows 8 商店的第三天开始,我的收件箱里躺了一封微软的审核驳回通知,原因一栏写得很直接:application does not provide a privacy statement。当时的我确实有点懵——一个不要求注册、不采集手机号、不做地理… · 2026/9/23 19:35:03

Gitpod Usage 组件深度解析:基于用量的计费、积分核算与 Stripe 集成实战指南
Gitpod Usage 组件深度解析:基于用量的计费、积分核算与 Stripe 集成实战指南

开发工具后端云原生 【免费下载链接】gitpod The developer platform for on-demand cloud development environments to create software faster and more securely. 项目地址: https://gitcode.com/gh_mirrors/gi/gitpod 点击查看 免费下载 本文基于 Gitpod 开源… · 2026/9/23 19:34:57

Kornia 迁移指南:LocalFeatureMatcher 不再匹配零值 LAF 填充槽,mask0/mask1 正式生效
Kornia 迁移指南:LocalFeatureMatcher 不再匹配零值 LAF 填充槽,mask0/mask1 正式生效

计算机视觉人工智能深度学习图像处理 【免费下载链接】kornia 🐍 Geometric Computer Vision Library for Spatial AI 项目地址: https://gitcode.com/gh_mirrors/ko/kornia 点击查看 免费下载 本篇迁移指南聚焦 Kornia 特征匹配管线中 LocalFeatureMat… · 2026/9/23 20:18:06

Windows Update 0x80072EFE 错误排查与修复:WinHTTP、BITS 和分块传输详解
Windows Update 0x80072EFE 错误排查与修复:WinHTTP、BITS 和分块传输详解

简介:这份文档资料面向在Windows 7系统中遭遇更新失败、报错代码80072EFE的用户,尤其适合校园网或公司内网环境下无法正常连接微软更新服务器的场景。内容围绕该错误的成因与排查思路展开,涵盖网络限制、无法访问国际互联网、第三方安全软件或… · 2026/9/23 20:17:59

Linux端口映射与转发实战:从iptables到socat的完整指南
Linux端口映射与转发实战:从iptables到socat的完整指南

简介:在Linux服务器运维与开发联调中,第三方接口白名单限制是常见网络痛点,本地环境往往无法直接调用远端测试服务。这份PDF资料系统梳理了三种端口映射转发方案:跳板服务、Nginx反向代理和iptables内核转发。跳板服务适合临时中转… · 2026/9/23 20:17:59

铝片表面缺陷检测:400张VOC+YOLO数据集训练与避坑指南
铝片表面缺陷检测:400张VOC+YOLO数据集训练与避坑指南

简介:本资源为铝片表面工业缺陷检测数据集,面向从事工业质检、表面缺陷识别方向的算法工程师与深度学习学习者,可用于目标检测模型的训练、验证与算法对比实验。数据集同时提供Pascal VOC与YOLO两种标注格式,包含jpg图片及对应的x… · 2026/9/23 20:17:59

基于OpenCV和Python的手势识别系统源码解析与实战
基于OpenCV和Python的手势识别系统源码解析与实战

简介:基于Python与OpenCV实现的手势识别系统,是一份可直接运行的完整工程,面向计算机、电子信息、数学等专业学生,尤其适合课程设计、期末大作业与毕业设计参考。压缩包共12个文件,其中4个Python脚本覆盖手势检测、背景… · 2026/9/23 20:17:53

FAT32源码解析:从引导扇区到嵌入式移植实战
FAT32源码解析:从引导扇区到嵌入式移植实战

简介:FAT32文件系统源代码.zip是一份面向嵌入式开发、驱动编写和操作系统学习者的完整参考实现,覆盖FAT表、启动扇区、簇链、目录与长文件名等核心机制,便于读者从代码层面理解文件系统的工作原理。压缩包共25个文件,以C语言源码和… · 2026/9/23 20:17:53

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码