关于 infernoflow
infernoflow 是面向编码 Agent 的本地优先记忆系统,将项目中的注意事项、决策、尝试和书签保存为 Git 跟踪的文本。它通过 CLI、VS Code 扩展和 MCP 工具跨会话传递上下文,无需 SaaS 服务。
主要功能
- 01保存结构化项目记忆
- 02恢复会话并创建书签
- 03将上下文注入 IDE 规则文件
- 04搜索、整理和解决记忆条目
- 05通过 Git 跟踪项目文件
适用场景
- 01在新会话中沿用项目决策
- 02在上下文窗口受限后恢复工作
- 03通过 Git 分享并审阅记忆变更
MCP 相关
其 MCP 服务向兼容客户端提供 amp_write、amp_read 和 amp_bookmark 等工具。工具与 CLI 和 IDE 集成共用本地 .ai-memory 文件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
9收录的工具列表 · 更新于 5 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file | string | 否 | |
| type | enum | 否 | gotcha | decision | attempt | note | detection | pattern | preference |
| limit | integer | 否 | |
| query | string | 否 |
详细介绍
🔥 infernoflow
每个新的 AI 会话都是从零开始——你发现的陷阱、做出的决定,都无法保留下来。infernoflow 会让它们留存下来。
为 AI 编码会话提供持久记忆。记录那些代码无法告诉 Agent 的陷阱、决定和弯路,并在下一次 Cursor / Claude Code / Copilot 聊天中重新呈现,让同样的错误不再发生两次。
昨天,你花了 90 分钟告诉 Claude:你的身份验证 API 即使遇到错误也会返回 200——要检查响应正文,而不是状态代码。今天你问了类似的问题,却又看着它到处写 if (response.ok) { return data }。AI 并没有一夜之间变差。它只是没有记忆。
infernoflow 是本地优先的 CLI + VS Code 扩展 + 开放协议(AMP),能让 AI 在不同会话间保留上下文。没有 SaaS。磁盘上的 JSONL。IDE 已经会读取的三个规则文件。
0.46 版新内容
- 每次 Claude Code 会话都使用最新记忆——SessionStart 钩子会注入当前记忆(并将其标注为需要核实的信息,而非指令);
CLAUDE.md不再保存一份可能过时的副本。 infernoflow resume——一次调用即可回答“我们进行到哪儿了?”。Claude Code 也会在会话结束时自动留下本地恢复点。- 过时和已解决的条目——关于已发生变化的文件的条目会标记为可能已过时;
infernoflow resolve <id>可将条目从 AI 上下文中移除。 - 检查通过 git 收到的内容(0.46.1)——队友添加的记忆会列出来,供你审核;GitHub Action 会在每个 PR 中显示记忆变更。
- 默认更安全——仅预先批准只读 MCP 工具;memory-keeper Agent 仅限执行单条
infernoflow命令;机密信息会被隐藏;MCP 按项目注册。 infernoflow doctor --e2e(0.46.3)——在临时沙盒中进行端到端自检:CLI、调用全部工具的 MCP 服务、提示词和会话钩子、git 偏移以及归属信息。此外:提示词钩子会忽略 Agent / 工具文本;记忆模式项目不会显示契约工具;git 偏移会报告 git 故障;每个条目都会注明撰写者。
完整列表:CHANGELOG.md。
会话书签
在会话中途创建一个命名恢复点。当上下文窗口即将填满,或你准备进行有风险的更改时,只需一条命令,就能捕获当前会话的记录,并将其保存为可跳转的检查点:
infernoflow bookmark "before the SP refactor"
也可以直接在聊天中提出——Cursor 的 beforeSubmitPrompt 钩子会捕捉 "bookmark this" / "mark this point" / "save this checkpoint" 等短语,并自行创建书签,无需 AI 配合。或者让 AI 在发现会话变得很长时,通过 amp_bookmark MCP 工具来创建书签。
没有 --note? infernoflow 会读取 Claude Code 磁盘上的会话记录(~/.claude/projects/…/*.jsonl),将最近 40 轮对话整理成 markdown,并保存为书签的上下文。整个过程完全确定性——不会调用模型。随时都能查看:
infernoflow bookmark list # ● has context, ○ marker only
infernoflow bookmark show "SP refactor" # jump back — see the whole snapshot
书签永远不会自动清理,并会显示在 infernoflow switch 的 ## 🔖 Bookmarks — Resume Points 部分,让下一个会话能从工作暂停处继续。
🆕 主动捕获 — Claude 技能 + 记忆管理 Agent
init 现在会在 .claude/ 中安装两项内容,让这套循环在 Claude Code 上自动运行:
infernoflow-memory技能(.claude/skills/)— 教会 Agent 以热启动方式开始(resume),然后主动log真实的易踩坑之处、带有 because 的决策、走不通的路,以及长期偏好;在停下时或你说 “bookmark this” 时添加一个bookmark。捕获策略适度平衡 — 跳过常规步骤、从代码中显而易见的内容、机密和重复内容。memory-keeper子 Agent(.claude/agents/)— 可委派任务给它的专用助手。它会梳理会话内容,与已有记录去重,记录值得保留的内容,添加书签并向你汇报。它绝不会编辑代码或记录机密;此外,防护机制会将其 shell 限制为单条infernoflow读取/记录命令(如果防护机制无法运行,则会阻止执行)。
运行 infernoflow init 时会自动安装这两项内容(全新项目和已有项目再次运行时均适用),并且它们已包含在软件包中 — 无需手动设置。
循环
如今,每个新的 AI 会话都是从冷启动开始的。Agent 会重新阅读你的代码、重新推导显而易见的内容,还会重蹈别人昨天犯过的错误。infernoflow 通过四个阶段闭合这一循环:
- 捕获 — 你和 Agent 工作期间,值得保存的时刻会自动记录:遇到易踩坑之处、做出决策、尝试失败的修复、发现某种模式,或标记恢复点。AI 会通过
amp_writeMCP 工具写入这些内容。注入规则文件的协议说明会准确教会它何时记录。提示词钩子(Claude CodeUserPromptSubmit、CursorbeforeSubmitPrompt)会扫描你输入的文本,在 AI 没有记录时,通过确定性方式写入条目,为 AI 提供补充保障;它们会跳过子 Agent 交接内容、系统提醒、围栏代码或缩进代码、引文和堆栈跟踪,并查找问题信号(not working、still broken、same error;!!/retry仅在较短的提示词中有效)。Cursor 钩子还会将 “bookmark this” 转成书签。 - 关联 — 每个捕获的时刻都会成为一条结构化 AMP 条目(
gotcha | decision | attempt | note | detection | pattern | bookmark),包含时间戳、file:line、标签和稳定的 AMP ID。 - 持久化 — 条目会写入
.ai-memory/branches/<branch>.jsonl(由 Git 跟踪并随分支流转 — 团队成员也会继承这些内容),以及.ai-memory/global.jsonl(个人偏好,由 Git 忽略,并通过任意操作系统同步文件夹在你的各台设备间同步)。 - 恢复 — 新会话开始时,Agent 会在启动时读取
CLAUDE.md/.cursorrules/copilot-instructions.md。最相关的条目已经在其中。热启动;无需冷启动推导。
无需登录服务。无需 SaaS。磁盘上的 JSONL、一个 MCP 服务,以及 IDE 已经会读取的三个规则文件。
安装
npm install -g infernoflow
infernoflow init --yes
运行时零依赖。适用于 Node ≥ 18 — macOS、Linux、Windows。
init --yes 会完成整个设置:创建 .ai-memory/,为所有受支持的 IDE 写入规则文件,一次性为 Cursor / VS Code Copilot / Claude Code 配置 MCP 服务,在 .claude/ 中安装 infernoflow-memory 技能和 memory-keeper Agent,应用干净工作树 Git 策略,并添加一条可见的演示条目,方便你确认循环已正常运行:
infernoflow status
核心 5 条命令 + 4 条
这些命令覆盖了 95% 的使用场景:
| 命令 | 功能 |
|---|---|
infernoflow log "..." | 记录一个易踩的坑、决策、尝试或备注。--type gotcha|decision|attempt|preference |
infernoflow resume | 🆕 0.46 一次调用回答“我们上次进行到哪了?”——包含上次的续接点、尚未解决的死胡同、近期决策和未提交的工作。--file <path> 会优先显示相关文件的条目 |
infernoflow ask "..." | 按关键词搜索记忆——优先显示易踩的坑。--file <path> 会优先显示与该文件相关的条目 |
infernoflow switch | 为下一个会话生成交接内容。--copy 会将其复制到剪贴板 |
infernoflow recap | 会话结束时生成摘要,并提供健康评分和未记录变更检测;列出通过 git 获取的记忆,并标记为已审核 |
infernoflow status | 快速健康检查——条目、易踩的坑、决策和最近活动 |
infernoflow bookmark "..." | 🆕 添加一个命名的续接点——自动捕获会话记录作为上下文。list / show <id|label> / rm 可完成其余操作。会显示在 switch 中。永不自动清理。 |
infernoflow refresh | 根据记忆手动重建 CLAUDE.md / .cursorrules / copilot-instructions.md |
infernoflow forget <id|prefix> | 删除一条记忆,无需手动编辑 JSONL。使用 --last 删除最新的一条 |
infernoflow prune | 将超过 30 天的过期 note / attempt 条目归档。易踩的坑、决策和书签永不自动清理。默认仅试运行;使用 --apply 执行 |
infernoflow resolve <id> | 🆕 0.46 将一条记录标记为已修复/已过时——仍可搜索,但不再注入。自写入后文件发生变化的条目会显示 “可能已过时” |
infernoflow curate | 🆕 0.46 清除噪声:旧提交备注、重复内容、原始挫败情绪提示词。仅试运行;使用 --apply 执行 |
infernoflow move <id…> --to <dir> | 🆕 0.46 将归错位置的条目移至另一个项目的记忆中。仅试运行;使用 --apply 执行 |
任何命令都可以使用 --project <dir> 来操作其他项目的记忆(适用于多文件夹工作区、钩子和 Agent)。
实际使用时,你几乎不需要运行这些命令——支持 MCP 的 AI 会替你完成。CLI 用于 grep 式的内省。
infernoflow commands 会显示完整命令列表(约 23 条,按用途分组)。
通过 LMT + MCP 与 GitHub Copilot Chat 配合使用
Copilot Chat 从 VS Code 1.102 起支持 MCP 服务(2025 年 7 月正式发布),因此任何基于 MCP 的记忆工具都可以接入。infernoflow 同时提供两种传输方式,让 Copilot 无论使用哪种可用方式,都能调用相同的六个 amp_* 工具:
- VS Code 语言模型工具(LMT)。 infernoflow VS Code 扩展会将
amp_write和amp_read注册为原生 LMT 工具。无需项目级配置,也无需设置 MCP 客户端——安装扩展后,Copilot 的工具选择器中就会显示🔥 amp_write。在聊天框中使用#amp_write/#amp_read手动调用。 - MCP 服务。
infernoflow init也会将 MCP 服务配置到.vscode/mcp.json中,因此 Copilot 的 MCP 客户端可以调用相同的工具;如果你更喜欢这种方式,或希望在 Agent 模式下使用它们,就可以选择此方案。
Cursor、Claude Code 和任何支持 MCP 的客户端都使用同一个 MCP 服务。一个产品、一个磁盘文件、多种传输方式——选择适合你配置的方式;两种方式都会写入同一个 .ai-memory/。
保持精简:令牌预算 + 轮换
每轮 AI 对话都会为注入的记忆块付费(如果某个工具同时加载 CLAUDE.md 和 copilot-instructions.md,则会付费两次)。infernoflow 提供精简的默认设置——4 条记录、5 次提交、截断至 200 个字符,以及约 3 行的精简协议(完整的触发表与 amp_* 工具描述重复,因此默认关闭:每个文件、每轮可节省约 430 个令牌)。可在 .ai-memory/amp.json 中进一步调整:
"config": {
"injection": {
"maxEntries": 4, // memory entries injected
"maxCommits": 5, // git commits injected
"maxEntryChars": 200, // per-entry truncation
"targets": ["CLAUDE.md", ".cursorrules"], // drop a file from the list and its stale block is stripped automatically
"protocolStyle": "compact" // "compact" (default) · "full" (restore the trigger table) · "off"
},
"rotation": {
"archiveAfterDays": 30,
"archivableTypes": ["note", "attempt", "detection"],
"auto": false // true → silent prune on every `log`
},
"maintenance": "suggest" // "suggest" (default) · "auto" · "off"
}
也可以通过 CLI 标志设置相同的值:
infernoflow setup --max-memory 3 --max-commits 5 --max-entry-chars 200 --protocol-style compact
infernoflow refresh --targets CLAUDE.md,.cursorrules # only these get the block; the rest are stripped
infernoflow refresh --targets auto # canonical file for the IDE you're in (kills Copilot's double-load)
infernoflow prune --apply --max-age-days 14 # one-off cleanup
轮换会将过时的 note / attempt / detection 条目归档到 .ai-memory/archive/sessions-YYYY-MM.jsonl 中——合并读取时不会显示这些条目(因此 AI、侧边栏、ask 和 refresh 不会再显示它们),但仍保留在磁盘上,方便你恢复。gotcha、decision、pattern 和 bookmark 条目永远不会自动清理——这正是你使用 infernoflow 记录的知识。
维护提示(0.46.5):当记忆中积累了噪声(重复内容、旧的提交备注、机器文本)、提及已发生变更的文件,或堆积了大量旧备注时,status、recap 和会话启动上下文会指出问题并列出对应命令(curate --apply、resume、prune --apply)。会话启动提示每天最多显示一次,并告知 AI 运行任何命令前都应先询问。「auto」模式会每天自动处理安全的部分(先归档噪声再移除,旧备注会移入归档);对于提及已变更文件的条目,仍只会给出建议,因为是否过时应由人来判断。可调整阈值:"maintenance": { "mode": "suggest", "thresholds": { "curate": 3, "stale": 3, "prune": 20 } }。
双层正文:任何条目都可以包含详尽的 detail——它存储在单个 .ai-memory/details.jsonl 中(0.44.18 起整合到此文件;较旧的每条记录对应的 details/<id>.md 旁置文件会在下次写入时自动迁移),并通过 readDetail() 按需加载,且绝不会注入规则文件。精简索引始终保持精简;只有打开正文时才会产生相应开销。log --detail、--detail-file、MCP amp_write 的 detail 参数,以及新增的 amp_bookmark 工具都会写入此处。
分支感知记忆 + 跨设备同步
队友检出你的分支,也会继承你的记忆。
.ai-memory/
├── branches/
│ ├── main.jsonl ← project-wide truths (git-tracked)
│ └── feature-auth.jsonl ← your current branch's work (git-tracked)
├── details.jsonl ← long-form entry bodies (git-tracked, loaded on demand)
├── details.local.jsonl ← bookmark transcript snapshots (gitignored, this machine only)
├── global.jsonl ← your personal preferences (gitignored)
└── sessions.jsonl ← everything this machine wrote (gitignored mirror)
- 在功能分支上记录的内容会随分支通过 git 传递。 队友运行
git checkout feature-auth时,JSONL 文件也会随之到位。他们的 MCP 服务启动后会读取这些文件并重新生成规则文件——他们的 AI 会基于你的发现预热,无需你另发消息。 - 你可以查看收到的内容。 通过 git 到达你本机、且你尚未审核的条目会列在
infernoflow resume中(也会出现在 Claude Code 的会话启动上下文中);infernoflow recap会显示这些条目并将其标记为已审核。每台机器都会根据条目内容在本地跟踪审核状态,而不是依据条目声称的作者。使用infernoflow resolve <id>处理不正确的条目。 - 在拉取请求中审核记忆。 GitHub Action(
action/)会在每个 PR 上评论新增、编辑或删除的记忆条目,让它们像代码一样,在进入所有人的 AI 之前经过审核。 - 在自己的设备之间同步个人偏好。 只需指定任意 OS 同步文件夹一次:
从家里到公司,再回家。无需搭建基础设施;由 OS 负责同步。infernoflow sync set ~/Dropbox/infernoflow-memory - 分支 JSONL 上的
merge=union意味着不同设备上的并发提交可以干净合并,无需手动解决冲突。 - 切换分支绝不会受阻。 规则文件只会在 MCP 服务启动时或通过显式运行
infernoflow refresh刷新,而不会在每次新增条目时刷新——这样你记录内容时,工作树会保持干净。
跨 IDE——同一份记忆,适用于每种工具
| 工具 | 读取自 | 通过以下方式写入 |
|---|---|---|
| Claude Code | CLAUDE.md | MCP(amp_write) |
| Cursor | .cursorrules | MCP(amp_write)+ beforeSubmitPrompt 钩子 |
| GitHub Copilot Chat(VS Code) | .github/copilot-instructions.md | VS Code LMT(来自扩展)+ MCP(来自 init)——两者均已接入 |
| GitHub Copilot(JetBrains) | .github/copilot-instructions.md | MCP(amp_write,手动接入)——JetBrains Copilot 支持 MCP(Agent 模式已正式发布);计划让 init 自动接入 |
| Windsurf | .windsurfrules | MCP(amp_write,手动接入)——Windsurf/Cascade 支持 MCP;计划让 init 自动接入 |
MCP 服务由 infernoflow setup / init 接入每种工具的配置文件。无需针对每种工具分别设置。
MCP 工具(供 AI Agent 使用)
接入 MCP 服务后,AI Agent 可直接在聊天中调用以下工具:
| 工具 | 功能 |
|---|---|
amp_write | 记录一条内容(type、msg,以及可选的 file / line / tags / detail)。在多文件夹工作区中,若条目涉及另一个已打开文件夹中的文件,则会写入该文件夹的记忆 |
amp_resume | 🆕 0.46 “我们刚才做到哪了?”——最近的恢复点、未解决的死胡同、近期决策、未提交的更改 |
amp_read | 读取条目,支持可选筛选条件(type、query、file——与该文件相关的条目优先显示) |
amp_search | 对条目进行关键词搜索 |
amp_bookmark | 🆕 添加命名恢复点——未提供 note 时自动捕获当前会话记录 |
amp_handoff | 为下一个 AI 会话生成交接文档 |
amp_health | 会话健康评分(A–F) |
infernoflow_status | 一览记忆和项目健康状况 |
infernoflow_check | 验证能力契约(只读)。仅限完整模式——记忆模式项目中不会列出 |
infernoflow_context | 为任务生成适合 AI 使用的上下文。仅限完整模式 |
infernoflow_git_drift | 查看最近提交和工作树中更改的文件;在完整模式下,还会显示这些文件影响的能力。若 git 不可用,会明确说明,而不是报告“没有更改” |
条目会标注写入者:调用该工具的 MCP 客户端(Claude、Cursor、Copilot、Windsurf……)、Claude Code CLI 调用对应的 claude、Agent 和提示词钩子对应的 memory-keeper / hook,以及你对应的 human。设置 INFERNOFLOW_AGENT 可覆盖自动检测结果。与作者信息一样,这只是写入者自述——有助于分流处理,但并非证明。
amp_* 工具遵循 AMP MCP 规范 §7.3,与供应商无关。任何 AMP-Full 客户端只需知道这六个名称。这六个工具也提供 CLI 别名(infernoflow amp read | write | search | bookmark | handoff | health),因此 CLI 和 MCP 界面中的名称一一对应。
注入规则文件的每一行记忆前都会加上 🔥,这样 AI(以及你)一眼就能看出某行来自 infernoflow,即使它被引用在受管理区块之外也不例外。当 AI 使用其中一条记忆时,协议会要求它简短注明来源——例如 🔥(来自 infernoflow 记忆)注意事项:src/api.js:42:API 返回 202,而不是 200。
它记录下的内容(真实项目中的实际使用)
infernoflow 通过构建一个多租户看板(infernotest_01)并记录发现的问题而开发。以下是实际使用中记录内容的示例:
- gotcha(
vite.config.ts):“Vite 代理设置changeOrigin: true会重写 Host 标头,导致服务端构造的 URL 指向后端端口。请通过window.location.origin在客户端构造面向用户的 URL。” - gotcha(
server/prisma/schema.prisma):“运行 tsx watch 时,Prisma 6 的query_engine.dll.node会被锁定;prisma migrate dev会因重命名而报 EPERM 错误。迁移前请先停止开发服务器。” - gotcha(
server/src/routes/members.ts):“如果调用者已经是工作区成员,接受邀请时绝不能消耗令牌——应在标记 acceptedAt 之前,直接返回现有成员关系。” - pattern(
server/src/routes/columns.ts):“为有序子项分配位置:下一个位置 = max(现有位置)+ 1024。1024 的步长可在两个同级项之间留出约 10 次插入的空间,无需重新编号。” - pattern(
server/src/access.ts):“跨实体授权辅助函数通过 Prisma 嵌套查询使用where: { memberships: { where: { userId } } }——每次断言只需一次数据库往返。若用户不是成员,返回 404 而非 403,避免泄露资源是否存在。” - decision(
server/src/auth.ts):“使用 Session 表中的不透明会话令牌(而非 JWT),以便按会话撤销(对 Session 执行deleteMany)。选择 bcryptjs 而非原生 bcrypt,以避免依赖平台专属二进制文件。”
这些都是你可能到下周二就忘记、然后在周五晚上 11 点重新摸索的事情。它们会永久保存在 .ai-memory/branches/*.jsonl 中。
VS Code 扩展
配套扩展是记忆内容的可视化界面:
- 实时侧边栏 — 根据相关性排序,显示与你当前编辑文件相关的 gotcha、decision 和 attempt。
- 将 Gotcha 显示为问题 — 如果记录中包含
file:line,它们就会以黄色波浪线显示在编辑器中,并作为条目出现在 Problems 面板,紧挨着你的 TypeScript 错误。你和 Copilot 都能在再次犯同样的错误前看到警告。 - 状态栏健康评分 — 始终可见:
🔥 B 65 · ⚠3 · ✓2 · ❌1 · 📋 Switch。点击Switch即可复制交接内容。 - Copilot Chat 集成 — 在聊天框中使用
#amp_write/#amp_read;Copilot 会通过扩展注册的 VS Code Language Model Tools 获取它们(即使未配置 MCP 客户端也能使用)。 - 以键盘操作为先的记录方式 —
Ctrl+Alt+G(gotcha)/Ctrl+Alt+D(decision)/Ctrl+Alt+A(ask)/Ctrl+Alt+S(switch)/Ctrl+Alt+R(recap)。在编辑器中右键,即可为当前行记录 gotcha。
ext install infernoflow.infernoflow
也可在 Marketplace 中获取:infernoflow.infernoflow。打开包含 .ai-memory/(或旧版 inferno/)的任何项目时,扩展都会自动激活。
v0.7.9+ 中,该扩展仅在窗口中运行——CLI 是规则文件唯一且权威的写入方。扩展与 CLI 之间不会发生竞争;扩展会监视 .ai-memory/**/*.jsonl 并进行渲染。
故障排查
- 我升级了 infernoflow,但
amp_write条目看起来还是不对。 IDE 的 MCP 服务会在会话开始时加载到内存中,不会从磁盘重新加载。退出并重新打开 Cursor / Claude Code / VS Code。infernoflow doctor会通过“运行时 MCP 版本为 v…,但 CLI 版本为 v…”警告标记此问题。 - 找不到
infernoflow。 在全局安装路径加入 PATH 之前,请使用npx infernoflow。 - PowerShell 脚本执行被阻止。
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass。 - 框线字符显示异常。 请先强制使用 UTF-8:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8。在旧版 PowerShell 中应会自动回退到 ASCII。如果没有,请提交问题。 infernoflow doctor— 如果发现任何异常,可运行完整诊断。包括 MCP 运行时版本戳检查、AI 提供商检测以及 git hooks 状态。infernoflow doctor --e2e— 如果没有捕获到记忆,或某个工具失败,可在临时沙盒中运行完整流程(不会触碰你的项目和设置):记录 → 提问 → 遗忘、调用每个工具的 MCP 服务、使用示例输入的提示词和会话 hooks、git 漂移以及归因。请将其输出粘贴到问题中。infernoflow check显示 memory mode。 使用普通init后这是预期行为:能力契约是可选的。使用infernoflow init --mode full --adopt启用。在 CI 中使用infernoflow check --strict,如果缺少契约,该命令会失败。
为什么这很重要
代码每天都在变化。面对所有这些修改,系统实际做什么——那些不变量、约束以及上周让你踩坑的事情——代码无法告诉你。infernoflow 会持续更新这些信息,并将其提供给 Agent,让 Agent 不必每次都从头推导。
这就是产品的全部。没有供应商锁定(数据以 JSONL 格式存储在磁盘上)。没有 SaaS。一个 CLI、一个 VS Code 扩展、一个开放协议,以及 IDE 本来就在读取的三个规则文件。
安全与隐私
以本地优先为设计原则:
- ✅ 遥测需主动选择,且默认关闭。 在交互式终端中运行几次后,infernoflow 会询问一次;除非你回答“是”,否则不会发送任何内容。它绝不会发送代码、文件路径或记忆内容。使用
infernoflow telemetry status查看或更改设置。 - 🚫 没有
postinstall脚本。npm install -g infernoflow不会运行任何代码,只会复制文件。 - 🚫 任何默认命令路径都不会发起网络调用(遥测关闭时;默认即为关闭)。
- 🚫 不会自动更新软件包,不会运行后台进程,也不会进行云同步。
- ✅ MCP 按项目注册。 Claude Code 会使用项目自己的
.mcp.json(已加入 gitignore,其中保存此机器的路径);Cursor 和 VS Code 使用.cursor/mcp.json/.vscode/mcp.json。它们都从已安装的软件包运行服务(infernoflow mcp),而非从仓库中的副本运行。 - ⚠️ 写入项目外部: Claude Desktop 没有按项目区分的配置,因此
setup会在那里为每个项目添加一条配置(infernoflow-<repo>)。0.45 之前的版本会在~/.claude.json/ Desktop 配置中保留一条infernoflow配置,使所有项目都指向同一个仓库;此配置会自动移除(备份位于~/.infernoflow/backups/)。个人设置和 API 密钥保存在~/.infernoflow/中。 - ✅ 自动注入的内容会用标记括起来(
/)——不会触碰代码块外的手动编辑内容。 - ✅ 写入任何内容前都会对机密信息进行脱敏——GitHub/npm/OpenAI/Anthropic/AWS/Google/Slack/Stripe 令牌、JWT、私钥、URL 凭据以及
password=格式的值都会变成[REDACTED:<kind>]。记忆文件仍是以纯文本形式提交到仓库的,因此请像审查代码一样审查.ai-memory/的差异。 - ✅ 书签中的对话记录快照只保存在你的机器上(
.ai-memory/details.local.jsonl,已加入 gitignore)。只有你明确写入的上下文(--note、detail)才会与团队共享。 - ✅ API 密钥绝不会保存在项目中——环境变量会按原样使用;粘贴的密钥会存入
~/.infernoflow/ai-credentials.json(仅所有者可访问)。 - ✅ MCP 服务和提示词钩子不会使用 shell 运行命令(从 0.44.20 起),且 MCP 工具参数会根据其架构进行验证。
- ✅ Claude Code 中仅预先批准只读工具(
.claude/settings.json中的permissions.allow)。写入记忆的工具会像其他工具一样请求你的许可,因此 AI 读取的文本不会在你不知情的情况下写入共享记忆。 - ✅ 记忆是数据,不是指令。 注入的记忆会以此方式标注;每条记录都会注明作者和写入该记录的工具;关于已更改文件的记录会标记为 可能已过时;通过 git 收到的记忆会列出,供你审查(
resume/recap)。 - ✅ 挫败感钩子只保留触发它的提示词的前 60 个字符,并会跳过其中的 Agent 交接内容、系统提醒、代码、引文和堆栈跟踪。
可选的 infernoflow ai setup 命令可配置 AI 提供商(Anthropic / OpenAI / Google / Ollama),用于若干增强功能命令——信任模型与直接使用该提供商相同。默认关闭。
完整政策:SECURITY.md。报告漏洞:发送邮件至 [email protected],或使用 GitHub 安全公告。
社区
- 💬 GitHub 讨论区 — 问答、想法、成果展示。提问请先来这里。
- 🐛 问题 — 仅限 Bug。功能请求请发布到讨论区 → Ideas。
- 🔒 安全公告 — 私密披露漏洞。
许可证
MIT — 参见 LICENSE。
链接
- GitHub · 讨论区 · npm · VS Code Marketplace · infernoflow.dev
- AMP 协议规范 — 与供应商无关的记忆格式
- [实战检验:infernoflow 发现的问题
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。