Caveman 的 AGENTS.md 实践:用一份 15 行的仓库根入口文件,完成 Agent 路由、技能注入与仓库边界 人工智能AI 应用AI 技能AI 插件LLMOps开发工具【免费下载链接】caveman why use many token when few token do trick. Viral skill proxy for coding agents that cuts 65% of tokens by talking like a caveman.项目地址https://gitcode.com/GitHub_Trending/caveman1/caveman点击查看免费下载caveman 是一个让编码 Agent 用穴居人式压缩语言回复以降低 token 消耗的开源项目它自身的仓库恰好是这份Agent 协作契约的完整范例。本文以根目录 AGENTS.md 为绝对主体拆解它如何用绑定式路由binding routing、可见性声明和文件导入三部分把 Claude Code、Codex、Gemini CLI 等编码 Agent 约束在正确的仓库边界内并自动加载核心技能再顺着它强制引用的 CLAUDE.md把背后的单文件真相源、插件自动发现机制、CI 同步工作流与测试守护串成一条可复现的链路。读完本文你可以在自己的多仓库项目中复刻同样的 Agent 入口文件设计并理解每一项约束在源码与测试中的落地证据。一、AGENTS.md 是什么编码 Agent 的自动发现入口AGENTS.md 是整个仓库中最短的文档之一全文仅 15 行但它是为编码 Agent 自动发现机制设计的入口文件。CLAUDE.md 的仓库结构树中明确标注了它的定位与硬约束├── CLAUDE.md # This file (maintainer instructions) ├── AGENTS.md / GEMINI.md # Autodiscovery files (must stay at root)即 AGENTS.md 与 GEMINI.md 是自动发现文件必须留在仓库根目录移动到其他位置会导致支持该约定的 Agent 无法发现它们。逐段拆解 AGENTS.md 的原文结构它由四个部分组成强制首句Read CLAUDE.md before repository work.—— 任何 Agent 在动手改代码前必须先读维护者手册 CLAUDE.md绑定路由Binding routing声明本仓库与另外三个仓库的职责边界可见性声明Visibility声明四个仓库当前及规划中的公开/私有状态四个文件导入把核心技能文件直接拉进 Agent 上下文。第 4 部分原文如下路径为相对仓库根./skills/caveman/SKILL.md ./skills/caveman-commit/SKILL.md ./skills/caveman-review/SKILL.md ./skills/caveman-compress/SKILL.mdGEMINI.md 是同一机制的 Gemini CLI 变体内容为完全相同的四条导入——这正是 caveman 项目自己吃自己的狗粮的设计任何用 Claude Code 或 Gemini CLI 打开本仓库工作的 Agent会在加载入口文件时自动获得这四个技能的行为规则而不需要人工粘贴 prompt。二、绑定路由用一个文件锁定四个仓库的边界AGENTS.md 的第二、三段声明了绑定式路由与可见性。这是多仓库产品族中防止 Agent 跨边界误改的关键约定原文将工作按主题切分到四个仓库仓库拥有owns的工作可见性caveman本仓库skills技能、Engine压缩引擎、MV3 浏览器扩展公开caveman-browseBrowse 驱动、MCP、benchmark、plugin公开caveman-agent-sdkAgent SDK 初始化器开发期私有通过其发布门槛后计划公开caveman-coding-agent含 Caveman-Cloud专有 Pebble 产品永久私有商业源码AGENTS.md 原文为本地路径形式的声明/Users/.../caveman-agent-sdk等CLAUDE.md 中给出了对应的上游仓库名JuliusBrussee/agent-sdk、JuliusBrussee/caveman-coding-agent、JuliusBrussee/caveman-browse。对 Agent 而言这段的实际语义是路由规则收到改 Agent SDK这类请求时不应在本仓库里找代码而应指向对应仓库。其中一条边界尤其值得注意CLAUDE.md 在Repository routing一节给出补充说明本仓库的 browse/ 目录是consumer copy消费方副本——它仍然构建caveman-browse发布二进制但源码真相在caveman-browse仓库。因此只允许为pinned integration、迁移/移除、或明确请求的跨仓库同步三类理由编辑该目录。这条规则直接约束了 Agent 的日常行为绝大多数情况下browse/对写入是只读的。三、导入的四份技能文件被注入上下文的压缩行为规则AGENTS.md 导入的四个 SKILL.md 文件各有一份独立的人类可读 README.md 伴随CLAUDE.md 强调面向 LLM 的是 SKILL.md面向浏览 GitHub 的用户的是 README.md两者不可合并。四份技能的 frontmatter 定位如下技能文件frontmatter description摘译cavemanskills/caveman/SKILL.md超压缩通信模式保留技术准确性级别 lite/full/ultra 及 wenyan 变体触发词/caveman、caveman mode、less tokenscaveman-commitskills/caveman-commit/SKILL.md把提交信息压缩为 Conventional Commits 意图表达触发 write a commit、/caveman-commitcaveman-reviewskills/caveman-review/SKILL.md压缩式代码审查每条发现一行位置、问题、修法触发 review this PR、/caveman-reviewcaveman-compressskills/caveman-compress/SKILL.md把 CLAUDE.md、todo 等记忆文件压缩为 caveman 格式并保留可读备份触发/caveman-compress以核心的 skills/caveman/SKILL.md 为例导入意味着 Agent 读到 AGENTS.md 时就把整套行为规则读进了上下文。这份规则定义了六个强度级别lite、full默认、ultra、wenyan-lite、wenyan-full、wenyan-ultrawenyan 即文言文模式以及几条可验证的压缩纪律删除冠词、填充词just/really/basically、客套话sure/certainly/happy to与对冲表达允许句子碎片禁止发明新缩写cfg/impl/req/res/fn这类自造缩写经 tokenizer 切分后与全词 token 数相同零节省还损失可读性——全词更便宜也更清晰因果箭头→同样是零节省占一个 token禁用not/never/no/only/except永不删除——删掉比省下的任何 token 都更糟Auto-Clarity 规则遇到安全警告、不可逆操作确认、可能被碎片语序误读的多步序列时自动退回正常行文讲清楚后再恢复压缩。CLAUDE.md 为此专门设立了一条硬规则Editskills/name/SKILL.mdfor behavior changes. Never edit synced copies underplugins/caveman/skills/——行为变更只改源头技能文件同步副本由 CI 负责见第五节。四、CLAUDE.md被 AGENTS.md 强制引用的维护者手册AGENTS.md 第一句要求先读 CLAUDE.md因此后文内容同样是这条链路的组成部分AGENTS.md 是路由 技能注入CLAUDE.md 是工程纪律全文。4.1 单文件真相源Single Source of TruthCLAUDE.md 用一张表声明了只允许编辑这些文件的清单摘录核心行文件控制什么skills/caveman/SKILL.mdcaveman 全部行为强度级别、规则、wenyan 模式、auto-clarity、持久化。行为变更只改这一个文件src/rules/caveman-activate.md常驻自动激活规则体。用户运行npx caveman --with-init时由 src/tools/caveman-init.js 消费为每个仓库写 IDE 规则文件只改这里不碰任何按 Agent 拷贝的副本src/rules/caveman-openclaw-bootstrap.mdOpenClaw SOUL.md 的 bootstrap 片段。必须保留!-- caveman-begin --/!-- caveman-end --标记与Respond terse like smart caveman哨兵句bin/lib/openclaw.js 以二者为幂等键bin/install.js30 个 Agent 的统一安装器PROVIDERS数组是唯一真相源消灭 bash/PowerShell 双源漂移配套规则是构建产物纪律构建产物一律进dist/从不手工提交——CI 在 push 时重建dist/已被 gitignore仅!dist/caveman.skill例外见第五节。4.2 插件自动发现没有 allowlist 的skills/目录这是 CLAUDE.md 中最锋利的边。.claude-plugin/marketplace.json 设置source: ./即插件根就是仓库根Claude Code 会自动发现每一个skills/*/SKILL.mdplugin.json里没有任何skills键可以拦截它。后果往 skills/ 下新增任何目录都会安装进所有插件用户的 Agent其description会在日常任务中参与激活竞争。CLAUDE.md 的结论是没有 allowlist。新增目录前先决定它是否该到达终端用户不该的话放packages/或其他根目录并要求以ls skills/为真相源同步文档表格。同一机制还有两个踩坑记录均被 tests/verify_repo.py 守住agents/*.md会被整体自动发现为子代理而 plugin.json 中的agents数组曾在 Claude Code 2.1.235 上加载 0 个代理claude plugin details报Agents (0)。因此维护文档必须放在agents/树外且plugin.json不得重新加回agents键commands/*.md会与同名技能影子冲突。caveman.md等四个与真实技能同名的 3 行 stub 曾与完整规则集竞争同一 slash 命令已被删除commands/ 目录现在只保留没有技能孪生的caveman-init.md以及 Codex/Gemini 专用的.tomlstub.toml不被扫描。4.3 各 Agent 的分发机制CLAUDE.md 用一张表说明 caveman 如何到达每一类 Agent摘录关键行Agent机制是否自动激活Claude Code插件hooks skills或独立 hooks是——SessionStart hook 注入规则Codexplugins/caveman/ 插件 .codex/hooks.json与.codex/config.toml是macOS/Linux——SessionStart hookGemini CLI扩展 GEMINI.md 上下文文件即第二节所述的同构入口文件是——每个会话加载上下文文件opencode原生插件 src/plugins/opencode/ 拷入~/.config/opencode/plugins/caveman/session.created写标志、tui.prompt.append解析激活词是OpenClaw工作区技能 ~/.openclaw/workspace/SOUL.md中带标记的 bootstrap 块受 OpenClaw 12K/文件、60K 总量上限约束是Cursor / Windsurf / Cline / Copilotnpx skills add ... -a profile上游技能 --with-init写的每仓库规则文件是——always-on 规则新增 Agent 的规程同样写死在 CLAUDE.md只改 bin/install.js 的PROVIDERS数组每个条目含id、label、mech、detect如command:foo||dir:$HOME/x、可选profile与soft: true改完用node bin/install.js --list验证渲染。4.4 数据纪律eval 与 benchmark 不允许编造CLAUDE.md 为数字设立了双保险。evals/ 是三臂 harness__baseline__无系统提示、__terse__仅Answer concisely.、skillAnswer concisely. SKILL.md 全文且诚实的 delta 定义为 skill 对比 terse而非 skill 对比 baseline——与 baseline 比会把技能和泛化简洁混为一谈harness 的结构就是为了防这一点。benchmarks/ 则用真实 prompt 走 Claude API 记录原始 token 数结果以 JSON 提交在 benchmarks/results/README 的 benchmark 表由结果生成。两条配套规则基准数字必须来自真实运行Never invent or round新增技能只需放入skills/name/SKILL.mdharness 自动发现。4.5 安全与可靠性纪律对 Agent 的硬性禁令CLAUDE.md 末尾的Key rules for agents working here是一组可执行的工程纪律逐条都有实现或测试背书flag 文件写入必须走safeWriteFlag()src/hooks/caveman-config.js拒绝符号链接目标、支持O_NOFOLLOW、临时文件 rename 原子写、0600权限——防止本地攻击者把可预测路径替换为符号链接去覆盖用户可写文件凡进入文件路径的session_id必须先过validateSessionId()白名单^[A-Za-z0-9_-]{1,128}$因为 session id 会拼进文件路径符号链接加固不覆盖路径穿越所有从 stdin 读 host hook payload 的入口在第一个完整 JSON 对象处返回绝不等到 EOF——Windows 管道实现下宿主关闭写端会任意滞后CLAUDE.md 引 issue #729/#833/#949等 EOF 的读者会烧光宿主 5 秒预算caveman-activate.js、caveman-mode-tracker.js等读者各自配有保持写端打开的回归测试hooks 必须在一切文件系统错误上静默失败绝不让 hook 崩溃阻塞会话启动改 src/hooks/ 下任何文件后必须重算src/hooks/checksums.sha256否则 tests/verify_repo.py 构建失败且 bin/install.js 会用该清单校验远程下载的 hook 文件settings.json 读写必须走 bin/lib/settings.js的readSettings()容忍 JSONC 注释与写入前的validateHookFields()——Claude Code 的 Zod 会在 schema 不匹配时静默丢弃整个 settings.json一条坏 hook 不能毒化全文件hooks 必须尊重CLAUDE_CONFIG_DIR环境变量不得硬编码~/.claude。五、CI 同步与测试守护让只改源头成立第三节的Never edit synced copies能成立靠的是 .github/workflows/sync-skill.yml 与 tests/verify_repo.py 的组合。sync-skill.yml的触发条件以工作流文件实际内容为准push 到main且命中skills/caveman/SKILL.md、skills/cavecrew/SKILL.md、agents/cavecrew-*.md、skills/caveman-compress/SKILL.md、skills/caveman-compress/scripts/**任一路径。流程为拷贝skills/caveman/SKILL.md到 plugins/caveman/skills/caveman/ 镜像拷贝 caveman-compress 技能及其scripts/清理__pycache__到插件镜像拷贝skills/cavecrew/SKILL.md与三个agents/cavecrew-*.md子代理到插件镜像重建dist/caveman.skill——先rm -f再zip -r因为zip -r是增量追加而该 ZIP 被 git 跟踪不先删除的话从skills/caveman/删掉的文件会永远留在发布包里以github-actions[bot]提交并 push带[skip ci]防止循环。本地验证端由 tests/verify_repo.py 的verify_synced_files()承担约 L220-L268。它的校验强度超过文件存在三份 SKILL 镜像与三个子代理镜像必须与源头逐字节相等对dist/caveman.skill则同时检查缺失项与多余项——解包内容集合必须与skills/caveman/磁盘文件集合精确一致从而抓住zip -r增量追加导致的陈旧条目。CI 与本地测试从两端夹住了同一不变量源头改、镜像跟、包不漂。安装侧的证据链同样完整根目录 install.sh 只是约 60 行的 shim——检测 Node ≥ 18在本地克隆时直接exec node bin/install.jscurl-pipe 路径则委派给npx -y github:JuliusBrussee/caveman#v3.0.0install.ps1 对称。注释里记录了双源时代的历史教训install.sh install.ps1 used to be parallel sources of truth and constantly drifted (issue #249)——这正是bin/install.js成为唯一安装器真相源的原因。而 hook 在插件形态下的注册内容可对照 .claude-plugin/plugin.jsonSessionStart钩caveman-activate.js、UserPromptSubmit钩caveman-mode-tracker.js均为 command 类型、30 秒超时。六、小结AGENTS.md 模式的可复制要点以 AGENTS.md 为主体的这条链路给出了多仓库 多 Agent 项目的入口文件范式路由先于内容入口文件第一段就声明什么工作属于哪个仓库并用 consumer copy 条款锁定本仓库内只读区域把 Agent 的误改面收敛到最小可见性与所有权分离声明public/private 是披露策略不影响代码归属判断分开写避免歧义导入替代粘贴技能规则以./skills/name/SKILL.md形式引用GEMINI.md 复用同一组导入规则本体只在skills/下维护一份每个纪律都挂一个守护镜像同步挂sync-skill.ymlverify_repo.py字节级比对hook 完整性挂checksums.sha256路径安全挂validateSessionId/safeWriteFlag及其回归测试——文档里的禁令没有一条是君子协定。这套设计的最终效果是AGENTS.md 保持 15 行的极简但它指向的 CLAUDE.md、四个 SKILL.md、CI 工作流与测试文件共同构成了一份 Agent 可执行、CI 可验证、可逐条引用文件路径的协作契约。赞分享人工智能AI 应用AI 技能AI 插件LLMOps开发工具【免费下载链接】caveman why use many token when few token do trick. Viral skill proxy for coding agents that cuts 65% of tokens by talking like a caveman.项目地址https://gitcode.com/GitHub_Trending/caveman1/caveman点击查看免费下载相关推荐Easydict 仓库 Agent 文档结构收敛实践从 11 份文档到「根入口 专题权威文件」Easydict 仓库 Agent 文档结构收敛实践从 11 份文档到「根入口 专题权威文件」 本篇技术指南以 Easydict 开源仓库中已完成的执行计桌面应用AI 应用Easydict Agent 文档入口与治理结构移植从 AGENTS.md 单一入口到计划/History 生命周期的仓库实践Easydict Agent 文档入口与治理结构移植从 AGENTS.md 单一入口到计划/History 生命周期的仓库实践 导读 本文基于 Easydic桌面应用AI 应用解读 ccusage 仓库的 AGENTS.md面向 AI Agent 的代码库路由与治理规范解读 ccusage 仓库的 AGENTS.md面向 AI Agent 的代码库路由与治理规范 导读 AGENTS.md 是 ccusage 项目为 AI 编AI 应用CLI开发工具上一篇FreeLLMAPI 桌面端在本地菜单栏运行 LLM 路由器——Electron 应用构建、开发与机制详解下一篇Kilo 核心工具架构解析Tool 表示、Location 注册与结算机制深度指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考