mcpField
I
infernoflow

infernoflow

本地服务
github.com/ronmiz记忆与知识81 天前更新

关于 infernoflow

infernoflow 是面向编码 Agent 的本地优先记忆系统,将项目中的注意事项、决策、尝试和书签保存为 Git 跟踪的文本。它通过 CLI、VS Code 扩展和 MCP 工具跨会话传递上下文,无需 SaaS 服务。

主要功能

  1. 01保存结构化项目记忆
  2. 02恢复会话并创建书签
  3. 03将上下文注入 IDE 规则文件
  4. 04搜索、整理和解决记忆条目
  5. 05通过 Git 跟踪项目文件

适用场景

  1. 01在新会话中沿用项目决策
  2. 02在上下文窗口受限后恢复工作
  3. 03通过 Git 分享并审阅记忆变更

MCP 相关

其 MCP 服务向兼容客户端提供 amp_write、amp_read 和 amp_bookmark 等工具。工具与 CLI 和 IDE 集成共用本地 .ai-memory 文件。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ronmiz-infernoflow": {
"command": "npx",
"args": [
"-y",
"infernoflow"
],
"env": {
"INFERNOFLOW_PROJECT_DIR": "<INFERNOFLOW_PROJECT_DIR>"
}
}
}
}
启动命令npx -y infernoflow
需要配置的环境变量
INFERNOFLOW_PROJECT_DIRAbsolute path of the project whose memory to use. Defaults to the open workspace folder.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npminfernoflow0.46.5

工具

9

收录的工具列表 · 更新于 5 天前

参数类型必填说明
filestring否
typeenum否gotcha | decision | attempt | note | detection | pattern | preference
limitinteger否
querystring否

详细介绍

🔥 infernoflow

每个新的 AI 会话都是从零开始——你发现的陷阱、做出的决定,都无法保留下来。infernoflow 会让它们留存下来。

为 AI 编码会话提供持久记忆。记录那些代码无法告诉 Agent 的陷阱、决定和弯路,并在下一次 Cursor / Claude Code / Copilot 聊天中重新呈现,让同样的错误不再发生两次。

npm version npm downloads zero runtime dependencies VS Code Marketplace License: MIT

昨天,你花了 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 通过四个阶段闭合这一循环:

  1. 捕获 — 你和 Agent 工作期间,值得保存的时刻会自动记录:遇到易踩坑之处、做出决策、尝试失败的修复、发现某种模式,或标记恢复点。AI 会通过 amp_write MCP 工具写入这些内容。注入规则文件的协议说明会准确教会它何时记录。提示词钩子(Claude Code UserPromptSubmit、Cursor beforeSubmitPrompt)会扫描你输入的文本,在 AI 没有记录时,通过确定性方式写入条目,为 AI 提供补充保障;它们会跳过子 Agent 交接内容、系统提醒、围栏代码或缩进代码、引文和堆栈跟踪,并查找问题信号(not working、still broken、same error;!! / retry 仅在较短的提示词中有效)。Cursor 钩子还会将 “bookmark this” 转成书签。
  2. 关联 — 每个捕获的时刻都会成为一条结构化 AMP 条目(gotcha | decision | attempt | note | detection | pattern | bookmark),包含时间戳、file:line、标签和稳定的 AMP ID。
  3. 持久化 — 条目会写入 .ai-memory/branches/<branch>.jsonl(由 Git 跟踪并随分支流转 — 团队成员也会继承这些内容),以及 .ai-memory/global.jsonl(个人偏好,由 Git 忽略,并通过任意操作系统同步文件夹在你的各台设备间同步)。
  4. 恢复 — 新会话开始时,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 同步文件夹一次:
    infernoflow sync set ~/Dropbox/infernoflow-memory
    
    从家里到公司,再回家。无需搭建基础设施;由 OS 负责同步。
  • 分支 JSONL 上的 merge=union 意味着不同设备上的并发提交可以干净合并,无需手动解决冲突。
  • 切换分支绝不会受阻。 规则文件只会在 MCP 服务启动时或通过显式运行 infernoflow refresh 刷新,而不会在每次新增条目时刷新——这样你记录内容时,工作树会保持干净。

跨 IDE——同一份记忆,适用于每种工具

工具读取自通过以下方式写入
Claude CodeCLAUDE.mdMCP(amp_write)
Cursor.cursorrulesMCP(amp_write)+ beforeSubmitPrompt 钩子
GitHub Copilot Chat(VS Code).github/copilot-instructions.mdVS Code LMT(来自扩展)+ MCP(来自 init)——两者均已接入
GitHub Copilot(JetBrains).github/copilot-instructions.mdMCP(amp_write,手动接入)——JetBrains Copilot 支持 MCP(Agent 模式已正式发布);计划让 init 自动接入
Windsurf.windsurfrulesMCP(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。

链接

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。