每次开新会话都要重新教 Claude 这个项目用什么栈?这群人把这件事做成了 IANA 国际标准
当每个 AI 编码 Agent 都在重新发明「怎么告诉模型我是谁」这件事时,我们好像都忘了最基本的一个问题:上下文是会漂移的。
今天要聊的 faf-cli,正是冲着这个烂摊子去的。它不是又一个新的 Skill 包,而是一份「Persistent Project Context for AI」的标准 —— 一个 IANA 注册的媒体类型 application/vnd.faf+yaml,被 Anthropic 官方合并到 MCP 服务器列表(PR #2759,2025 年 10 月 17 日合并),下载量已经超过 11.5 万次。它的作者 Wolfe-Jam 把这件事说得很克制:「FAF defines. MD instructs. AI codes.」
它到底解决了一个什么问题?
Claude Code、Cursor、Gemini CLI、Codex……每个工具都在用一套自己的上下文格式(CLAUDE.md / .cursorrules / GEMINI.md / AGENTS.md)。你的项目里到底应该放哪个?人手写一遍还是 GitHub Copilot 帮你猜一遍?
faf-cli 的解法是:搞一个 project.faf,作为「单一真相源」,再由它自动生成上面所有格式。本质上这是给 AI 工程化做了一个 package.json —— 你不需要每次告诉每个 Agent 你用什么技术栈、什么规范、什么约束,写一次,全场景生效。
亮点功能速览
- Stack 自动探测:跑
faf auto,CLI 自动识别你的框架、语言、Claude Code 子代理、技能、命令,填满所有它能填的槽。 - Trophy 100% 评分体系:从 White(0%)到 Trophy(100%)一共九档,作者在 v6.6.0 起明确「只推荐 Trophy」—— 因为低于 100% AI 就要开始瞎猜。
- 双向同步:
faf sync在project.faf和 CLAUDE.md 之间跑 bi-sync,8ms 延迟。如果你已经有一个手写的 CLAUDE.md,faf recover还能反向重建 .faf。 - Git 原生:
project.faf就放在仓库里,跟着代码版本走 —— 每一个 clone、每一个 fork、每一个 checkout 都自带完整 AI 上下文。 - .fafm 灵魂记忆:v7.2.0 新增的便携式 agent 记忆格式,可以把 Claude Code 的 memory 文件夹转换成
soul.fafm,实现recall / etch / ls / show一条命令的灵魂操作。
为什么这件事值得关注?
把视角拉远一点看 —— 2026 年 AI 编码工具的真正瓶颈早就不是模型智商,而是「上下文怎么持续让模型理解你」。
每个团队都经历过这种痛:onboard 一个新项目,前两周要写三次 CLAUDE.md、给 Cursor 配一遍 rules、给 Codex 写一份 AGENTS.md,然后每次技术栈升级又得全部重做一遍。faf-cli 第一次给这件事定了一个标准格式 + 一个评分体系 + 一个生态级工具链。当 Anthropic 愿意把它 merge 进官方 MCP 列表时,本质上是在表态:上下文工程该有自己的版本管理了。
尤其值得玩味的是 v7.9.0 的「Git-Flow Edition」——faf export 现在会读 project.default_branch 来决定 AGENTS.md 的 PR base,不再硬编码 main。AI 工具开始尊重你的 git workflow,这件事本身就是一种成熟。
上手只需要 30 秒
- 零安装试用:
bunx faf-cli git https://github.com/facebook/react—— 给任何 GitHub 仓库生成 .faf,不用 clone。 - 自己项目里:
npx faf init→npx faf auto→npx faf go(引导式补全只能人来填的槽)。 - 追求深度:
faf hooks --install装上 pre-commit 钩子,提交前自动检查上下文是否回退。
如果你已经受够了「每次开新会话都要重新教 Claude 这个项目用什么栈」,faf-cli 是目前社区里最接近「一次性解决」的工具之一。给它一颗 Star,让这件事真正成为标准。
评论区
登录后可评论。