资讯动态

OpenLore 文件夹规则完整指南:三层规则如何拦截超标文件与坏格式知识

发布时间:2026/10/15 18:15:04 来源:尧图企业网站定制
【免费下载链接】OpenLoreA minimal, extensible, agent-native knowledge repository that keeps shared context current and inspectable项目地址https://gitcode.com/gh_mirrors/ope/OpenLore点击查看免费下载OpenLore 是一个面向 AI Agent 的极简知识仓库其核心能力之一是文件夹规则Folder Rules一套声明式检查在文件落盘前和lore validate时自动拦截超标文件行数、字节、token 超限与坏格式知识缺 YAML frontmatter、断链、bundle 结构错误。本指南用最短路径讲清楚三层规则如何叠加、如何收紧单文件夹标准以及被拦截时该怎么处理。一、文件夹规则是什么写入前的质量门禁 OpenLore 默认只读。一旦启用写入规则引擎会在每个写入操作生效前完成两件事逐文件检查用规则标准库成员size/lines、size/kilobytes、size/tokens、okf校验目标文件enforce: true的规则一旦命中整个写入批次被拒绝整包检查okf/bundle、link/resolves、link/alias等 bundle 级规则不干预写入而是由lore validate统一扫描。规则本身是纯声明式的每条规则用 glob 圈定一组文件再指定一个标准库成员去检查它们。标准库全部成员及其参数见 docs/rules-stdlib.md引擎实现位于 pkg/rules/。二、三层规则结构从全局到文件夹自治对任意目标路径引擎会把所有覆盖它的层合并成一份有效规则集。三层分别是lore.json rules: 全局规则适用于所有 docset lore.json docsets.X.rules: docset X 的显示根目录下适用 目录/.lore/config.yaml 该目录及其子树适用H3 层 1lore.json全局层与 docset 层lore.json顶层rules作用于每个 docsetdocsets.name.rules只作用于该 docset 的显示根paths声明的目录。两层共用同一规则形状。仓库自带配置样例可直接参考 lore.json.example{ rules: { doc-size: { match: [**/*.md], use: size/kilobytes, with: { max: 60 }, default: true } } }注意default: true——它表示这条规则允许子文件夹用同名规则替换是后续收紧标准的关键开关。H3 层 2.lore/config.yaml文件夹自治层在内容树任意目录放一个.lore/config.yaml即可给该目录及一切子目录追加规则version: 1 rules: adr-length: # 规则名本文件内唯一 match: [decisions/*.md] # glob相对本目录支持 ** exclude: [decisions/draft-*.md] use: size/lines # 标准库成员 with: { max: initial, growth: 1.1 } enforce: true规则级键只有match、exclude、use、with、enforce、default六个成员参数一律放在with内拼错参数名会直接报错并给出建议如did you mean max?。glob 相对所在层的作用目录匹配*匹配单级路径**匹配任意级。H3 层 3openlore.yml全局默认openlore.yml中可设rules.growth默认 1.25必须 ≥ 1作为所有max: initial规则的全局默认增长系数详见 docs/openlore-yml.md。三、规则如何叠加同名替换、新名收紧、永不放宽合并逻辑是整个机制里最容易踩坑的部分记住三条口诀场景行为不同名的规则全部求值任何一条违规即拒绝写入——层与层之间只会叠加检查同名且外层标了default: true内层规格替换外层规则同名但未标default且规格不同配置非法在写入.lore/config.yaml或启动读lore.json、或lore validate时被拒绝冲突时的报错长这样一眼能看出该改哪一层.lore/config.yaml: rules.doc-size: conflicts with doc-size lore.json (max: 400 vs 60); use a new rule name to tighten要点子文件夹永远不能放宽它自己没写的规则。想给某个目录收紧标准二选一父层标了default: true就同名替换否则用新规则名追加一条更严的检查。想豁免文件则在规则所属层加exclude:或利用嵌套 docset 的影子作用域。系统没有inherit键目录下的配置天然覆盖其子树。合并算法可参考 pkg/rules/compile.go 中的Unify函数。四、拦截超标文件size 规则与增长上限 三个 size 成员分别限制行数、KiB、估算 token 数参数相同max固定值或initial加可选growth。固定上限简单直接with: { max: 800 }表示永远不能超过 800 行越界即被拒绝。增长上限max: initial的 baseline 机制max: initial让文件相对自身限长首次写入记录 baselineKiB/行数/token 三项之后文件不得超过baseline × growth。baseline 的生命周期很讲究新建文件首次被接受的写入即 baseline若该写入被其他规则拒绝baseline 不生效下次写入重新算新建给存量文件加规则baseline 取规则生效前已有内容的大小——冻结现状不会因为文件已经很大而拒绝下一次编辑rm清空 baselinemv把 baseline 带到新路径状态存在dir/.lore/size/文件名.jsonl跟随内容树走tree/ls不显示也无法通过 VFS 读写。查看与重置 baseline 用lore size baseline子命令实现见 pkg/shell/cmds/lore_size.golore size baseline /docs/backend/decisions/adr-001.md # current cap: 893 lines lore size baseline reset /docs/backend/decisions/adr-001.md --note ADR grew after review每条记录都署名操作者并保留完整历史reset 还会写入服务端审计日志rules.baseline.reset。读懂一次拒绝拦截输出是给 Agent 看的说明书被拒写入退出码非零并打印四段式诊断测到什么/上限是多少 → 不能做什么 → 建议怎么做 → 特权人工如何覆盖rules: /docs/backend/decisions/adr-001.md: size/lines (adr-length /docs/backend/.lore/config.yaml) 812 lines exceeds the limit of 800 (baseline 640 lines × growth 1.25, set 2026-08-30 on create) this file cannot grow past 800 lines under this rule suggested: keep adr-001.md under 800 lines; move the new material into a sibling file such as adr-001-details.md ... override: a role in config.edit can run lore size baseline reset /docs/backend/decisions/adr-001.md see: lore package doc size/linessize/*的补救建议是渐进披露把新材料拆到同级文件并从原文件加链接而不是反复小幅度删减。规则引擎源码分别在 pkg/rules/size/ 与 pkg/rules/okfrule/。五、拦截坏格式知识okf 与 link 规则 坏格式知识的拦截分 file 与 bundle 两个作用域运行时机完全不同作用域成员写入时lore validate时fileokf、size/*求值强制项拒绝写入逐文件求值bundleokf/bundle、link/resolves、link/alias从不运行在 bundle 根求值一次okf坏格式的第一道闸每个概念文件必须以---分隔的 YAML frontmatter 开头写入时即拒绝okf: /docs/bad.md: missing YAML frontmatter block (a concept must open with a --- delimited block) see: lore package doc okfbundle 规则为何不在写入时跑一次合法写入可能暂时破坏整包一致性新增概念要等index.md后续更新、链接目标可能下一步才写入写入路径拒绝或告警都是噪音所以交给lore validate。这带来一个关键结论**退出码为 0 的写入是已保存不是已验证。**含断链的文件会被所有写入动词接受只有lore validate docset 根才报告。因此推荐写 → 验 → 完闭环一次变更的最后一笔写入后运行lore validate以其退出状态作为完成条件完整工作流见 docs/writing.md。注意要在每个 docset 或文件夹下运行不能在/下运行——否则 bundle 规则会静默缺席命令会直接拒绝并提示。六、权限控制谁能改规则谁来兜底 规则文件本身就是被治理对象编辑门槛是双条件对目标目录拥有该 docset 下的写权限角色列在该 docset 的config.edit名单中。config: { edit: [engineer] }没有配置config.edit的 docset没有任何人能写它的文件夹配置可读文件夹的人即可读其配置。删除同样受此闸门约束rm配置文件需双条件rm -r一棵含多个配置的目录树则每一棵配置都要满足双条件否则整个删除失败——否则普通rw角色就能靠删了重建甩掉一整套治理。lore size baseline reset因为是给单个文件松绑走同一权限通道。七、最佳实践清单 ✅全局只留宽松默认如size/kilobytes: max 60并标default: true让子文件夹可以放心同名替换收紧标准用新规则名避免与未标default的外层规则冲突决策记录等冻结型文档用max: initial growth天然防止知识文件无限膨胀每次变更收尾跑lore validate把 bundle 级坏格式挡在合并前token 上限留余量size/tokens使用内置估算器estimate/v1ceil(bytes / 4)是近似值遇到拒绝按suggested:执行或向人工索要override:命令不要盲目重试。完整机制、错误信息格式与真实案例的权威出处是 docs/folder-rules.md会话内随时可用lore package list查看成员作用域、lore package doc member查阅单条成员文档无需离开终端。赞分享【免费下载链接】OpenLoreA minimal, extensible, agent-native knowledge repository that keeps shared context current and inspectable项目地址https://gitcode.com/gh_mirrors/ope/OpenLore点击查看免费下载相关推荐at-rule-no-unknown 规则完全指南用 Stylelint 拦截未知 规则at rule no unknown 规则完全指南用 Stylelint 拦截未知 规则 Stylelint 的 at rule no unknown 规代码质量静态分析前端ECC TypeScript 安全规则实战Cursor 规则文件、密钥管理与 Hook 拦截的完整防线ECC TypeScript 安全规则实战Cursor 规则文件、密钥管理与 Hook 拦截的完整防线 本文以 .cursor/rules/typescrip人工智能AI 技能AI 插件AI 评测Agent 评测MCP Clients开发工具WindowsSpyBlocker 拦截规则体系三大规则类别、八种提供方格式与自动化生成原理WindowsSpyBlocker 拦截规则体系三大规则类别、八种提供方格式与自动化生成原理 导读 WindowsSpyBlocker 的核心资产是仓库 da网络安全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑