用途:archive-crawler 是个人文件档案的通用归档器,用于在明确的允许列表范围内探索任意个人内容目录树,筛出“金子”(用户自己的写作、想法、人际关系内容)并逐条呈现供查看。支持来源类型包括 local、dropbox、backblaze、gmail-takeout、mbox、pst。
主要能力:包含安全门、金子过滤器、三阶段流程与清单机制。安全门为强制项:必须在 gbrain.yml 中显式配置 archive-crawler.scan_paths(允许列表),可为空或缺失时技能直接退出,不会自行推断可读内容,且支持在允许列表内设置 deny_paths;该契约由 src/core/storage-config.ts 实施。金子过滤器在展示前区分保留项(个人写作、对话、想法、关系材料、创作、起源故事、情感内容)与跳过项(系统文件、配置、二进制、票据、垃圾邮件、损坏文件)。协议分三阶段:阶段一盘点(确认 scan_paths、映射目录树、分类文件夹、创建清单 projects/<archive-slug>/STATUS.md、提出优先级队列并交用户覆盖);阶段二爬取(先读后展示、逐条呈现、按 quality.md 精确记录用户原话反应、即时入库、更新清单、不重复展示);阶段三入库(按主主题归档到 originals/、personal/、ideas/ 或 people/ 时间线反链,归档规则从 _brain-filing-rules.json 运行时读取,不硬编码年代目录)。
使用方式:在 gbrain.yml 中配置 scan_paths 后运行;文件类型处理涵盖纯文本/HTML/Markdown、.mbox(使用 Python mailbox 模块)、.doc/.docx(.docx 用 zipfile 与 ElementTree,.doc 用 antiword 或 catdoc)、.pst(先校验是否为 !BDN 头,有效时用 readpst -o /tmp/pst-output 解出)、.zip/.tar/.tar.gz(解压到临时目录后递归);图片仅记录存在与元数据,除非用户要求否则不展示。清单模板包含来源、库存、优先级队列与会话日志。
适用场景:整理个人 Dropbox、B2、本地备份、Gmail 导出或旧硬盘转储中的信件、日记、想法等材料,逐条回顾并归档。
限制:未设置 scan_paths 时硬拒绝运行,不得绕过;不得硬编码年代专属归档路径;不得重复展示清单中已标记内容;不得转述用户反应,只能使用原话;不得为发现的内容附加“教训”式包装;内容涉及已有 brain 页面的人物或公司时必须添加反链。相关技能包括 voice-note-ingest、idea-ingest 与 conventions/quality.md。技能保证路由匹配 frontmatter 中的规范触发条件、输出写入 writes_to 所列目录、遵循所引用约定,并保持隐私契约(不含真实姓名、不含分支专属文件系统路径字面量、不含上游分支引用)。输出格式与完整行为契约见上述正文小节。