关于 Prism Mcp
Prism Coder 是本地优先的 MCP 服务,为编码 Agent 提供跨会话持久记忆,并将符合条件的任务路由到设备端模型。它结合记忆搜索、本地推理和 Token 使用量统计,面向使用 Claude、Cursor 等受支持客户端的开发者。
主要功能
- 01持久会话记忆与交接笔记
- 02基于 ACT-R 排序的关联记忆搜索
- 03离线本地模型工具路由
- 04可审计的本地 Token 使用报告
- 05为受支持客户端一键配置
- 06用于记忆和设置的本地仪表板
适用场景
- 01重启后继续编码项目
- 02检索过往会话中的相关笔记
- 03将符合条件的任务路由到本地模型
- 04查看本地处理的 Token 数量
MCP 相关
向 MCP 客户端提供持久记忆和本地推理工具。`prism connect` 可配置受支持的客户端连接服务,本地工作器也可通过 MCP 使用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Prism Coder
为你的 AI Agent 提供持久记忆,还能看到它省下了多少云端令牌。 持久会话、知识图谱、离线工具路由,以及可审计的节省量计量器。完全本地运行,免费。
当前版本:v20.22.5 — 本地 oMLX 图像与记忆计量 从已发现的本地资源清单中选择独立图像模型。兼容的 oMLX 服务支持受控的 PNG 图像请求,并进行本地筛选与生成。 图像准确度取决于模型;Ollama 图像执行仍无法用于已保存的图像选项。请参阅 oMLX 指南。
Prism Coder 是一个 MCP 服务,为 Claude、Cursor 和其他 AI 工具提供跨会话持久保存的长期记忆。它随附开源权重的 prism-coder 模型系列(2B–27B),用于快速离线工具路由,无需云端服务。它还会记录用量:每次由本地处理的调用都会计量,因此 prism savings 会显示从未发送给云端模型的令牌数量——以令牌为单位诚实计量。
无需账户。无需 API 密钥。在你的设备上运行。
付费订阅可通过 Synalux 门户添加云同步、更高等级的模型和团队功能。
Prism 能为你提供什么
- 重启后仍保留的会话记忆 — 通过交接笔记、近期工作、未完成的 TODO,以及可配置的快速、标准或深度上下文恢复项目。
- 本地优先推理 — 本地 Ollama 模型会根据已安装的模型、可用 RAM、上下文适配情况和订阅权益,自动选择 2B/4B/9B/27B 模型。符合条件的纯文本编码任务可优先使用已配置的 oMLX;明确的任务选择会覆盖已保存的后端偏好。
- 可审计的节省量计量器 —
prism savings(或任何主机提供的local_savings工具)会报告本地服务为云端模型节省的 token 数量:概览、本地占比和各模型明细。报告只显示 token 数量,不会虚构金额,并会直接列出计算假设和已知的低估情况——这是可核验的数据,而非营销宣传。 - 路由输出强制检查 — 路由模式只会返回格式正确、且面向主机实际公布的工具的调用。标准及更高等级方案可启用经过身份验证的确定性纠正;
route_guard: "local"只会停用该纠正。cloud_fallback: false会禁止回退到云端推理;verify: false(且没有evidence)会停用依据验证器。三项全部关闭时,任何请求都不会携带你的提示词、草稿或证据;每次调用的权益检查和遥测仍会联系门户,但不会携带这些内容。 - 一套配置,适用于所有 Agent —
prism connect可配置 Claude Code、Claude Desktop、Cursor、Gemini CLI 和 Codex,同时保留无关设置。 - 根据订阅提供的技能 — 主机启动前会同步已获授权的技能,并安全处理升级、降级、冲突保留以及离线时恢复最近的可用版本。
- 无需 Hook 即可启动 — MCP 元数据和原生指令会请求 Prism 的启动上下文,无需生命周期 Hook 或由 Prism 管理的启动器。对于提供 Hook 的主机(Claude Code、Codex),
prism connect还会额外添加两个小型 Hook:用于会话中途的提示词路由,以及上下文压缩后的受保护底线摘要重新注入。 - 由提示词触发的 Factory — 默认对符合条件的有限实现请求启用,前提是请求明确指定文件、允许写入的文件列表和验证命令。主机负责启动并监控推荐的流水线;BCBA 请求仍由主机处理。可通过仪表板开关或
PRISM_DARK_FACTORY_ENABLED=false停用 Factory,之后需重启 MCP。试试三项测试的文件名修复。 - 安全升级与可观测性 — 推理结果会明确说明;保留文本采用故障关闭策略(临床图像会在本地处理,绝不会发送到云端);本地和云端用量会被记录以供审查。
设备端 oMLX 编码
在 Apple Silicon 上,通过 prism dashboard 选择 Settings → Local Coding,即可安装 oMLX 及其模型包,或使用现有服务。自动模式会优先为符合条件的编码任务使用已配置的 oMLX;已保存的偏好或明确的任务选择也可改用 Ollama。此路径需要 Prism 的 oMLX 集成及其独立分类器;标准版 oMLX 不足以满足要求。请参阅 oMLX 设置、已测试模型、结果和故障处理,或从 Ollama 旁的快速入门开始。明确指定 oMLX 时,不会回退到 Ollama 或云端推理;草稿仍需由主机审核并通过测试。
开始使用
记忆搜索会自动应用 ACT-R 排序:相关性加上近期性、
频率和记忆关联。无需点赞或在提示词中添加指令。若要停用,请依次选择 Account & Settings → Preferences → Automatic Memory Ranking
(ACT-R),然后重启 AI 客户端。PRISM_ACTR_ENABLED=false 也会停用该功能。这种排序与神经图中存储的重要性筛选器相互独立。
npm install -g prism-mcp-server
prism connect
prism dashboard
使用 prism connect --dry-run 预览更改,使用 prism connect --all 配置所有检测到的主机,或使用 prism connect --refresh 在升级后同步由 Prism 管理的条目。连接后重启主机。
prism dashboard 可打开当前本地 Mind Palace,无需 Synalux 登录。
Prism 可在本地运行,无需账户、API 密钥或云订阅。需要云端记忆、付费层级技能或团队功能时,可添加 Synalux 订阅。
要查看套餐,请在仪表板中打开 ⚙ Account & Settings → Account。 免费用户会看到 Start 14-day trial;付费用户会看到 Manage subscription。 试用期间,同一面板会显示付费层级和确切的结束日期。开始试用无需信用卡。在结束日期前添加付款详情即可继续;否则订阅会取消,仍可使用本地 Prism Free。 你也可以直接在 synalux.ai/pricing#prism-plans 比较套餐。
使用几次后,可以问问它为你带来了什么价值:
prism savings --period month
💾 Local serving — LAST 30 DAYS
~510K tokens kept off your cloud model
53 call(s) served locally of 58 routed (91%)
你的数据会有所不同——这正是重点:它报告的是你的机器实际提供的内容,而非预测值。完整的报告构成说明及其背后的诚实准则,请参阅
local_savings 部分。
作为插件安装
Prism 也提供插件形式,可为你注册 MCP 服务和启动技能。
两个宿主都可直接从此仓库安装。无需托管任何内容,也无需运行服务:插件目录就是此处提交的 .claude-plugin/marketplace.json 文件,客户端会从 GitHub 克隆该文件。
Claude Code:
claude plugin marketplace add dcostenco/prism-coder
claude plugin install prism-coder@prism
Codex:
codex plugin marketplace add dcostenco/prism-coder
codex plugin add prism-coder@prism
该插件通过 npx -y prism-mcp-server 注册 prism-mcp。如果你已经手动配置了 Prism——prism connect 会写入一个 mcp_servers.prism-mcp 条目——那么同一个键下就会有两个服务。请安装插件或运行 prism connect,不要两者兼用。
prism connect 对宿主子 Agent 的影响
connect 会将有界任务交给本机的 prism_infer,而不是交给宿主启动的 Agent。它在不同宿主中写入的设置各不相同,也不会在所有宿主中禁用子 Agent——Claude Code 会保留子 Agent,并将其指向经济型模型。无论哪种情况,Prism 的本地工作进程都可通过 MCP 使用。
| 宿主 | 写入的设置 | 效果 |
|---|---|---|
| Claude Code | ~/.claude/settings.json 中的 env.CLAUDE_CODE_SUBAGENT_MODEL = "sonnet" | 子 Agent 仍处于启用状态,并固定使用经济型模型。通过策略文本而非配置来限制任务分发 |
| Gemini CLI | ~/.gemini/settings.json 中的 experimental.enableAgents = false | 子 Agent 已关闭。Gemini 只提供一个布尔值,因此没有其他设置可写入 |
| Codex | $CODEX_HOME/config.toml(默认路径为 ~/.codex)中的 features.multi_agent = false,以及有界回退配置:2 个线程、深度为 1、经济型子 Agent 模型、900s 上限 | 子 Agent 已关闭,同时设置了有界配置;若有意重新启用,也会采用合理的配置 |
有两点值得注意:
experimental是 Gemini 的命名空间,不是我们的。 Prism 不会启用任何实验性功能——它会将false写入 Gemini 在该路径定义的标志。写入其他位置不会产生任何效果。- 该命名空间按定义就是临时的。 如果 Gemini 将
enableAgents移出experimental,Prism 仍会写入旧路径,而 Gemini 会读取新路径,宿主子 Agent 就会悄然重新启用。不会报错,设置文件看起来也仍然正确。如果看到宿主子 Agent 正在运行,而enableAgents的值为false,请先检查键是否已更改位置,再判断connect是否未能写入设置。
如果宿主已经按此方式配置,这两项写入都具有幂等性,不会更改现有设置——但每次运行 prism connect 时都会重新应用,而不仅仅是在使用 --refresh 时。如果你有意重新启用宿主子 Agent,下次运行 connect 时它们又会被关闭。若要保持启用,请不要再次运行 connect,或在每次运行后重新启用。
发行历史(可选)
v20.22.5 新内容
- 独立图像模型: 设置中可单独选择从 oMLX/Ollama 已发现的清单中获取的图像模型,不会改变编码器/审核器的分配。
- 受控的本地图像处理: 兼容的 oMLX 服务会在检查模型能力、设置和资源后接受内联 PNG。图像及其派生内容均保留在本地。传输支持并不代表识别准确率达标;所选 Ollama 图像执行功能仍不可用。
- 内存与模型切换: 仅统计一次 macOS 可用内存页和文件支持的内存页,并回收符合条件的空闲 oMLX 模型,不会中断活动任务或固定任务。内存估算不保证一定能满足需求。
- 可靠性: 更新了 oMLX 安装器固定版本,修复了设备密钥竞争问题,处理了依赖项和 CodeQL 问题,加入共享的空闲 Factory 轮询,并修正了关于叙利亚民用用途的政策。完整详情见 CHANGELOG.md。
- **仪表板和 CLI 设置:**在 Settings → Local Coding 中,或通过
prism local安装固定版本的 oMLX 服务/模型包,并查看进度、重试和托管启动状态,也可以连接现有服务。要求请参阅 oMLX 指南。 - **已保存的编码偏好:**选择 Auto、oMLX 或 Ollama,无需重启 Prism。对于符合条件的纯文本编码任务,Auto 优先使用已配置的 oMLX;每项任务明确指定的后端会覆盖此偏好。
- **已发现的模型角色:**为每个后端选择已安装的编码模型和审查模型,也可以为两个角色选择同一模型。明确指定的任务模型优先。显示的模型大小和保守的内存估算有助于比较选项;未知元数据仍标记为未知,估算值也不保证模型能够运行。
- **托管隔离:**模型发现、Hub 缓存和集群启动器均仅供托管安装使用。若 Ollama 中有其他任务正在运行,则会拒绝调用,不会卸载这些任务。
- **设置状态加固:**有界读取使用同一个文件句柄并拒绝符号链接,修复了 CodeQL 报告的文件系统竞态问题。
- **视觉能力边界:**此版本不会通过受控的 oMLX 编码路径启用图像请求。图像识别测试仍是独立工作。
v20.22.3 新增内容
- **依赖项修复:**Hono 4.13.11 修复了其静态路径中间件绕过安全公告;Vite 8.2.4 修复了其开发环境编辑器启动相关安全公告。
- **本地资源探测默认使用数字回环地址。**默认 Ollama 端点现为
http://127.0.0.1:11434,因此停滞的localhostDNS 查询不会阻塞这些探测。保留明确设置的 URL 覆盖项;仅支持 IPv6 的服务需要明确设置 URL。 - **只读 oMLX 检查接受候选发布版本。**有效的
rcN标签不再导致状态无效。检查仍会报告生成已禁用且提供方未通过资格验证;这并非启用或生成检查。 - **稳定的 oMLX 设置:**当前设置链接使用基于上游
v0.7.1的 Prism 集成。原版 oMLX 仍缺少所需的控制路由。
v20.22.2 新增内容
**重要说明:**遵循 session_task_route 建议的 Agent,在任何操作运行之前,就因明确指定 oMLX 而遭到拒绝。
- 复杂度提示不再导致明确指定 oMLX 的请求遭拒。
session_task_route会为每项编码任务推荐一个task_complexity。该提示会选择 Ollama 的起始档位,但在明确指定 oMLX 时,它会降低模型上限,导致通过推荐参数的调用因omlx_model_ceiling而遭拒。现在,只有明确设置的model_ceiling低于最高档位,或计划低于该档位时,才会拒绝。使用 oMLX 时,思考行为仍由服务的设置决定。
v20.22.1 新增内容
**重要说明:**明确指定 oMLX 时,较长的提示词在分类期间可能让设备持续繁忙数分钟,而且 timeout_ms 无法限制这段时间。
- 调用预算现在涵盖分类阶段。
timeout_ms(默认值为 300 s)从安全筛查前开始计时,每次分类器读取都受剩余预算以及自身 90 s 时限的约束。 - **读取失败会终止分类。**超长提示词会按 3,600 个字符的窗口读取;读取失败已足以导致此路径拒绝请求,因此不会再读取剩余窗口。此前,停滞的服务可能会让每个窗口耗时约四分钟。
- **测试:**托管任务标记测试直接固定了大小限制和非阻塞打开行为。
v20.22.0 新增内容
**重要性:**在 Apple Silicon 上,prism_infer 现在可以改用 oMLX 服务而非 Ollama 来起草代码,并且可按调用选择启用,且有专属安全筛查。此外,Layer 1 现在会在所有路径上将另外两类身份验证请求标记为保留。
- **可选的 oMLX 后端:**使用
local_backend: "omlx"和mode: "code",仅支持文本。未请求使用该后端的调用不会有任何变化。需要安装带有 Prism 控制路由的 oMLX 构建版本,该版本发布于 dcostenco/omlx 的prism-v0.7.1rc1分支(安装和设置);使用标准 oMLX 时,所有调用都会被拒绝。 - **专属安全筛查:**同一 oMLX 服务上的 9b 分类器会读取每个请求;规则只会拒绝请求。在我们的测试中,在 327 个已标注的敏感请求中,单独使用 9b 分类器时有 2 个请求在本地运行;而使用 Ollama 上的 4b 分类器时有 19 个。审查这些请求后编写的两条规则将此路径的数量降至 0,因此这个 0 并非样本外测试结果。在 294 个常规请求中,有 2 个请求被升级处理(Ollama 上为 27 个)。在 135 个对抗性探测中,有 3 个请求在本地运行,且都属于同一种形式(文档字段)。
- **速度和成本:**空闲机器上,分类器读取耗时约 0.37 秒(第 95 百分位),负载较高时最多约 0.65 秒。长时间空闲后首次读取耗时 14.5 秒,因为 macOS 将分类器换出了内存,因此 Prism 最多会等待 90 秒,而不是拒绝请求。加载时分类器占用约 9.2 GB 内存(峰值 9.7 GB)。
- **失败时默认拒绝:**分类器故障、回答无法读取或模型缺失时,都会拒绝调用;绝不会回退到关键词检查或 Ollama。长提示词会分窗口完整读取,而非只读摘录。
- **优先释放内存:**调用前会卸载 Ollama 已加载的模型(下次调用 Ollama 时会重新加载),确保两个运行时不会同时占用大量模型内存。
- **Layer 1,适用于所有路径:**决定是否允许已退出登录、匿名或访客用户访问某个路由、页面或端点(无论是授予还是阻止访问)、向他们公开某项内容,或授予他们管理员权限的请求,都会按规则标记为保留;将授权码兑换为令牌的代码也一样。在默认 Ollama 路径的 327 个敏感请求上进行测量:现在有 18 个在本地运行,而此前为 19 个;常规请求的升级处理数量不变(294 个中有 27 个)。
v20.21.27 新增内容
**重要性:**通过管道向 Prism Browser 输入命令的脚本,现在可以在命令块之间暂停。此前,已经到达的命令会一直等待下一次写入;如果 600 秒空闲超时先到,它们就永远不会运行。因此,先检查结果再发送更多命令的脚本会卡住并最终失败。
- **每条通过管道传入的命令都会在到达时运行。**读取器通过
select()等待管道中的新数据时,readline()已经缓冲了目前收到的命令。现在,读取器会直接读取文件描述符,并像文本流一样解码(采用其编码和通用换行符处理方式)。测试时先同时写入两条命令,再等读取器交出第二条后才写入第三条:此前只有写入第三条后第二条才会输出;现在第二条会在第三条写入前输出。 - **保持不变:**空闲超时、
\行续接(包括 CRLF 行尾)、注释行,以及select()无法监视的流;这些流现在会以阻塞方式读取。达到空闲超时时,如果一条命令仍在写入,它会被丢弃,绝不会被截断执行。
v20.21.26 版本更新
重要性: 常规措辞不再能让混合请求绕过 Layer 1,也就是决定请求能否在你的设备上运行的安全筛查。BCBA 在一条消息中询问操作性定义和应给多少 mL 药物,或开发者先请求代码审查、接着请求身份验证代码,现在都会由 Layer 1 的规则进行筛查;除非请求或对话已被标记为保留,否则还会由分类器读取。此前,此类请求可能由本地模型作答,而不经过分类器读取。
- 规则不再放行请求。 此前,一条常规内容就能让 Layer 1 的规则放行整个请求,从而绕过分类器。“为发脾气写一条操作性定义,并告诉我睡前该给多少 mL Benadryl”会由本地模型作答,而不经过分类器读取;“检查仪表板组件的 Hook 顺序,然后编写 JWT 验证中间件”也一样。现在,规则只能将请求标记为保留。无论是单条提示词还是后续对话中的当前提示词,都不再有常规请求捷径;只有请求或对话已被标记为保留时,才会跳过对该提示词的分类器读取。与之前一样,到达分类器的长提示词会以摘录形式读取。
- 被标记的请求会如何处理。 被规则标记为保留或被分类器标记的文本请求,如果你的方案包含云端功能,且调用未通过
cloud_fallback: false,就会交由更强大的云端模型处理。否则,请求会被拒绝,并说明原因。通过分类器筛查的请求仍可在本地运行,因此常规起草工作(操作性定义、数据表、前因策略)和常规代码工作,在本地模型能够作答时,仍会在你的设备上运行。 - 换了名称的隔离。 诸如“把他放进安静室,直到他冷静下来”这类安置措辞(也包括隔离、暂停、软垫室和冷静室),现在会被规则标记为保留。这会捕捉这类安置请求(将他、她、他们或客户端、学生、儿童安置到房间里),即使其中从未使用“隔离”一词。其他措辞,以及对这些房间的其他提及,则交由分类器处理。
- 实测数据: 在为测试此绕过机制而构建的 46 条混合请求中,这些请求不应由本地模型作答;在此版本发布前,有 41 条获准在本地运行,发布后为 9 条:到达本地模型的敏感请求减少了 32 条。在 294 条常规请求中,有 2 条比之前更多地被升级处理(或在没有云端功能时被拒绝)。
- 限制,本次发布中未变。 在判断本地答案是否需要审核时,请牢记以下限制:
- 分类器可能会漏掉请求,而被漏掉的请求仍会在本地运行。上述 9 条就是此类漏检。
- 某些分类器故障会回退到关键词检查,通过检查的文本仍可能在本地运行。
- 含图片的请求会在此设备上处理,即使被标记也一样,而且绝不会发送到云端。
- 成本: 以前使用捷径的请求现在都需要经过分类器读取,除非筛查已将其标记为保留。增加这项检查是为了堵住绕过机制;在我们的测试中,第 95 百分位的读取耗时约为 0.3 s。
v20.21.25 版本更新
语义记忆搜索现在会自动应用 ACT-R 排序,将相关性与近期性、频率和关联性结合起来。**账户与设置 → 偏好设置 → 自动记忆排序(ACT-R)**可让你选择退出;设置会在 AI 客户端重启后生效,显式环境变量值优先。
Synalux Cloud 使用经过身份验证且按所有者范围限定的访问历史和候选链接 API。云端部署需要匹配的 Portal 历史记录迁移。已存储的重要性阈值仍彼此独立,HRR 漂移检测也仍独立运行。
v20.21.24 更新内容
- Synalux 云端通过经过身份验证的 Portal API 保留初始重要性,并处理投票、渐进式洞察和过期评分衰减。
- 投票会拒绝非活动或无法访问的记录;衰减会保留已归档的历史记录。现有评分保持不变。
- 图谱重要性阈值使用已存储的评分。自动检索排序和访问跟踪不会自动将普通记忆变为高分规则。
v20.21.23 更新内容
- Factory 会为适合的任务路由边界明确的实现提示词,并且只执行允许的文件操作,同时提供独立验证和明确的生命周期结果。
- 付费流水线的创建、更新、中止和验证记录均通过经过身份验证的 Portal API 处理。启动时会等待付费存储初始化完成,再报告 Factory 已就绪。
- 默认启用的切换开关会区分已保存的设置和当前生效的 MCP 设置,并提示何时需要重启。
v20.21.22 更新内容
- 云端账户的 Factory 流水线列表通过经过身份验证的 Portal API 获取,包括精确的项目和状态筛选,无需直接数据库凭据。
- 对于无效、不完整或过大的读取请求,界面会显示不可用状态。有效的空列表仍与读取失败明确区分。
- 此版本涵盖流水线列表。云端流水线的创建、控制和执行仍需单独验证。
v20.21.21 更新内容
- Prism Dashboard 现在会清晰报告不可用的分析数据和工厂读取结果,避免显示过时的项目结果,并确保图谱筛选条件和计数保持同步。
- 项目分析数据可通过经过身份验证的 Portal API 读取,其中包含经过验证的 14 天活动数据。
v20.21.20 更新内容
- 修复:
session_save_ledger调用因context_not_loaded被拒绝,或仅回复问候语而未写入任何内容时,会重新启动每小时漂移提醒。现在只有在写入条目时,账本保存才会重新启动提醒。 - 写入账本条目后,回复还会在检查点结束一个工作单元时请求交接。
- 如果账本保存因与最近 5 分钟内保存的内容重复而被跳过,现在会说明没有写入新内容,而不再显示“已保存”。
- 修复:使用 Supabase 存储时,交接保存失败却被报告为已更新。现在会显示错误,方便 Agent 查看并重试。
v20.21.19 更新内容
- Prism Browser 可模拟手机和平板设备。使用
--device iphone-17,或选择另外五款经过测量的 iPhone 和 iPad 之一,即可启用触控 CSS、像素比和 iPhone 安全区域,从而在测试中发现仅在手机上出现的布局问题。--touch、--device-scale-factor和--safe-area可分别设置各项参数。
v20.21.18 更新内容
- 修复:保存因
context_not_loaded被拒绝时,Prism 为 Claude Code、Codex 和 Gemini CLI 安装的指令禁止了唯一可用于恢复的调用。现在拒绝消息会打印该调用session_load_context,并使用相同的项目和 conversation_id;安装的指令也允许执行该调用。首轮启动行为保持不变。
v20.21.17 更新内容
- 修复:设备端屏幕会拒绝一些普通的编码请求。现在,拥有 Synalux 账户(包括免费账户)时,它会通过 Synalux 提供的策略读取每个请求,并使用其 SHA-256 固定策略版本。没有账户或附带图片时,屏幕行为保持不变。
prism_infer路由模式:设置allow_parallel_calls,即可保留调用多个已在allowed_tools中提供的工具的回复。
v20.21.16 更新内容
对话:在你的设备上检查,并且注册账户即可免费使用
- 对话的本地回答会先在你的设备上检查,通过后才会提供。如果检查失败或无法运行,且你的套餐和设置允许,回答会转至云端;否则不会提供。
- 使用 Pro 和 Team 时,通过检查的本地回答还会由 Synalux 进行确认,所用副本会在你的设备上进行假名化处理;映射关系会保留在你的设备上。若附有图片,或已关闭云端,系统会提供经过检查的本地回答。
- 当设备端筛查器的 4b 无法确定某段对话是否适合回答时,9b 会在拒绝该对话或将其发送到云端之前重新读取。
- 所有本地功能均可免费使用,无需账户,且本地模型大小不受限制。免费的 Synalux 账户可启用多轮
prism_infer,并每天获得 20 次云端回答。Pro(每月 $15)和 Team(每席位每月 $20)是 Prism 自有的套餐。 - 可选的 You.com 网页搜索:设置
YDC_API_KEY即可启用youcom_web_search(由 @mouse-value-add 在 #227 中贡献)。 - 已修复:2b 和 4b 不再将 Prism 自身的请求当作工具路由器处理。这些模型内置的系统提示词曾将部分回答变成工具调用,导致设备端筛查器拒绝一些普通请求。
v20.21.15 版更新内容
后续消息:查看本地运行情况,以及分类器不可用时更严格的筛查
local_savings(以及prism savings)现在会显示后续消息的统计行,即承载了你对话内容的调用。其中包括本地模型回答的数量(以及其中由 9b 回答的数量)、设备端筛查器拒绝的数量及其所处阶段、套餐多轮限制拒绝的数量,以及转至云端的数量。- 简短的聊天回答(如“16”“是”)也会计为回答。此前,质量门控会将其视为空内容,付费套餐用户会因此再次向云端提问。
- 如果设备端分类器对后续消息的每次读取都失败,系统将不再仅凭关键词检查来回答该消息。如果套餐允许,消息会转至云端;否则将被拒绝。
v20.21.14 版更新内容
在需要时加载技能,并查看加载原因
- 后台任务通知、来自其他 Agent 的报告以及续接摘要不再在任务中途加载技能,因此 Agent 报告中的词语不会触发无关规则。
- 将 Prism 的启动输出粘贴到提示词中,不再会加载仅仅因为其中某个词相同而匹配的技能。
- 需要主机工具或保留判断的任务会交由主机处理,而不会在本地工作器上失败。
- 每个路由技能标题末尾都会注明路由表版本(例如“Routing table v41.”),方便根据选择技能时所用的确切规则,核对之前加载的技能。
- 拥有自定义触发条件的技能现在即使文件使用 Windows 换行符,或其描述中提到
prompt_triggers:,也会正常加载;此前,这些技能虽已发送,却始终未被加载,而且没有提示。
v20.21.13 版更新内容
“账户与设置”中的付费套餐和试用信息一目了然
- 免费用户可以打开 Prism 套餐对比页面并开始 14 天试用。
- 试用用户可以看到自己的付费套餐、确切结束日期,以及在自动取消前添加付款信息的操作。
- 处于有效或付款恢复状态的用户会看到正确的托管式账单操作;无法验证时会明确标记,而不会显示为已付费。
- 无需账户或订阅即可使用 Prism Free 本地版。
v20.21.12 版更新内容
多个 MCP 主机均可保持可用的仪表板链接
- 现在,每个运行中的 Prism 主机都会独立注册自己的本地仪表板。
prism dashboard和启动消息会验证最新候选项;如果较新的主机停止运行,则会回退到较早但仍运行中的仪表板。- 清理实例时不会移除其他主机的注册信息,打开消息也会保留已关联的账户和套餐说明。
v20.21.11 版更新内容
链接的账户在仪表板刷新后仍保持有效
- 使用过期启动凭据的主机进程在凭据遭拒后,现在会从仪表板保存的新账户中恢复。
- 有效的主机凭据仍具有优先权;退出登录、账户并发变更、网络故障和服务器故障都不会触发不安全的凭据切换。
prism dashboard会打开当前本地仪表板,不会将已链接的 Standard、Advanced 或 Enterprise 账户错误标记为 Free。
v20.21.10 新增内容
已退出登录的 Free 仪表板可继续在本地运行
- 退出登录后,项目视图、项目详情和图谱读取现在会切换到本地 SQLite,无需账户、修改配置或重启。
- 已保存的 Synalux 后端偏好设置会保留,供下次登录时使用;意外缺失的云凭据仍会默认拒绝访问。
- 如果最新活动中的会话比已保存的交接记录更新,则会使用该会话。最近会话按时间从新到旧排列,已保存的交接版本仍可作为还原点使用。
v20.21.9 新增内容
无需 Synalux 账户即可打开 Prism Free
- 运行
prism dashboard即可打开当前本地 Mind Palace。无需登录、账户关联码、API 密钥、付费方案或兑换 Free 方案。 - 现在访问裸本地仪表板地址时,会显示准确的本地打开命令,而不是呈现损坏的账户状态。 -“账户与设置”会显示 Prism Free 已启用。关联 Synalux 仍是可选操作,可用于云同步、账单和付费功能。
- 本地访问仍受到保护,启动输出不会泄露浏览器访问凭据;不安全的状态路径或重定向的身份探测会默认拒绝访问。
v20.21.8 新增内容
仪表板图谱使用经过身份验证的 Portal
- 现在,所选云项目会显示真实的会话节点和已存储链接,而不是缩减为只有关键词的项目气泡。
- 合成边使用经过身份验证的 Synalux Portal 嵌入契约;Prism 仪表板进程无需 Google 或 Gemini API 密钥。
- 重复运行时会复用现有向量和链接,合成扇出受到限制,并且会显示 Portal 故障,而不是呈现空图谱。
- 账户与设置现在会显示当前用户、角色以及 Free、Standard、Advanced 或 Enterprise 方案,并提供登录、升级、账单和退出登录操作。
- 已选择的付费方案在 Portal 登录往返后仍会保留;线上和测试 Stripe 商品目录均可解析所有付费级别,本地化结账也不会将 USD 价格用于其他货币。
v20.18.1 新增内容
任务技能在压缩后仍会保留,并可原位更新
- 通过提示词路由的任务技能现在会在压缩后恢复。 钩子会将最近激活的三个任务技能与受保护底线摘要一同恢复,因此,即使上下文已压缩,像
continue这样的简短后续指令也能保留此前指导工作的工作流和视觉验证规则。 - 托管技能同步完成后,活动任务规则会在下一条提示词中刷新。 钩子会比较磁盘上已物化的生成版本与每个会话的状态,根据当前清单重新授权所有恢复的名称,并注入当前内容。降级会清除过期的付费任务状态;Prism 管理的目录不能使用用户拥有的本地技能例外。
- 用户拥有的本地技能现在会连同其实际内容一起路由。 即使用户已退出登录,本地
SKILL.md仍可使用;如果两个来源使用相同名称,则已获授权的平台内容优先。 - Codex 钩子上下文以用户请求为锚点。 路由规则会指示模型在应用规则的同时执行前一条用户请求,避免将放在末尾的开发者上下文误认为新任务。锚点和所有恢复的内容共用 9,800 个字符的限制。
- 钩子版本 5 会强制执行其命令版本。 仍在运行且信任 v4 命令的主机无法执行重写后的 v5 脚本。升级后,运行
prism connect --refresh --no-models;Codex 必须在/hooks中信任两个新的 v5 钩子条目。如果主机尚未重新加载新的钩子定义,请重启主机。v5 激活后,后续技能内容生成会在下一条提示词中刷新,无需再次重启主机。 - 状态名称会在成为 CLI 参数前经过验证和长度限制;两次调用的刷新路径可在主机 15 秒的钩子超时时限内完成。
v20.18.0 有哪些新内容
受保护的底线随引导信息一起传递,并在压缩后保留
session_bootstrap现在会内联受保护底线的摘要,适用于付费层级的标准和深度模式:每条规则一行惰性文本,内容取自各技能的首段(或其固定的digest:),并附带章节映射;完整底线约 5.6K 个字符。Codex 等上下文较小的宿主每次会话都要重新读取 16 个 SKILL.md 文件(发布日志中的中位数为 8 次 / 36KB,最差为 823 次 / 5.1MB),因为引导信息只是列出了这些文件。摘要所占内容计入上下文预算之外,因此各深度模式下账本/交接信息的字节数与之前完全相同。快速模式仍仅列出名称,作为退出选项。- 第二个钩子会在压缩后重新注入摘要。
prism connect会将 prism-route 脚本注册到匹配compact的SessionStart事件(Claude Code 和 Codex);脚本会运行prism floor-digest,沿用与引导信息相同的层级和深度判定,并且在启动/恢复/清除时不会添加任何内容。没有钩子的宿主(Gemini、Cursor)仍会在每次引导时获取摘要。Codex:尚未通过实时压缩验证。 钩子已注册,脚本也接受文档中列出的载荷格式,但尚未端到端观察到 Codex 压缩;如果载荷格式无法识别,它不会重新注入任何内容,而不是注入错误内容。如果摘要来自技能文件尚未完成同步的生成版本,重新注入的区块会带有与引导信息相同的 STALE 警告。 - 钩子改写后,会如实报告 Codex 信任状态。 批准状态以定义哈希为键,因此改写后的
hooks.json(此版本新增了 SessionStart 条目)会使先前的信任失效:connect 会为两个条目都显示 AWAITING TRUST,而不是为 Codex 会静默跳过的钩子显示绿色 ✓;记录在旧版钩子上的信任也绝不会被误认为是当前版本的信任。 - 不再能解析的宿主配置会保持原样。 如果
~/.claude/settings.json或~/.codex/hooks.json存在但不是有效的 JSON,connect 会保持文件字节不变,不会在那里注册钩子,并会说明原因;它不再用仅含钩子的最小文件替换原文件。npm 安装后提示也会如实说明,不再要求你信任一个从未注册的 Codex 钩子。 - 修复:如果症状路由技能的结束 frontmatter 分隔符就是最后一行,该技能会连同 YAML(包括触发条件)一起被内联,仿佛它们就是规则。
- 修复:摘要行跨入新章节时,会将该章节标题置于摘要行之前——无论章节由什么开启(H2、文档中途的 H1、空标题或 setext 下划线)——因此“委派给”/“不要委派给”规则合并后不会被误读为相反含义。仅当磁盘上的技能文件能够生成摘要时才会使用它;如果文件为空、在 frontmatter 中间被截断,或仅含 frontmatter,则会回退到存储的副本,而不是将 YAML 渲染成规则。
- 修复:在 Windows 上,即使 Codex 存储的路径使用了转义反斜杠,也能识别 Codex 钩子的批准状态。
- 发布门禁现在会拒绝版本号领先于软件包版本的发行说明(CHANGELOG、README、已翻译的 README)——通过读取标题行上的最新版本来判断,因此
v20.17.3 – v20.18.0范围会按 20.18.0 计算,并且能正确处理弯引号或 BOM。
v20.17.3 版本的新内容
- 安装插件不再会启用提示词路由钩子。 软件包的维护流程(npm postinstall、服务启动)现在只会刷新此前通过显式运行
prism connect安装的钩子——在宿主配置中注册 prism MCP 不再视为已获同意。钩子只能通过prism connect首次安装,否则就不会安装。 - Claude Code 插件启动器现在完全确定。 它会运行精确固定的服务版本,并禁用 npm 生命周期脚本;插件现在也会在
plugins/prism/README.md中说明其安全状况。
v20.17.2 版本更新
- 粘贴的日志不再会误触发技能。 基于症状的路由现在会从提示词的路由视图中移除围栏代码块和可路由的技能名称提及(包括复合标识符中的提及,例如容器/Pod 名称),因此引用 Agent 日志或技能列表不会加载文本中仅仅提到的技能。以普通词语命名的技能仍会正常路由。
- 通过症状路由的技能现在会完整送达。 启动预算会在每个可容纳的深度送达完整规则文本;如果规则确实无法完整容纳,显示内容会准确说明缺少多少内容以及如何加载其余部分,而不会再静默截断。
- 单个有问题的技能不再会静默禁用路由。 损坏或恶意的触发表——值类型错误、以对象原型属性命名的模式——现在会按条目跳过,不再导致整个提示词路由(或某些情况下的保险库导出)在会话期间失效。
v20.17.1 版本更新
- 修复 20.17.0 中损坏的 CLI — 命令名称冲突导致每次调用
prismCLI 时,都会在启动时因 commander 错误退出(MCP 服务不受影响)。交接同步命令为prism handoff …;prism sync仍用于跨后端数据同步。如果你安装了 20.17.0,请更新。
v20.17.0 版本更新
跨设备会话交接 — 端到端加密
- 在任意设备上恢复会话。 使用
prism handoff enable(付费功能,默认关闭)后,每次session_save_handoff都会使用你账户中所有设备的密钥加密交接内容,并中继密文;另一台设备通过sync_pull_handoff(或prism handoff pull <project>)拉取内容并在本地解密。 - 中继端仅存储密文 — 使用 X25519 + AES-256-GCM 加密的信封。服务器端从未存在任何可解密交接内容的密钥。该通道与储蓄同步明确分离,后者仅传输计数器。
- TOFU 设备固定会暴露遭到入侵的中继端:加密到本机从未见过的密钥时会发出醒目警告,警告依据客户端派生的接收方 ID,因此替换密钥无法借熟悉的设备名称蒙混过关。
- 使用
prism handoff status|devices查看状态;可在门户中撤销丢失设备的权限。
v20.16.0 版本更新
查看本地服务为你节省的用量 — 可计量、可审计、团队共享
local_savings工具 +prism savingsCLI — 查看本地服务避免发送到云端模型的 Token 数量:累计总量、过去 30/7 天,或任意--days N时间范围。只统计 Token,不虚构金额;同时会显示计算假设和已知的低估情况。- 团队汇总(付费功能) —
prism savings --sync-enable仅上传每日计数器(绝不上传内容;负载字段集固定,服务器也会强制执行);prism savings --team显示整个工作区的总量及每位成员的占比。默认关闭。 - 端到端同步基础 — 经过对抗性审查的密封多接收方信封(在 node:crypto 中使用 X25519 + HKDF-SHA256 + AES-256-GCM,无需新增依赖)和每台设备独立身份;跨设备会话同步将通过仅存储密文的中继端发布。
- 推送时的公开泄露防护 — 在任何内容离开设备前,扫描即将发送的差异和提交消息。
v20.12.1 版本更新
prism connect --refresh现在会更新其管理的所有注册项,而不只是顶层注册项 — 否则,按目录划分的条目可能会一直启动旧版本。prism update检查的是已安装的软件包,而不是恰好正在运行的 CLI,因此不会再在安装版本过旧时报告“已是最新版本”。- 选择启用的计划更新程序现在可以正常启动 — LaunchAgent 现在包含 node 和 npm 所需的 PATH。
v20.12.0 新增内容
- Prism 现在会在过期时提醒你。 会话启动时,如果有更新版本,会显示一行更新通知——基于缓存,每天最多检查一次注册表,离线时静默处理。设置
PRISM_NO_UPDATE_CHECK=1可选择退出。 - 想要的话,还能实现免手动更新。
prism autoupdate enable会设置每日执行一次的prism update --if-idle:只更新全局 npm 包,在任何 Prism 服务运行时延后更新,并且绝不更改主机配置——主机配置仍需通过醒目的prism connect进行处理。
v20.11.1 新增内容
- 保存记忆绝不会被拒绝。 以前,如果路径到项目的启发式判断与声明的项目不一致,保存流程就会拒绝
session_save_ledger/save_handoff调用;而启发式判断所信任的注册表可能包含早先自动注册产生的垃圾数据,导致合法会话未能保存。现在始终以你的声明为准;不一致之处会作为提示性警告返回,自动注册也只接受真实的仓库根目录。 - 截图再次成为可靠证据。
prism browser在 macOS 上截取的画面曾被静默地放大到尺寸上限,导致截图无法呈现实际渲染的内容。现在只会调整真正超出尺寸限制的截图,且上限不再裁切标准的 1920 像素宽视口。
v20.10.0 – v20.11.0 新增内容
- 技能路由现在可在会话中途生效。 随着对话推进,新提示词会在设备端进行匹配——不再只在第一轮匹配;注入内容也会遵守各主机的实际上下文限制(Claude Code 将钩子输出限制为 10k 个字符;Codex 默认会截断),无法内联放入的内容则优先通过指针交付。
prism connect是一个收敛命令。 它会先自行更新,再重新执行,然后协调 MCP 注册、技能和钩子——不再出现“配置是新的,代码却过时”的机器。- 作用域技能也会根据提示词进行路由,并且即使主机会丢弃结构化工具内容,启动输出也能保留下来。
v20.9.0 – v20.9.3 新增内容
-
技能会跟随你的账户。
skill_save会按你选择的作用域保存技能:仅限此机器(local,离线且未登录时也可使用)、你的账户(user——你登录的每台机器都会收到该技能),或某个工作区(team——与成员共享,由管理员管理,还可选择指定特定人员)。 -
精简你用不到的目录。
skill_manage可以释放你从未使用的平台技能,腾出主机技能目录的预算;也可以随时无损恢复。删除作用域技能时,会先在本地归档其最终内容,因此绝不会出现无法恢复却不作提示的情况。 -
交付失败时排队等待,而非直接报错。 并发会话不再因本地配置存储(WAL + busy-timeout)问题而阻碍技能同步——此前的失败只会报告“部分完成”,而无人能看到。
-
未注入的规则依然有效。 当上下文预算不足以内联技能文本时,现在会在未注入名称清单中说明这些技能仍约束工作,并列出在声称完成前加载它们的所有方式。
-
此前从未用上的预算空间。 长期存在的计量错误导致在任何正常上下文级别下,都不会内联任何未受保护的技能——始终内联的受保护技能底线占用了原本留给其他内容的预算。与任务匹配的技能(例如完成证据检查清单)现在终于会被提供。
v20.8.2 版新增内容
- 技能交付现在会如实报告失败,而不是掩盖问题。 一种文件系统权限边缘情况(umask 去掉了所有者执行位)可能导致技能同步什么也没写入,却报告一切正常——在一台真实机器上,这种情况持续了 9 天。损坏的托管目录会就地修复,所有目录的创建都不受 umask 影响,且修复流程会通过
O_NOFOLLOW描述符拒绝符号链接。 - 启动时会提示安装已过期。 Prism 现在会分别跟踪实际写入磁盘的代次和数据库接受的代次;如果两者不一致,启动横幅会发出警告,并将其放在不会被显示截断的位置。同步成功后会自动清除此警告。
v20.7 – v20.8.0 版新增内容
- 首次运行会证明记忆的存在,而非只作描述 —
session_bootstrap会植入一条演示记忆,并展示它如何从磁盘中被回忆起,让你在第 1 个会话中亲身体验保存→回忆的循环。仅运行一次,内容仅限于它自己的prism-demo项目,可通过一次调用移除。 - 修复了仪表板问题 — 一个引号错误(于 2026-05-29 发布)导致内联
脚本在解析时失败,因此此后所有仪表板都永远显示“Loading projects...”。现已修复,并且 ES5 lint 现在会对构建后的内联脚本执行
node --check,确保无法解析的仪表板不再发布。 - 可信发布 — npm 发布通过 GitHub OIDC 进行身份验证。无需担心令牌过期或泄露,每次发布都会附带经过签名的来源证明 — 你可以验证所安装的 tarball 是由 CI 根据此仓库构建的
(
npm audit signatures)。 - 云同步强制使用 TLS — 远程
http://存储 URL 会升级为https://,而不是悄悄明文发送会话内容。 - Codex 插件冲突 + 启用状态检测 — 只有当某个插件确实提供了
prism-mcp时(缓存存在且已启用),prism connect才会跳过自身注册,从而避免服务器重复或缺失。 - 稳定了 Windows CI;重新对齐并去重了注册表/npm 列表。
v20.6.0 版新增内容
交付不是建议
对一起真实事件进行审查后发现,受保护的底线已经超出了所有交付预算:某个 Agent 在宣布将删除演示数据后真的将其删除——尽管“先询问”规则已提交并打包,却没有任何 Agent 实际收到该规则。(“未受保护”悄然变成了“永不交付”。)
ask-first和feature-preservation纳入受保护底线(14 → 16)。 受保护技能始终会以内联形式提供;现在这两项也会送达每个会话。- 同步冲突会明确报告,并指出具体对象。 过去启动时会显示“· 已保留 2 个本地冲突”,安全技能却已过时数月;现在会列出每项冻结的技能,并说明如何恢复更新。
--storage接受auto和synalux— CLI 以前会拒绝自己的文档默认值和生产后端。- 披露: 技能交付会提供信息,但不会进行门控。实时探测显示,即使规则已加载,宿主 Agent 仍会编辑未经验证的源代码。如果你的威胁模型包含 Agent 在任务压力下违背已加载规则行事的情况,请将此软件包与机械式门控(钩子、权限、最小权限角色)配合使用。此前的每个版本也都如此;从本版本起明确说明。
v20.5.3 版新增内容
具有时效性的依据
基于记忆的回答会标注来源,却从不注明日期,因此两年前的笔记和昨天的笔记对模型来说毫无区别。证据中没有任何信息能让模型降低对过时笔记的权重。一项外部评审指出了本地优先记忆的恰当风险:数据留在本地,但错误的依据会永久留存——把所有内容都存储在你的设备上,会消除原本能暴露过时笔记的外部压力。
现在,证据会显示:
[SOURCE 1: ledger:8286581d (recorded 2025-05-29, 431 days ago)]
日期早已存在于存储中,只是在片段层被丢弃了,因此这只是接通数据流程,而非收集新数据。没有时区的 SQLite 时间戳会被标准化为 UTC——如果按本地时间读取,一条十分钟前的记录会被解析成数小时后的时间,导致其时效性被完全忽略。这意味着该功能在最新的记忆上会悄无声息地失效。日期缺失或无法解析时,会显示为空,而不会默认使用当前时间;如果使用默认值,最旧、最可能过时的记忆就会显得最新。
tests/integration/grounding-staleness.test.ts 会运行评审者自己的探测——在一条与新笔记相矛盾的笔记旁边,加入一条故意过时的笔记,并断言模型收到的两条笔记都带有清晰的日期。任何人都可以运行此测试。
**尚未解决,也不声称已解决:**检索不会根据新近程度加权。将过时笔记与新笔记并列显示是简单情况——模型能看到两个日期并进行权衡。困难的情况是单独检索到一条过时笔记,因为排序依据是关键词匹配,而旧存储会返回旧结果;此时,年龄标签是唯一的防护措施,也没有更新的记录可供比较。已记录在 TECH_DEBT.md #4 中。
v20.5.0 – v20.5.2 的新增内容
第一条消息绝不会离开你的设备
由症状触发的技能——例如针对“看不到 X”“没有行”“列表为空”等情况触发的规则——本应在收到故障报告的那个轮次加载。实际上它们从未生效:每个宿主模板都使用 {} 调用 session_bootstrap,因此没有可供匹配的提示词。
修复这一问题后,随之而来的问题是匹配应该在哪里进行。现在,匹配在本地进行。这 28 条关键词规则已经公开,因此本地匹配无需计算任何无法处理的内容;而且 callPortal() 根本没有 prompt 参数——这一保障来自结构本身,而非一项承诺。门户请求只包含项目和角色。
现在,匹配到的规则会以内容的形式呈现,而非仅显示名称。原生宿主在技能文件镜像之外时,无法读取那些仅被告知名称的规则,因此规则正文会内联到启动显示中,并根据实际的每项目预算限制内容长度和大小。
v20.4.0 的新增内容
明确指定的云后端会明确报错
设置 PRISM_STORAGE=synalux 或 =supabase,但凭据不完整时,过去会静默降级到本地 SQLite。切换信息会写入 stderr,而 MCP 主机会丢弃该信息,因此没有任何提示:会话继续使用过时的本地上下文,而云端保存着较新的历史记录,context_source 读取到的也只是 local,而不是任何警告。会话可能会这样运行数周。
直接指定后端明确表达了强烈意图,因此现在会抛出错误,指出缺少哪些变量以及如何选择退出(设置 PRISM_STORAGE=local),而不是悄悄拆分会话历史。auto 保持不变:仍按文档所述依次降级为 synalux > supabase > local,并由测试锁定此行为。
**升级说明:**如果你明确设置了 PRISM_STORAGE=synalux|supabase,但凭据不完整,启动现在会报出明确指出问题的错误,而不会再静默使用本地数据。这个错误正是修复内容——请设置缺失的变量,或主动选择 PRISM_STORAGE=local。默认(auto)配置不受影响。
有意不将此错误视为可恢复的启动故障:该处理路径适用于临时错误(速率限制、5xx、DNS),这类错误可以在显示提示后降级处理。凭据缺失属于配置故障,不得掩盖。
另外:现在默认会为技能块分配预算,而不再仅在请求时分配,因此大型技能负载无法挤占简报和历史记录的空间。
v20.3.2 新增内容
Web Scholar:SSRF 加固
安全版本。Web Scholar 会抓取来自搜索引擎结果的文章 URL,因此攻击者可以通过 SEO 投毒影响目标;而且,抓取的内容会写入记忆语料库并传递给配置的大模型,因此重定向到本地地址不仅会读取内部服务,还会将结果发送出去。
主机检查使用字符串前缀匹配,而不是解析地址,因此有 6 种本地地址写法成功绕过检查:[::1](URL.hostname 会保留方括号)、127.0.0.2(只枚举了 .1,而非整个 127.0.0.0/8)、0.0.0.0、[::ffff:127.0.0.1]、localhost.(尾随点一次性绕过了所有后缀检查)以及 [64:ff9b::7f00:1](NAT64 会在低位嵌入 IPv4)。现在会解析地址来分类主机,并且也会检查 CGNAT、基准测试、多播、保留地址,以及 IPv6 唯一本地和链路本地地址范围。
DNS 重绑定问题也已修复。过去每项检查都读取 URL 字符串,因此攻击者控制的主机名能通过所有检查,最终仍解析到 127.0.0.1。现在会先解析目标、验证所有返回的地址,并将连接固定到这些地址,这样就不会再次解析主机名,也关闭了检查与连接之间的时间窗口。
抓取失败不再悄然消失在空的 catch {} 中;一次运行会受到 PRISM_SCHOLAR_SCRAPE_BUDGET_MS 限制(默认 60s),不会因文章数量增加而一直卡住;响应大小上限为 8 MiB。
只有在实际运行 scholar 时(通过 scholar_research,或在 PRISM_SCHOLAR_ENABLED=true 时通过后台循环),且攻击者同时控制 DNS 或搜索结果,才可能触发此问题。如果你使用 Web Scholar,请升级。
v20.3.1 新增内容
Prism 浏览器会报告真实失败
prism browser 无法让测试失败。eval 1 === 2 返回了 status: ok,退出代码为 0;返回 HTTP 500 的页面报告了 status: ok;控制台错误和未捕获的页面异常则被彻底丢弃。本次发布新增了断言——assert-text、assert-visible、assert-count、assert-url、assert-title、assert-eval、assert-no-page-errors——会返回 status: failed,并以非零状态码退出。open 现在会报告 http_status,并在状态码达到 400 或更高时失败;截图现在会经过验证,而非默认认为有效;eval 返回带类型的原生 JSON,而不是 Python repr。
指纹层从未实际应用:错误的关键字参数导致隐身库在每次启动时都抛出异常——自 4 月以来失败 1,139 次,成功 0 次——而运行器却报告该功能处于启用状态。此问题现已修复;现在,如果某一层无法应用,就会明确报错。无头版本不再通过 navigator.userAgentData 或 Sec-CH-UA 标头暴露自身身份;此外,也已移除一个会破坏每个受测页面中 Object.getOwnPropertyDescriptor 的补丁。这些仍只是尽力而为的测试辅助工具,并不能保证绕过机器人检测。
--local-only 现在确实会隔离网络:WebSocket、EventSource、WebRTC 和 sendBeacon 的出站流量会绕过请求路由,因此此前从未被拦截;Service Worker 也一直未被拦截。Agent 常用的两种模式中,--cleanup 都不起作用。由于这些配置文件中存有有效的身份验证 Cookie,站点隔离、网络钓鱼检测和弹窗拦截不再默认禁用。
测试运行新增:用于隔离身份验证流程的 --ephemeral-profile 和 --storage-state、用于访问 OAuth 弹窗的 pages/switch-page、--fail-fast、--fast、--trace/--video/--har,以及用于配置文件维护的 profiles --prune-older-than。
v20.2.7 版本新增内容
会话保存可在 Agent 重启后继续使用
现在,即使 MCP 服务重启,或由另一个 Prism 进程处理下一个请求,Prism 也会记住某个对话已成功加载其项目上下文。在这种情况下,session_save_ledger 和 session_save_handoff 不再因虚假的 context_not_loaded 错误而失败。
恢复机制仍采用失败时关闭策略:授权仅限于确切的项目和对话,并会在现有上下文窗口过期时失效,且不会存储明文对话标识符。跨项目、伪造、格式错误、已过期或日期设为未来的凭据仍会被拒绝。本次发布还将 PostCSS 更新至已修补的 8.5.23 版本。
v20.3.0 版本新增内容
混合记忆搜索(Portal 层)
Portal 层(由 Synalux 支持的安装)上的 session_search_memory 现在会通过加权倒数排名融合,将语义相似度与精确词项的词法匹配结合起来。在一个真实的 8.5k 条目语料库上进行盲测:融合检索在 top-5 的表现从未差于单独的语义检索;而精确标识符——TPN、函数名、错误字符串——现在也能挽回那些因嵌入相似度而被模糊处理的查询。结果会说明其检索方式——显示 hybrid retrieval 标头及每条命中对应的 sem#/lex# 分支——仅词法检索的结果会标记为 exact-term match,而不会伪装成相似度分数。本地 SQLite 安装仍使用纯向量搜索;混合搜索需要 Portal 的词法索引。
v20.2.6 版本新增内容
跨所有 Agent 更安全地更新配置
prism connect 现在通过单个经过验证的文件快照读取 Claude、Cursor、Gemini 和 Codex 配置,防止其他进程在 Prism 完成安全检查与读取之间替换文件。受支持的符号链接点文件仍可正常使用,而失效或恶意植入的符号链接则会明确报错,不会被跟随或覆盖。本次发布还包含 v20.2.5 引入的已修补依赖和跨平台发布检查。
现在,文档统一将云端回退方案说明为 Gemini 3.6 Flash。套餐上限适用于自动 prism_infer 路由;在本地 Ollama 中直接使用任何已下载模型,在所有套餐中都免费。
v20.2.4 新增内容
可靠的会话记忆:呈现实际工作,而非问候语
在写入账本前会跳过只有问候语的助手回复。现有问候语记录会在读取时过滤,涵盖原生启动、MCP 上下文和 prism load --json;包含决策、待办事项、已更改文件或非会话事件的条目仍会显示。不会以破坏性方式删除历史记录。如果 Synalux 遇到暂时性启动故障,Prism 会显示一份有明确标注、范围受限的本地上次正常快照;永久性授权或验证故障仍会明确报错,后续写入仍会路由到云端。
v20.2.2 新增内容
跨所有 Agent 的统一本地优先工作流
prism connect 现在会为 Claude Code、Claude Desktop、Cursor、Gemini CLI 和 Codex 安装统一的编排约定。范围受限的委派任务会优先交给 session_task_route 和本地 prism_infer 工作进程;常规工作不得创建后台主机 Agent。本地工作进程可接收当前项目在控制面板中配置的快速、标准或深度记忆,并在调用时选择适合 RAM 的 2B/4B/9B/27B 模型。路由器会传递复杂度信息,但不会选择模型;prism_infer 会根据记忆与上下文的适配度、已安装模型、实时 RAM、授权权益以及调用方明确指定的选项做出最终决策。
连接期间会禁用 Codex 和 Gemini 的原生 Agent 扇出。若开发者之后明确重新启用原生 Agent,Codex 会保留双线程、单层级的 Terra/low 回退配置。Claude Code 会将原生 Agent 保留为最后手段,但将其模型固定为 Sonnet。Cursor 和 Claude Desktop 不提供受支持的全局子 Agent 策略文件,因此会通过 Prism 的 MCP 服务说明接收相同的工作流。prism_infer 的安全边界以及主机最终验证的责任保持不变。
订阅层级技能会在首次启动宿主之前到位
prism connect 现在会下载权威的 Synalux 技能清单,并在命令退出前将符合订阅条件的包写入原生的 ~/.agents/skills 目录。因此,Codex 首次启动时就能看到当前技能集,无需再重启一次。Prism 会在 MCP 启动、会话加载时以及每五分钟重新检查同一快照——技能交付绝不依赖宿主生命周期钩子。
在用户首次发言时,Prism 的原生技能、MCP 元数据和托管的宿主指令会请求调用一次 session_bootstrap({})。随后,Prism 会使用仪表板中的开发者名称、自动加载项目设置,以及快速、标准或深度设置。由于层级技能已存在于宿主的原生技能目录中,响应会专注于问候和会话状态。
无钩子的 MCP 可以提供并优先显示这个随时可展示的内容块,但最终的助手消息仍由宿主模型决定,而且宿主模型可能会对其进行概述。Prism 不会声称在第三方聊天界面上能够确定性地逐字显示问候语;这需要宿主生命周期钩子、启动器、扩展或由 Prism 拥有的面板。即使宿主缩短了可见回复,上下文加载本身仍然完整。
免费账户只能获得公开的无钩子 prism-startup 包;MCP 服务仍会提供精简、非专有的安全与证据约定。通过身份验证的付费账户可获得受保护的行为与工程包,以及当前订阅的路由集合。付费版 evidence-first-protocol 让日常编码保持轻量:只需一次关联的复现即可开始编辑;只有在声称已完成、推送或发布之前,才会启动严格验收,并且只检查用作证据的确切工件。升级会安装新获得授权的包;经过验证的降级只会移除 Prism 所有的包,同时保留本地技能和本地修改过的冲突项。
升级较旧的 Claude Code 安装时,prism connect 只会移除旧版引导程序中确切属于 Prism 的启动、技能同步、交接和漂移钩子操作。它还会从 ~/CLAUDE.md 中移除可识别的旧版 Prism 启动部分,保留其他所有指令,并安装一个带有所有权标记的小型原生代码块,以便在首次发言时调用 session_bootstrap({})。用户钩子、自定义指令部分和近似匹配项均保持不变;原生技能和服务端提醒会保留这些 Prism 功能,而不依赖宿主生命周期钩子。在 Claude Code 和 Codex 上,连接操作还会注册两次 prism-route 脚本:每次提示时运行(会话期间技能路由),以及在仅匹配 compact 的 SessionStart 时运行(压缩后受保护底线摘要)。由于宿主没有原生的会话结束回调,关闭时的交接由指令驱动,并非有保证的生命周期事件。
Claude Code 的原生用户注册成功后,同一默认命令或 --refresh 命令会从当前目录向上检查最近的 .mcp.json,直至主目录。它只会移除确切的旧版 prism-mcp 条目 { "command": "npx", "args": ["-y", "prism-mcp-server"] },因为该条目可能会覆盖用户注册。自定义 Prism 条目及其附加字段,以及无关服务,都会保留;格式错误的文件会报错退出,不做任何更改。--dry-run 会报告可识别的迁移内容,但不会更改文件。
v20.2.1 新增内容
订阅感知型记忆存储
prism connect 现在会将显式的 PRISM_STORAGE=auto|local|synalux|supabase
传递给每个托管主机注册,并在修改配置文件前拒绝无效值。在 auto 模式下,门户确认的免费层级使用本地 SQLite,而 Standard、Advanced 和 Enterprise 使用 Synalux 云端记忆。如果无法解析订阅权益,Prism 会安全失败,而不会将历史记录拆分到不同后端。存储方式仍独立于本地优先模型路由。
v20.2.0 新增内容
一条命令连接所有受支持的主机
全局安装 Prism 并运行 prism connect。它会检测 Claude Code、macOS、Windows 和 Linux 上的 Claude
Desktop(测试版)、Cursor、Gemini CLI 和 Codex,然后从已安装的程序包安全注册服务。现有自定义条目不会受到影响;
--dry-run 可预览更改,--refresh 只会更新由 Prism 管理的条目。
v20.1.0 新增内容
现在可以观察每种推理结果
prism_infer 新增了失败契约:传入 escalation: "report" 后,每次调用都会返回结构化的 gate_outcome——success、degraded(即使门控失败,仍提供输出,并明确标记)或 refused(带类型和原因,而不是抛出错误)。降级输出不再会悄无声息地提供。
本地处理大型提示词
云端关闭时,超过 4000 个字符的提示词过去一律会被拒绝。现在,系统会对完整文本执行确定性的保留关键词扫描,并基于开头、中间和结尾的摘录进行分类——干净的超长提示词可在本地处理,并带有独立的 UNCERTAIN_LENGTH 审计标记。临床/保留内容的处理方式不变(关键词下限还进一步提高了)。
不再静默截断
层级上下文限制现在与实际使用的 Modelfiles 一致(27b/9b 是 4096-token 模型;4b/2b 是 32768-token 模型——旧表格正好写反了)。无法容纳提示词的层级会被跳过,并显示 ctx_insufficient 原因;如果没有任何层级能容纳提示词,系统会将完整提示词发送到云端,或者明确报错——绝不会基于被静默截断的提示词生成答案。
了解你实际使用的订阅方案
订阅权益现在带有 source 字段:portal(真实)、unconfigured(按设计使用免费方案)或 fallback_free(门户无法访问——假定使用免费限制)。传入 strict_entitlements: true,即可在运行降级模式时明确失败。
v20.0.8 新增内容
verify_behavior 恢复正常
verify_behavior 工具此前每次调用都会崩溃(-32602 expected object, received string)——处理程序返回的是普通字符串,而不是 MCP CallToolResult 对象。现已修复,并新增契约测试和安全失败回归测试,确保安全门控绝不会再次静默失效。如果你使用的是 20.0.6/20.0.7,请更新。
v20.0.7 起:保留内容安全、Skills 身份验证、委派指标
保留的临床内容现在只能由 Claude 提供,否则就拒绝处理(绝不会交由比拒绝它的模型更小的模型处理);技能交付新增 JWT 身份验证回退机制(现在只使用 PRISM_SYNALUX_API_KEY 的付费层级技能也能送达设备);每次 prism_infer 调用都会记录在持久化的 infer_metrics 账本中。完整详情请参阅 CHANGELOG.md。
v20.0.5 新增内容
本地优先委派——15 个类别,速率可测量
local-inference-first 技能覆盖 15 个硬触发类别(代码生成、正则表达式、格式转换、摘要、文档、事实查询、分类、Shell 命令、配置生成等)。无论问题如何措辞,粘贴的代码块现在都会触发委派。实测委派率:工程会话为 30-35%,转换/内容处理会话为 40-60%。委派率取决于提示词组合,而非技能——现在这些工具会使用 nonDelegatedCount 自动验证自身,避免精选测试集导致的同义反复。
仅思考重试(v20.0.4)
启用思考模式的 Qwen 3.5 模型(9B/27B)可能会将所有 token 都消耗在 <think> 块中,导致返回空内容,进而触发降级到 4B。现在会检测仅包含思考内容的响应,并在关闭思考模式后重试同一档模型,从而保留模型质量,而不是降级到更小的模型。
v20.0.3 新增内容
第一层冷模型韧性
(已在更早的版本中发布;当前约定以 src/utils/layer1.ts 的头部说明为准。)保留类别分类器在冷模型故障时会使用更长的超时重试一次,随后回退到确定性的关键词兜底;关键词筛查通过的文本会在本地处理。超长提示词(>4K 字符)会进行完整文本关键词筛查,并读取开头、中间和结尾的摘录,同时标记为独立的 UNCERTAIN_LENGTH — 提示词填充无法强制进入 ERROR 分支。这消除了冷启动时的拒绝问题,同时不会削弱安全门控。
保留内容的关键词兜底
当 LLM 分类器故障(超时、注入、资源压力)时,确定性的正则规则会捕获保留词汇(束缚、隔离、自伤、自杀、药物过量、危机降级等),包括词形变化和动词形式。在 ERROR 路径上阻止提示词填充和分类器注入攻击。
安全文本单一来源
MCP 服务 instructions 字段中的安全声明现在从 boundaries.ts 导入 — 使用单一事实来源,取代两份手动维护的副本。边界版本升级到 v3,并在代码中明确记录了交付决策。
保留类别安全门控 — 所有档位(v20.0.2)
第一层语义分类器现在面向所有用户运行,而不再仅面向付费档位。云端不可用时,免费档位也会拒绝受限的临床内容 — 默认安全关闭。
账本去重(v20.0.2)
session_save_ledger 会在 5 分钟窗口内对相同条目去重。
证据脚本(v20.0.2)
scripts/generate-evidence.sh 会通过内置断言重新生成全部 5 个证据文件。运行 bash scripts/generate-evidence.sh 可验证完整流程。
v20.0.0 新增内容
许可证:AGPL-3.0 → Apache-2.0
Prism MCP 现已采用 Apache-2.0 许可证。精简客户端架构意味着所有专有价值(技能解析、档位门控、计费、云端推理)都位于服务端 — 开源客户端没有需要保护的竞争壁垒。Apache-2.0 消除了 AGPL 带来的企业采用障碍。
精简客户端架构
技能路由、预算管理和内容解析已移至 Synalux 门户的服务端。MCP 客户端现在只是一个精简的 API 调用方 — 更简单、更小巧,并可移植到任何宿主(Claude Code、Gemini、Cursor、自主脚本)。离线回退会从本地 SQLite 读取上次成功的响应。
Voyage AI 适配器的洁净室实现
为确保 100% 的项目自有版权,我们根据 Voyage API 文档 独立重新实现了 Voyage AI 嵌入适配器。默认模型已更新为 voyage-3.5。详情请参阅 PROVENANCE.md。
服务端漂移检测
会话漂移检测(GATE 5)不再需要 Claude Code 钩子。计时器会在服务端按会话运行,并随每次 MCP 工具响应一并触发。适用于任何宿主。
CLA 要求
外部贡献者现在必须签署个人 CLA。CLA 检查在 main 分支上会阻止合并。
## 快速开始
免费套餐无需账户、API 密钥或云服务。安装 Prism,然后将其注册到机器上已安装的所有受支持 MCP 主机:
npm install --global prism-mcp-server
prism connect
prism connect 会检测 Claude Code、Claude Desktop(macOS/Windows/Linux)、Cursor、
Gemini CLI 和 Codex。
使用 prism connect --all 连接全部 5 个主机,使用 --host <name> 连接一个主机,或使用
--dry-run 预览将要更改的文件。默认情况下,现有的 prism 和
prism-mcp 条目绝不会被覆盖。--refresh 只会更新之前由 Prism 创建的
条目;自定义条目保持不变。
对于 Claude Code,默认命令和 --refresh 还会在原生用户级注册成功后,从生效的
祖先 .mcp.json 中移除完全匹配的旧版项目级 npx -y prism-mcp-server 条目。不会更改任何
自定义条目或近似匹配的项目条目。
执行非试运行注册前,请关闭目标 MCP 主机,以免它们同时修改配置。
同一连接还会安装本地优先的编排约定:
| 主机 | 托管限制 |
|---|---|
| Codex | features.multi_agent=false;保留一个 2 线程、深度为 1 的 Terra/low 回退配置,供显式重新启用时使用 |
| Gemini CLI | experimental.enableAgents=false |
| Claude Code | CLAUDE_CODE_SUBAGENT_MODEL=sonnet;托管指令规定仅在不得已时才使用此回退 |
| Cursor | 通过 MCP 初始化指令提供规范策略 |
| Claude Desktop | 通过 MCP 初始化指令提供规范策略 |
所有 5 个主机的托管 Prism MCP 条目中都会设置
PRISM_AGENT_POLICY=local-first。常规任务使用 RAM 感知型本地工作器;原生/后台扇出不是默认工作流。session_task_route 会提供复杂度提示;
prism_infer 仍是模型和思考模式选择的唯一负责方,并可在可行性门槛允许时选择 27B。
在运行 prism connect 之前设置 PRISM_STORAGE,即可在生成的主机条目中保留明确的存储选项。这不会更改本地模型路由;Synalux 云存储则需要有效的云记忆权益。
Codex 注册会保留 ~/.codex/config.toml 中的无关内容,只追加带标记的 Prism MCP 配置块,并且仅更新文档中说明的本地优先功能/Agent 键。设置 CODEX_HOME 时会遵循其值,且该目录必须已存在,这与 Codex 自身的约定一致。连接后,重启 Codex CLI、
IDE 扩展或 ChatGPT 桌面应用。
重启已连接的主机,你的 Agent 现在便拥有由本地 SQLite 数据库(~/.prism-mcp/data.db)支持的记忆。手动配置和特定主机的路径请参阅 IDE 设置。
可选 — 本地模型集群,用于离线工具路由。根据你的硬件选择并拉取相应模型:
ollama pull dcostenco/prism-coder:2b # 3.3 GB · on-device / lowest RAM · sees images (100% on our routing suite)
ollama pull dcostenco/prism-coder:4b # 3.5 GB · verifier · sees images (100%)
ollama pull dcostenco/prism-coder:9b # 6.7 GB · default router · sees images (95.7%, reasons before answering)
ollama pull dcostenco/prism-coder:27b # 16.8 GB · complex code / quality · text only (100%)
Prism 会自动检测带命名空间(dcostenco/prism-coder:9b)和不带命名空间(prism-coder:9b)的 Ollama 标签。
2b/4b/9b 档位带有视觉塔,可通过
prism_infer({ images: [...] }) 接收屏幕截图——可传入绝对路径或 base64。如果没有任何档位(或第 1 层安全分类器)能够实际查看图像,就会拒绝图像请求,而不是盲目作答;因此,系统绝不会向纯文本模型提供它从未收到的屏幕截图提示词。27b 仅支持文本。
用于本地编码的可选 oMLX
在 prism dashboard 中使用 Settings → Local Coding,选择是否安装,并查看进度、重试、检查连接以及选择后端和模型。也可以运行 prism local install,然后运行 prism local start。安装 npm 时绝不会自动下载模型。受管理的套件需要 Apple Silicon、macOS 15+、Python 3.11–3.13、32 GiB 内存和 40 GiB 可用磁盘空间;它会让现有服务和任务继续运行。对于符合条件的编码任务,Auto 会优先使用已配置的 oMLX;明确指定的较小模型上限仍由 Ollama 处理,任务级覆盖优先级最高。
如需手动设置,请安装 oMLX 的 Prism integration、所需的 9B classifier,以及 Qwen3.8-27B oQ4e 等起草模型。设置环回 API 密钥、启用分块预填充、禁用 MTP/DFlash/推测式预填充,并配置模型上下文和思考预算。然后使用 local_backend: "omlx"、mode: "code" 和确切的已公布 local_model 验证一次调用。Ollama 无需运行;如果设备资源冲突,Prism 会拒绝运行,不会卸载其他任务的模型。
请参阅逐步 oMLX 指南,了解固定版本的安装/下载命令、服务启动、首次 MCP 调用和故障排除。其已测试模型表将原生 oMLX 检查点与实验性的 Strata GGUF 运行时分开列出。编码与审查结果展示了实测的权衡与限制;这些结果并不能证明存在全面胜出的方案。原版 oMLX 无法服务于此 Prism 路径,显式指定 oMLX 时也没有推理回退方案。本地审查仅供参考。
功能介绍
你的 AI Agent 会忘记不同会话之间的一切。Prism 解决了这个问题,并在此基础上增加验证、偏差检测和多 Agent 协作。
Mind Palace — 可跨会话保留的持久记忆
每次对话都会写入持久化存储。下一次会话会自动加载恰当的上下文,无需重新解释。
仪表板会展示当前项目状态、待处理 TODO、意图健康状况和神经知识图谱,这些内容都会根据 Agent 会话自动生成。
它在环回地址上运行,默认由本地令牌保护——运行
prism dashboard 即可打开,无需登录。此本地浏览器步骤并非 Free 计划兑换流程。
来自不受信任的 Host/Origin 的请求会被拒绝,从而修复 GHSA-9cvx-7x8q-3g6m 中处理的 DNS 重绑定漏洞。请参阅 docs/IDE_SETUP.md,了解如何固定令牌、禁用令牌或配置 Basic Auth/JWKS。
导出 — 在 Agent 外部查看记录
session_export_memory 会将记忆写出为纯文件,供你阅读、比较差异和提交。生成内容时不会经过任何模型。
markdown human-readable — drop it in a PR to show what the agent actually did
json machine-readable — import into another Prism instance
vault zipped Markdown with YAML frontmatter and [[wikilinks]] (Obsidian, Logseq)
当你想回答“Agent 是验证过这件事,还是只是在声称验证过?”时,就可以使用这个功能——导出内容是一份事后审阅的记录,你可以在差异比较或拉取请求中查看,而不是必须主动打开的实时视图。同一份数据也可通过仪表板上的 Export ZIP 和 Export Vault 按钮获取。
知识图谱 — 语义搜索 + 关键词搜索 + 图搜索
询问“我上个月对身份验证流程做了什么决定?”,即可获得附有引文的回答,并结合向量相似度、全文搜索和图遍历。
会话历史 — 不可篡改的审计轨迹
每次会话都会记录变更的文件、作出的决定和 TODO。你可以搜索、筛选并重放任何过往会话。
每次 prism_infer 调用都会记录处理该调用的模型(本地 Ollama 还是云端)以及消耗的 token 数量。保存会话时,Prism 会显示摘要:
📊 Inference Metrics (this session):
Total calls: 12 — Local: 10 (83%) | Cloud: 2 (17%)
Prompt tokens: 7,840 evaluated / 8,420 submitted est.
Completion tokens: 3,150
Cloud tokens saved (est.): 11,570 — token volume handled locally instead of cloud
Avg latency: 1,240ms
By model:
prism-coder:27b: 6 calls, 7,200 tokens, avg 1,800ms
prism-coder:9b: 4 calls, 2,870 tokens, avg 620ms
synalux-27b: 2 calls, 1,500 tokens, avg 1,100ms
节省的云端 token 是准确的路由指标 — 只有当本地 Ollama 处理了原本会交由 Synalux 云端推理处理的调用时,该指标才会增加。每进行 5 次 prism_infer 调用后,都会内联显示简洁版:📊 local 10 (83%) · cloud 2 (17%) · ~11,570 tok · avg 1,240ms · 11,570 cloud tok saved。
本地调用使用 Ollama 的实际 token 数(Ollama 返回的 prompt_eval_count / eval_count);云端调用使用字符数除以 4 的估算值。指标在本地跟踪 — 不依赖门户网站、不需要环境变量,离线也能使用。每次调用的数据也会尽力转发到 Synalux 门户网站,作为分析数据(与显示功能相互独立)。
会话偏移检测
长时间运行的 Agent 会话可能会偏离最初的目标。session_detect_drift 会将当前工作与声明的目标进行比较,并返回 on_track / minor_drift / major_drift,以便 Agent 自行纠正。
行为验证 — 在错误编辑发生前及时发现
AI Agent 会照搬清单中的模式,却不了解它们对现实的影响。verify_behavior 工具会在编辑前通过一个场景考验 Agent,要求它作答 — 促使它思考最终用户会有怎样的体验。
Agent: "I'll revert this kitchen display change"
Prism: "⚠️ Scenario: A cook sees a 3-item ticket. One item is voided.
What should the cook see after the void?"
Agent: "The ticket stays visible with the remaining 2 items."
Prism: "Correct — your revert would hide the ticket entirely."
内置 17 个领域(计费、身份验证、订购、临床、人力资源等)。Enterprise 版支持为每个工作区自定义领域。无需钩子 — 可在任何 MCP 客户端中使用。
时间回溯
回滚到任意先前的会话状态。比较不同版本之间的差异。只需单击一次,即可恢复到已知正常的状态。
认知路由
三种记忆类型会自动分类:情景记忆(发生了什么 — 会话日志、决策)、语义记忆(什么是真实的 — 事实、架构)和程序性记忆(如何完成某项任务 — 工作流、模式)。搜索时,路由器会选择合适的存储,而不是倾倒所有内容。
多 Agent 集体智能
协调多个在同一项目上工作的 AI Agent。每个 Agent 都有自己的会话,但它们通过知识图谱共享记忆。集体智能雷达会实时显示 Agent 状态、任务和活动。
神经搜索
搜索所有记忆,并查看高亮结果、编辑知识图谱以及记忆密度指标。
本地优先与隐私
免费套餐完全在你的设备上运行。付费套餐通过 Synalux 门户添加云同步,从而实现跨设备记忆和团队共享。
| 本地套餐(免费) | 云端套餐(付费) | |
|---|---|---|
| 记忆存储 | 本地 SQLite | Synalux 门户(基于 Supabase) |
| 推理 | 本地 Ollama 模型 | 本地模型 + Gemini 3.6 Flash 备用方案 |
| 是否需要 API 密钥 | 无 | Synalux 订阅密钥 |
| 网页搜索 / 抓取 | 不包含 | 通过 Synalux 门户(服务端使用提供商密钥) |
| 离开你设备的数据 | 无 | 使用云端功能时,记忆文本、文件路径、搜索查询以及推理提示词 / 草稿会通过 TLS 发送到门户。云端记忆写入时会删除个人身份标识;推理和路由请求均为临时请求。 |
| 是否可离线使用 | ✅ | 本地功能可用;同步 / 云端功能不可用 |
敏感数据处理。 云端记忆写入会经过自动脱敏(在存储前移除 SSN、出生日期、医疗记录编号、电话号码、电子邮件和临床标识符)。云端推理和路由纠正会通过 TLS 发送请求进行处理,不会将其存储为 Prism 记忆。本地套餐(无 Synalux 密钥)可实现物理隔离;route_guard: "local" 仅跳过路由纠正,cloud_fallback 和 verify 控制另外两个通道。
模型
本节介绍默认的 Ollama 模型组。有关明确使用 oMLX 进行编码的信息,请参阅经过测试的 oMLX 模型及其权衡。
prism-coder 模型组使用 Qwen3.5 进行 MCP 工具路由和通用推理。9B 和 27B 经过微调;2B 和 4B 使用不同量化级别的原版 Qwen3.5-4B。27B 在我们的内部 115 个案例工具路由测试套件中得分 100%,在内部 15 题编码评测中也得分 100%,推理成本为 $0。这些是我们自行运行的评测,并非 BFCL 排行榜提交结果。
prism_infer 支持三种模式:route(工具路由,速度快)、chat(对话)和 code(代码生成)。推理能力由层级而非模式决定:具有 MODEL_TIERS.prefersThinking 的层级也具有 minLocalTokens 下限,以防推理内容挤占答案空间,并且只有这些层级会使用 <think> 块(在返回响应前会将其剥离)。9B 会使用;4B 和 2B 不会,因为在这两个层级上,推理会占用答案所需的同一 num_predict 预算,导致返回空响应。显式设置 think: true 仍会覆盖此行为,适用于已为此设置足够 max_tokens 的调用方。如果本地模型未通过质量门槛(响应为空、仅含 think 内容或被截断),付费套餐会自动通过 Synalux 门户切换到 Gemini 3.6 Flash。
每个 route 模式的结果都会在本地解析,并在到达宿主之前根据 allowed_tools 进行检查。格式错误或未公布的调用会变为 NO_TOOL。使用 route_guard: "auto"(默认值)时,Standard 及更高级别套餐还会将格式正确的草稿(针对 Prism 的七种经过训练的工具)或可能需要纠正的未公布草稿发送到 Synalux,进行经过身份验证的确定性纠正。已公布的自定义宿主工具仍在本地处理。route_guard: "local" 仅停用此纠正:云端推理备用方案由 cloud_fallback 控制,依据 grounding 的验证器则是独立通道,有自己的开关(提供 evidence 时默认开启 verify)。若这三项全部关闭,则不会有任何请求携带你的提示词、草稿或证据;权益检查和遥测仍会联系门户,但不会携带这些内容。
| 模型 | Ollama 标签 | 大小 | 视觉 | 路由准确率¹ | 角色 | 自动路由层级 |
|---|---|---|---|---|---|---|
| Qwen3.5-4B Q4_K_S | prism-coder:2b | 3.3 GB | ✅ | 100% | 设备端 / 最低内存占用(可用 4.5 GiB) | 免费 |
| Qwen3.5-4B Q4_K_M | prism-coder:4b | 3.5 GB | ✅ | 100% | 验证器(可用 5.2 GiB) | 免费 |
| Qwen3.5-9B(LoRA) | prism-coder:9b | 6.7 GB | ✅ | 95.7%² | 默认路由器 / 主力模型(可用 9 GiB) | 免费 |
| Qwen3.5-27B(LoRA) | prism-coder:27b | 16.8 GB | — | 100% | 复杂代码 / 高质量输出(可用 21 GiB) | 免费 |
¹ 在一个范围较窄、包含 115 个案例的 MCP 工具选择测试集上自行测试,使用 temperature: 0,通过 prism_infer 实际使用的调用路径(/api/chat,使用每个模型自己的模板)测得。这只能说明这些模型在我们自己的评估中能选对工具,不代表它们的通用能力,也不是独立基准测试的结果。此表的早期版本曾引用 99.1–100% 的结果,这些结果来自一个使用 raw: true 手动编写 ChatML 提示词、绕过模板的测试工具;这些数字描述的是任何调用方都不会使用的路径。完整的方法说明和注意事项见下文。
² 9B 是唯一会在回答前进行推理的层级,测量时启用了推理:启用思考时为 95.7%,不启用时为 83.5%。prism_infer 按层级设置此项(MODEL_TIERS.prefersThinking),因此调用方默认使用 95.7% 的路径。推理约消耗 600 个 token,因此 9B 也设有 2,048-token 的本地最低预算。
视觉。 2B/4B/9B 标签包含单独的 projector 层(0.68–0.92 GB),可以读取图像;27B 仅支持文本。prism_infer 会检测该层,如果模型不支持视觉便跳过该层,而不会向其发送图像——即使直接询问,纯文本模型仍会自信地回答它从未收到过的像素内容。已通过真实模型在 tests/integration/visionScreenshot.test.ts 中进行测试。
这些层级控制的是 prism_infer 的自动选择,而不是 Ollama 本身。任何用户在任何套餐下,都可以通过 Ollama 直接运行任何已下载的设备端模型。
权重:huggingface.co/dcostenco(公开 GGUF)。延迟取决于模型大小和硬件——请参阅基准测试,在自己的设备上测量,而不是轻信印出的数字。
级联
query → prism-coder:9b (local router, default)
→ prism-coder:4b (grounding verifier)
→ prism-coder:2b (iPhone / mobile, auto-selected by RAM)
→ prism-coder:27b (complex tasks, on demand)
→ Gemini 3.6 Flash cloud fallback (paid tiers, for max quality)
多层验证
路由输出和基于证据的回答使用不同的关卡。每个层级都会使用本地路由解析器和已公布工具注册表;Standard 及更高套餐还可添加私有的确定性路由修正。证据验证需选择启用(或在提供证据时自动启用),且始终独立于路由选择。
| 层 | 内容 | 模型 | 耗时 |
|---|---|---|---|
| L1 | 危机/医疗安全规则和本地分类 | 特定后端的分类器(oMLX 上需要 9B) | 不定 |
| L3-Registry | 信封验证 + 已公布工具强制校验(所有层级) | 无 | 0 ms |
| L3-Route | 已认证的确定性路由修正(Standard+) | 无 | 网络延迟 |
| L3-Tier0 | 整数依据校验(集合成员关系) | 无(确定性) | 0 ms |
| L3-Tier2 | NLI 验证器(声明 → ENTAILED/NEUTRAL/CONTRADICTED) | prism-coder:2b | ~200 ms |
| L4 | 幻觉判定器(临床场景可选择退出) | prism-coder:4b | ~500 ms |
验证路径采用失败即拒绝策略:运行依据验证器时,超时、歧义或缺少证据都会导致拒绝,而非直接放行。如果付费路由修正不可用,本地注册表仍会拦截格式错误和未公布的调用,并将获准保留的路由报告为降级状态。
基准测试
已发布的基准测试数据是内部确定性评估的简明摘要。评估器、穷举测试用例、精确的分层路由矩阵和原始模型输出均保留在私有工程代码库中,不包含在 npm 包或公共源代码树中。
路由评估。 在一组范围有限的工具选择测试中,该模型集群在三个随机种子下都取得了近乎饱和的结果。这衡量的是离线 MCP 路由的可靠性,而非模型的通用能力。
| 模型 | 路由准确率 | 备注 |
|---|---|---|
| prism-coder:2b (Q4_K_S) | 100% | 视觉功能发布时,2B 模型重新进行了量化;旧版 99.1% 的结果使用的是 Q3_K_M |
| prism-coder:4b | 100% | |
| prism-coder:9b | 启用推理时为 95.7% | 不启用时为 83.5%——这是唯一一个结果有差异的层级 |
| prism-coder:27b | 100% | |
| Claude(前沿模型,同一评估) | 约 98% | 在此狭窄任务以外的各方面都更强 |
通过 /api/chat 使用每个模型自己的模板进行测量——这也是 prism_infer 使用的路径。temperature: 0,因此三个随机种子只会重新排列用例顺序,不会导致结果不同;早期版本曾将这种一致性称为确认依据,但它从来都不是。
记忆提升(LoCoMo-Plus,自行发布)。 另一项长上下文对话基准测试(dcostenco/Locomo-Plus)衡量结构化记忆对基础模型保留多日上下文的帮助程度。结果显示,与 Prism 记忆配合使用时,模型表现大幅提升,相比之下,直接运行原始模型的效果较弱。请注意,这项基准测试由本项目编写、运行并使用大模型评判——应将其视为可复现的演示,而非独立第三方结果;你也可以使用该代码库中的命令自行运行。
代码生成评估。 在 2026 年 7 月进行的一项小型确定性执行检查中,本地 9B 模型通过了 3 项任务中的 2 项;本地 27B 模型和 Gemini 3.6 Flash 均通过了 3 项任务。这是一项自行发布的回归指标,并非独立排行榜,也不代表模型在广泛能力上等效。
有关 2026 年 10 月单独进行的编码和建议审查对比,请参阅 oMLX 和 Strata 的结果与局限。
云端升级(cloud_fallback)
对于默认的 Ollama 后端,Prism 会先尝试符合条件的本地模型。 如果质量门检测到响应为空、被截断、只有思考内容或陷入循环,或者安全筛查 发现请求存在不确定性或属于保留事项,付费计划会通过 Gemini 3.6 Flash 升级处理该请求。免费层级的路由始终在本地进行,并报告结果,不会调用云端。
此标志由计划决定。留空即可由你的计划决定:付费计划会升级,免费计划则不会。传入 false 可禁止该次调用使用云端推理回退;临床委派规则在起草内容时就会这样做。传入 true 表示请求使用云端回退,但仍需拥有支持云端功能的计划。包含图像的请求绝不会升级;屏幕截图始终留在此设备上。
显式设置 local_backend: "omlx" 时,无论计划或 cloud_fallback 设置如何,都不会回退到云端推理或 Ollama。请参阅 oMLX 行为。
为什么选择 Prism Coder
你的本地数据会留在设备上。 记忆、本地模型和答案检查都在你的机器上运行,无需账户。只有在启用云端功能时,数据才会离开设备,而且只会发送该功能所需的数据;请参阅 本地优先与隐私。
- 免费使用,无需账户,且本地模型大小不受限制。
- 记忆和模型集成于一个 MCP 服务中: 持久化记忆、知识图谱,以及自动路由到本地 Ollama 模型;只有在计划和设置允许时才使用云端答案。
- 经过检查的答案: 多轮本地答案会先在你的设备上检查,再提供给你。
对比
价格来自各供应商的定价页面,核查日期为 2026-09-26。套餐经常变动;请通过链接查看当前条款。下表仅比较已公布的套餐;这并不表示某个产品不具备未列出的功能。
| 产品 | 类型 | 免费 | 个人版 | 团队版,按席位计 |
|---|---|---|---|---|
| Prism Coder | 本地记忆与模型路由(MCP),可选云端功能 | 全部在本地运行,无需账户 | Pro $15/mo | $20,至少 2 个席位 |
| GitHub Copilot | 编码助手 | 有限 | Pro $10、Pro+ $39、Max $100 | Business $19、Enterprise $39 |
| Cursor | AI 代码编辑器 | Hobby,有限 | Pro $20 | Teams $40 |
| Windsurf | AI 代码编辑器 | 免费套餐 | Pro $20、Max $200 | Teams $40 |
| Claude | 助手;Pro 起提供 Claude Code | 免费(不含 Claude Code) | Pro $20、Max 起价 $100 | Team $25(按年计费为 $20) |
| Amazon Q Developer | 编码助手 | 每月 50 次 Agentic 请求 | Pro 每位用户 $19 | -- |
| Ollama | 本地模型运行时、云端模型 | 本地模型、入门云端额度 | Pro $20($60 云端额度)、Max $100 | Team $500/mo,用户数不限 |
| Mem0 | 记忆 API | 每月 10,000 次添加、1,000 次检索 | Starter $19;图谱记忆从 Pro $249 起 | -- |
| Supermemory | 记忆 API | 每月 $5 额度 | Pro $19(3 个席位)、Max $100 | -- |
| Zep | 记忆(知识图谱) | 每月 10,000 个额度 | Flex $125 | -- |
| Pieces | 设备端开发者记忆 | 无(7 天试用) | Pro $18.99 | Enterprise $22.99 |
| MemPalace | 开源本地记忆(MIT) | 免费 | -- | -- |
套餐
在你的设备上运行的所有功能均免费使用,无需账户,且本地模型没有使用上限。免费 Synalux 账户可启用需要 Synalux 的功能;Pro 和 Team 则提供云端功能和更高的限额。
| 免费(无需账户) | 免费账户 | Pro $15/mo | Team $20/席位/月 | |
|---|---|---|---|---|
通过 Ollama 使用本地模型(自动 prism_infer 路由) | 最高 27b | 最高 27b | 最高 27b | 最高 27b |
| 本地记忆、知识图谱、仪表板、MCP 工具 | ✅ | ✅ | ✅ | ✅ |
多轮 prism_infer,含设备端答案检查 | -- | 12 轮 / 32k 字符 | 12 轮 / 32k 字符 | 20 轮 / 64k 字符 |
| 云端回答(Gemini 3.6 Flash;免费账户的对话使用 3.5 Flash-Lite) | -- | 20 次/天 | 1,000 次/月(试用期内 500 次;最多 200 次/天) | 每席位 1,500 次/月(最多 200 次/天) |
| 云端确认本地答案(使用去标识化副本) | -- | -- | ✅ | ✅ |
| Grounding 验证器(核查 AI 输出;计为一次云端回答) | -- | -- | ✅ | ✅ |
| 云端搜索 | -- | -- | 1,000 次/月(最多 150 次/天) | 每席位 1,500 次/月(最多 150 次/天) |
| 记忆同步(云端) | -- | -- | ✅ | ✅ |
| 完整技能库、超级技能、Agent 路由、账户和团队技能 | -- | -- | ✅ | ✅ |
| 席位数 | 1 | 1 | 1 | 2 个或更多 |
Pro 套餐包含 14 天试用期。开始试用无需银行卡;在试用期结束前添加付款信息即可继续,否则订阅会自动取消,Prism Free 仍可使用。请在 prism dashboard 的 ⚙ 账户与设置 → 账户 下查看确切截止时间。一次云端确认计为当天的一次云端回答。若要开通 Team 套餐,请联系销售。
Agent 如何使用它
Prism 提供 40 多种 MCP 工具。核心记忆循环:
| 工具 | 功能 |
|---|---|
session_bootstrap | 无钩子的首轮问候,以及由仪表板配置的上下文 |
session_load_context | 显式重新加载项目、在 context_not_loaded 保存拒绝后恢复,或作为旧版服务的启动回退方案 |
session_save_ledger | 追加一条不可变的会话日志 |
session_save_handoff | 保存实时状态,供下一次会话使用 |
knowledge_search | 对所有记忆进行语义 + 关键词搜索 |
query_memory_natural | 以记忆为先的问答;付费套餐会在必要时使用有依据的实时来源作为后备 |
session_detect_drift | 检测会话是否偏离目标 |
verify_behavior | 编辑前的场景挑战——在错误更改发生前发现问题 |
knowledge_ingest | 让 Prism 学习代码库或文档 |
prism_infer | 本地优先推理(路由/聊天/代码模式、思考、云端升级) |
inference_metrics | 会话委派统计,或持久化的 MCP + VS Code 面板本地/云端统计 |
local_savings | 本地服务在所有时间/最近 30 天/当前会话中,为你的云端模型节省的 Token 用量 |
query_memory_natural — 以记忆为先,必要时使用当前来源
用一个自然语言问题提问,无需分别选择记忆、搜索、抓取和推理工具。Prism 会先搜索累积的项目记忆。如果找不到有用证据,付费套餐会运行一次有范围限制的 Synalux 搜索(Firecrawl、Gemini 3.6 Google Search grounding,随后回退到旧版 Brave),解析并保留来源 URL,抓取排名靠前的页面,再让 RAM 安全的本地 Prism Coder 模型依据这些证据作答。付费套餐的 Gemini 3.6 验证器会在回复发出前检查草稿。受限或不确定的临床内容绝不会进入基于网络信息的本地路径;它会遵循 Prism 的云端处理或拒绝安全边界。
prism_infer — 本地优先推理,并可升级到云端
prism_infer({
prompt: "Write a binary search in Python",
mode: "code", // "route" | "chat" | "code"
think: true, // enable <think> reasoning (default: true for chat/code)
model_ceiling: "27b", // use the quality tier
})
// → 27B generates code locally ($0), with thinking for quality
// → If quality gate fails + paid tier → auto-escalate to Gemini 3.6 Flash
// Follow-ups carry the conversation (paid plans). The host curates the turns;
// Prism bounds them to your plan's caps (user+assistant text only), safety-
// screens every turn (each alone, then each in context; a short routine
// request skips its own model read), counts them against
// the tier's context, and never stores them. A free plan or a host with no
// portal is refused: multi_turn_not_in_plan.
prism_infer({
messages: [
{ role: "user", content: "Write a binary search in Python" },
{ role: "assistant", content: "<the accepted answer>" },
],
prompt: "Now make it return the insertion point when the value is absent",
mode: "code",
})
多轮对话:为什么重要,以及为什么是付费功能
单次 prism_infer 调用没有记忆。宿主提出问题,本地模型作答,下一次调用便从头开始:“现在给它加上超时”对于从未见过“它”的模型毫无意义。没有历史记录,宿主只能在每个提示词中重述全部上下文(消耗 token,而且答案会偏离),或者放弃委托本地模型,改为在云端自行处理后续问题。有了 messages,宿主就能传回它已接受的对话轮次,让本地模型以 $0 的成本继续对话;这正是本地委托能用于实际工作、而非只能生成一次性片段的关键。
这是付费功能,因为离开 Synalux 就无法运行:
- 额度由门户按套餐提供。 一段对话可以包含多少轮、多少字符,取决于套餐返回的权益,而不是由客户端决定。没有门户,就没有策略,这类调用会被拒绝,并返回
multi_turn_not_in_plan。 - 含义不明确的对话轮次会交由 Synalux 云端处理。 每一轮都会在设备上单独进行安全筛查,并结合上下文进行筛查。若筛查认定某一轮存在不确定性,本地模型绝不会处理它;套餐允许时会转交云端,否则会被拒绝。免费套餐不提供云端,因此对于免费用户,唯一诚实的做法就是完全不提供历史记录。
- 不会存储任何内容。 Prism 会限制、筛查、计数并转发宿主发送的对话轮次,但不会保留任何内容。
不使用多轮对话(免费套餐,或未提供 `messages`):每次调用都会从头开始
// Call 1
prism_infer({ prompt: "My project codename is Nightjar. Reply OK.", mode: "chat" })
// → "OK" (local model, $0)
// Call 2 — the model never saw call 1
prism_infer({ prompt: "What is my codename? One word.", mode: "chat" })
// → "I don't have that information." (local model, correct and useless)
// Call 3 — a coding follow-up with no thread
prism_infer({ prompt: "Now add a timeout parameter to it.", mode: "code" })
// → guesses what "it" is, or asks (the host has to redo the work)
// A free plan that sends messages anyway:
prism_infer({ messages: [/* … */], prompt: "…" })
// → refused: multi_turn_not_in_plan (no portal entitlement, no cloud)
使用多轮对话(付费套餐):对话会在本地继续,筛查系统会逐轮判断
// The host keeps the turns it accepted and passes them back.
prism_infer({
messages: [
{ role: "user", content: "My project codename is Nightjar. Reply OK." },
{ role: "assistant", content: "OK" },
],
prompt: "What is my codename? One word.",
mode: "chat",
})
// → "Nightjar" (local model, $0; history_turns: 2)
prism_infer({
messages: [
{ role: "user", content: "We named the helper countActiveUsers(data). Confirm." },
{ role: "assistant", content: "Confirmed." },
],
prompt: "Write the one-line call that stores its result in n.",
mode: "code",
})
// → "n = countActiveUsers(data)" (local model, $0)
// A turn the on-device screen finds uncertain, alone or in context, is not
// served locally: it goes to Synalux cloud on a paid plan, or is refused with
// cloud_fallback: false. The result names the reason (layer1_uncertain) so
// the host can decide what to do with the thread.
prism_infer({
messages: [
{ role: "user", content: "The ticket for this bug is SYN-4471. Acknowledge." },
{ role: "assistant", content: "Acknowledged." },
],
prompt: "Which ticket is this bug filed under?",
cloud_fallback: true,
})
// → "SYN-4471" (Gemini 3.6 Flash; used_cloud: true)
使用真实处理器,在本地 9b 模型上关闭云端,通过 20.21.14 测得:
- 所有携带对话上下文并交由本地 9b 模型处理的无害后续问题,都得到了正确回答。不提供对话上下文时,大多数回答都是编造的。
- 设备端筛查仍会拒绝过多无害的后续问题:在我们的测试中,26 个问题有 11 个被拒绝。每次拒绝都会说明原因。目前的工作重点是减少这些误拒绝。
- 所有预留的多轮对话探测请求都在生成开始前被拒绝(11 个中的 11 个)。
| 模式 | 思考 | 模型 | 用途 |
|---|---|---|---|
route | 关闭(快速)——擅长推理的层级除外,例如 9B | 默认 9B | MCP 工具路由 |
chat | 按层级设置:9B 开启,4B/2B 关闭 | 首选 27B | 对话、推理 |
code | 按层级设置:9B 开启,4B/2B 关闭 | 首选 27B | 代码生成、调试 |
思考是一个层级属性,而非模式属性。带有 prefersThinking 的层级还会声明 minLocalTokens 下限,为答案预留预算;不带此属性的层级会在 <think> 中用尽全部 num_predict 额度,最终不返回任何内容。显式传入 think 可覆盖这两种设置。
完整的 TypeScript 签名见 src/tools/;架构说明见 docs/ARCHITECTURE.md。
inference_metrics — 随时查看本地模型的使用情况
在会话期间随时调用 inference_metrics,查看有多少次 prism_infer 调用在本地运行,多少次在云端运行。使用 period: "all" 可原子化导入 Synalux VS Code 面板的本地存储数据,并将其本地处理率计入已持久化的总数:
📊 Inference Metrics — local-model delegation (this session):
Total calls: 5 — Local: 5 (100%) | Cloud: 0 (0%)
Tokens: 1,240 in + 380 out = 1,620 total
Avg latency: 420ms
By model:
prism-coder:27b: 3 calls, 1,100 tokens, avg 520ms
prism-coder:9b: 2 calls, 520 tokens, avg 270ms
在会话结束时,session_save_ledger 和 session_save_handoff 的响应中也会自动显示同一数据块。
注意: 默认会话视图跟踪此 MCP 进程的 prism_infer 委托情况。全部时间视图会合并已持久化的 MCP 调用与 Synalux VS Code 面板推理数据。两个视图都不包含宿主 Agent 自身的 token 消耗;如有提供,请使用该宿主原生的用量报告。
local_savings — 本地服务实际替代了多少工作
inference_metrics 报告原始计数器。local_savings 回答这些数据背后的问题:有多少工作没有传到云端模型。可在任意宿主中调用此工具,也可在终端运行 prism savings — --period all|month|week|session、使用 --days N 指定任意自定义回溯时间窗口(例如,--days 90 表示一个季度),并使用 --json 获取机器可读的输出:
💾 Local serving — LAST 30 DAYS (2026-08-02 → 2026-08-26)
~510K tokens kept off your cloud model
53 call(s) served locally of 58 routed (91%)
Breakdown: 461,400 prompt + 48,400 completion
By model:
prism-coder:9b: 41 call(s), ~505K tokens
prism-coder:4b: 12 call(s), ~4.8K tokens
Follow-ups with your conversation:
12 answered locally (12 by the 9b) · 2 refused by the on-device screen · 0 sent to cloud
Refusals by stage: follow-up alone 1 · turns together 1
Counts tokens a local model handled instead of your cloud model. On the token
axis, the token count is measured — a floor, with known undercounts listed
when present. On the displacement axis, prism cannot observe the call your
host would have made, so whether all of it would have hit the cloud is an
assumption. Read it as: at most this much displacement, of at least this
token volume.
Caveats:
· 12 local call(s) hit the KV cache, so Ollama reported 0 prompt tokens for
context that was really submitted — prompt tokens are undercounted.
· 3 refused call(s) excluded — nothing was served, so nothing was displaced.
为什么统计 Token,而不是金额。 Prism 报告 Token 用量,绝不报告金额,因为它无法诚实地给出金额:已公布的费率会变化,内置的价格表很快就会出错;prism 无法获知你的宿主本来会使用哪个模型,而仅这一选择就会让相同 Token 的价格相差数倍;此外,大多数用户使用固定费率套餐,货币金额毫无意义。Token 是 prism 自行测量的唯一计量单位。如果你知道自己的实际费率,可以自行换算 — 细分数据正是为此而列出。
后续请求。 承载了对话内容的调用(messages)会单独列出:
- 本地模型回答了多少条,其中有多少条由 9b 回答;
- 设备端筛查拒绝了多少条,以及拒绝发生在哪个阶段(仅读取后续请求、仅读取较早轮次,或同时读取这些轮次);
- 有多少条请求发送到了云端。
被拒绝的后续请求会返回给你的宿主,而不是由本地模型回答,因此这项数据能显示本地服务实际承接了多少后续工作。因套餐不包含多轮历史,或历史记录超过上限而被拒绝的请求会单独统计。只有在宿主请求报告时(escalation: "report")才会记录这些请求;否则,它们会在记录前失败。week、month、all 和 --days 视图都会显示此项,这些视图读取持久账本。
被拒绝的调用不计入统计;VS Code 面板 Playground 的占比会单独披露;已知的少计来源也会直接列出,而非隐去 — 因此,持久视图(week/month/all/--days)中的汇总数是实测下限,而不是一个看似精确的数字。数据按机器统计:每台机器报告自己的本地账本。
团队汇总(付费)。 付费计划用户可运行 prism savings --sync-enable,让此机器加入节省数据同步:每个会话同步一次,prism 会上传每日计数器 — 调用次数和 Token 总量,绝不上传提示词、补全内容、项目名称或模型输出(上传负载的字段集合固定不变;服务器会拒绝其他任何内容)。之后运行 prism savings --team(或调用 local_savings 工具并设置 scope: "team"),即可查看工作区汇总:从云端模型节省的 Token 总量、各成员占比、设备数量。尚未选择加入的成员不会被计入,因此团队数据是下限。同步默认关闭,可运行 --sync-disable 停止同步;更深入的会话内容同步(交接)属于单独的通道,并采用端到端加密 — 两者有意不合并,因为无法汇总 E2E 加密数据块,而计数器通道绝不能承载内容。session 视图是唯一例外:命中 KV-cache 时,它会根据文本估算已提交的提示词 Token 数量(账本记录的实测值则为 0),因此会标记为 (est.),并在发生此情况时明确说明。
本地模型委派(默认)
Prism 会先将符合条件的有界任务——批量分类、字段提取、机械式格式整理、测试生成及类似任务——路由到本地 Ollama 模型,再考虑使用宿主原生子 Agent。如果本地工作器不可用、拒绝执行或性能下降,Agent 会检查 gate_outcome、验证结果,并在当前宿主线程中继续。
当子任务依赖先前工作时,请传入项目记忆:
{
"prompt": "Generate the bounded regression-test cases.",
"project": "prism-mcp",
"context_depth": "standard",
"conversation_id": "<from session_bootstrap>",
"mode": "code",
"cloud_fallback": false,
"escalation": "report"
}
省略 context_depth 可使用仪表板设置。如需明确选择退出,请关闭仪表板中的 Task Router 开关,或设置 PRISM_TASK_ROUTER_ENABLED=false。
防护措施:
- 默认使用本地模型 — 保留操作员明确选择退出的设置
- 绝不委派: 将交付给用户的代码/文本、安全/防护逻辑、规划/推理,以及任何无法明显察觉静默质量下降的内容
- 始终验证: 在信任本地输出前,检查
quality_gate_failed和used_cloud
Prism 如何应对上下文压缩
LLM 上下文窗口被视为临时工作区;持久状态保存在持久化存储中(本地为 SQLite,云端为 portal)。每个会话都会以强制调用无参数的 session_bootstrap 开始,因此 Prism 会在 Agent 编写回复前应用仪表板中的项目设置和快速/标准/深入选项。当项目条目超过阈值(默认 50 条)时,session_compact_ledger 会将旧条目汇总成一个摘要,软归档原始条目,并在图中添加关联链接。请参阅 docs/COMPACTION.md
CLI
prism load <project> # load session context
prism save # save ledger + handoff
prism search <query> # search code across repos (exact / regex / symbol / semantic)
prism review <files...> # AI code review — security, performance, style
prism scan <files...> # security scan — secrets, licenses, Dockerfile
prism browser ... # persistent local browser testing and structured automation
prism push # push local SQLite to the cloud backend
prism register-models # alias dcostenco/prism-coder:* -> prism-coder:*
prism browser — 本地浏览器测试
npm 包包含 Prism 的 Python/Playwright 浏览器运行器;无需单独安装 Prism Browser 应用或 DMG。它基于 Playwright 提供稳定的 Agent 命令行工具,支持可重复使用的命名配置文件、多操作管道/REPL 会话、经脱敏处理的本地审计日志,以及适用于本地应用的受控预加载脚本。需要让多项操作共用同一个页面会话时,请使用管道或 REPL 模式:
printf 'open http://127.0.0.1:3000\nwait-for #app\nread-dom #app\n' | \
prism browser --headless --local-only pipe
本地应用可通过 --inject ./tests/browser-init.js 加载可重复使用的导航前测试辅助程序。自定义注入需要 --local-only;在该模式下,公共导航和非回环请求会被拒绝。使用 pip3 install playwright playwright-stealth 和 python3 -m playwright install chromium 一次性安装本地运行环境。
对于需要完整断言、跟踪、fixture 和并行工作器 API 的自定义套件,请使用原生 Playwright。当 AI Agent 需要通过统一命令行工具使用小型、持久且可审计的本地浏览器会话时,请使用 prism browser。兼容性补丁仅尽力提供支持;不保证可绕过 CAPTCHA。有关命令、Safety 模型和已验证的验收案例,请参阅 Prism Browser 本地测试。
prism search — 语义代码搜索
prism review — 带安全和隐私检查的 AI 代码审查
prism scan — 用于检测机密信息、Dockerfile 和许可证的安全扫描器
配套工具
Prism 可与以下工具协同使用——请选择适合自己工作流的工具。
Web IDE — Prism Coder
打开 synalux.ai/coder,登录,连接 GitHub,并导入你有权访问的仓库。选择分支,打开文件,编辑并保存回 GitHub。
- Monaco 编辑器 — 支持多个标签页、分屏视图、语法高亮,以及熟悉的 VS Code 键盘快捷键。
- GitHub 编辑 — 支持分支选择、文件保存、历史记录和冲突保护。如果文件在远程发生更改,冲突保存会保留本地草稿以供恢复。二进制文件重命名时会保留字节,并支持 Unicode 路径。
- AI Agent 模式 — 描述任务、审核建议的文件更改、应用所选更改,并保存到独立的 Agent 分支。回滚会丢弃该分支并返回之前的工作状态。
- Live Share — 启动会话,并向仓库成员分享邀请链接,以便同步编辑并显示带标签的远程光标。托管 IDE 已启用第一方信令。
- 浏览器内 Node.js 和终端 — 浏览器支持相应运行时后,WebContainer 即可运行软件包脚本和预览。可选的服务器 PTY 和 Node.js 调试器需要连接开发服务器。
- 任务和诊断 — 提供
tasks.json运行器和用于显示 Monaco 诊断信息的 Problems 面板;界面字符串已支持 12 种语言。
生产环境会话,2026 年 9 月 8 日。 以下截图来自使用私有测试仓库的实时 IDE。该会话测试了 GitHub 导入和保存、冲突恢复、二进制文件重命名、Unicode 文件、Agent 审核/应用/保存/回滚,以及 Live Share 双向文本和光标同步。
应用前先审核 Agent 提案。 下方的差异视图提议新增一个 add(a, b) 函数。随后应用所选更改,并将确切文件保存到 Agent 分支;之后还检查了回滚功能。

远程编辑发生冲突时保留草稿。 状态栏会报告冲突,同时编辑器中仍保留未保存的本地编辑。重新加载后也检查了草稿恢复功能。

查看协作者的编辑和光标。 第一张截图中,主机接收到了访客的编辑和光标;第二张截图中,访客接收到了主机返回的编辑和光标。这些截图展示了两个 Safari 标签页使用同一授权账号的情况;本次测试未涵盖不同用户和跨设备连接。


运行时要求。 建议使用 Chrome 或 Edge 安装 WebContainer 软件包、运行测试和预览;请参阅 WebContainer 浏览器支持。本次测试使用 Safari 完成了编辑和上述工作流,但在该 Safari 会话中 npm 安装仍然失败。编辑成功并不代表代码能够成功运行。Agent 的测试和类型检查执行也取决于运行时。云端 AI 需要适用的套餐和已配置的服务;连接本地 Ollama 则需要显式配置。
VS Code 扩展 — Synalux
在 VS Code 中集成具备记忆增强功能的 AI,并提供临床实践管理功能。从市场安装:
code --install-extension synalux-ai.synalux
AI 聊天、语音输入、SOAP 病历生成器、团队协作和视频通话——尽在 VS Code 中。默认通过本地 Ollama 路由;付费层级可使用云服务。
功能详情
- AI:聊天参与者(
@synalux)、多 Agent 工作流、语音输入、模型切换、10 种语气 - 临床:SOAP 病历生成器、基于角色的访问控制、文档签署
- 协作:团队聊天、私信、视频通话、客户看板、可视化构建器、DevContainers
- 隐私:默认使用本地 Ollama。
preferLocal=true会优先尝试本地服务。
Prism AAC
面向无法说话用户的沟通应用,由设备端 prism-coder 集群提供短语预测功能。适用于 macOS / iOS / Web。
请参阅 github.com/dcostenco/prism-aac
Git 钩子(可移植)
适用于任何编辑器、任何 AI 工具以及直接命令行操作的提交前和推送前安全钩子。无需依赖 Claude Code。
# Install in all repos (one-time)
bash hooks/install.sh
# Or install manually in a single repo
cp hooks/pre-commit .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit
cp hooks/pre-push .git/hooks/pre-push && chmod +x .git/hooks/pre-push
| 钩子 | 检查内容 | 模式 |
|---|---|---|
pre-commit | 死代码、孤立服务、脚手架代码、缺少身份验证 | PRECOMMIT_MODE=advisory|block|off |
pre-push | 19 项规则的安全审计(SSRF、SQL 注入、机密信息、IDOR 等) | PREPUSH_MODE=advisory|block|off |
默认模式为 advisory(发出警告,但允许继续)。设置 *_MODE=block 可强制拦截。钩子会先在仓库中查找完整审计脚本(hooks/lib/),然后回退到 ~/.claude/hooks/,最后执行最精简的内联检查。
自托管(企业版)
在自己的硬件上运行完整模型栈——无需云服务,数据完全自主掌控。
**要求:**Mac M2 Pro 或更高配置(建议 48 GB),或 Linux + NVIDIA GPU,另需安装 Ollama。
ollama pull dcostenco/prism-coder:9b # default router
export LOCAL_LLM_URL=http://localhost:11434
自托管路由始终在本地运行:桌面端/服务端使用 9b → 4b,移动端/iPhone 使用 2b;安装后即可使用 27B,且会确保内存安全。由 Synalux 托管的付费层级可使用 Gemini 3.6 Flash 作为云端备用方案。对于 iOS 设备或同一网络中的其他机器,请运行 OLLAMA_HOST=0.0.0.0 ollama serve,并将 LOCAL_LLM_URL 指向主机的 IP。
配置参考
| 变量 | 用途 | 默认值 |
|---|---|---|
PRISM_STORAGE | local / synalux / supabase / auto | auto |
PRISM_SYNALUX_API_KEY | 付费层级的门户密钥(synalux_sk_...) | --(未设置时使用本地模式) |
LOCAL_LLM_URL | Ollama 端点 | http://localhost:11434 |
PRISM_FORCE_LOCAL | 无论凭据如何,都强制使用本地 SQLite | false |
TELEMETRY_WRITE_TOKEN | 门户分析令牌(可选——不设置也能显示指标) | -- |
未设置任何变量时,Prism 将完全在本地运行。拥有有效的云端记忆订阅时,设置 PRISM_SYNALUX_API_KEY(并保留 PRISM_STORAGE=auto)即可使用 Synalux 后端;经门户确认的免费层级仍会使用本地 SQLite。
测试
npm test # full suite (vitest) — 95 files, 2841 tests
npm test -- --coverage # coverage report
测试覆盖 HRR 检索、知识摄取、推理级联与依据验证器、推理指标、遥测允许列表、委派门控、压缩、模型选择器以及存储往返。
迁移:从本地迁移到云端
若要将免费层级的历史记录迁移到付费门户:
node scripts/migrate-local-to-portal.mjs --dry-run # preview, no network
PRISM_SYNALUX_API_KEY=synalux_sk_... \
node scripts/migrate-local-to-portal.mjs # push ledger + handoffs
该脚本会读取 ~/.prism-mcp/data.db,并将条目 POST 到门户。账本条目仅追加,并由服务器去重;交接信息则按项目采用最后写入优先策略。同一数据库可以安全地重复运行。此操作是一次性迁移,并非同步守护进程——完成后,设置 PRISM_STORAGE=synalux(或保持为 auto)。
许可证与层级
**本仓库(Prism MCP 客户端)**采用 Apache-2.0 许可。
免费(无需账户)
| 功能 | 详情 |
|---|---|
| 本地推理 | 直接使用 Ollama 不受限制;自动 prism_infer 路由最多选择 27B,具体取决于机器内存容量 |
| 会话记忆 | 持久会话、交接、账本——全部存储在本地 SQLite 中 |
| 知识搜索 | 对会话历史进行语义搜索 |
| 技能 | 所有技能均可在本地使用(运行 sync-skills.sh 进行填充) |
| 漂移检测 | 服务端 GATE 5 提醒 |
免费账户(Synalux 登录,$0)
包含免费版的所有功能,另外还包括:
| 功能 | 详情 |
|---|---|
多轮 prism_infer | 跨调用保留对话历史;每个本地答案都会在提供给你之前由你的设备进行检查 |
| 云端答案 | 每天 20 次;当无法使用本地答案时,使用 Gemini 提供:对话中使用 3.5 Flash-Lite,单条提示词使用 3.6 Flash |
在 prism dashboard 的 账户 下登录。
Pro($15/月)和 Team($20/席位/月,至少 2 个席位)
包含免费账户的所有功能,另外还包括:
| 功能 | 详情 |
|---|---|
| 云端答案 | Pro 每月 1,000 次(14 天试用期内为 500 次),或 Team 每席位每月 1,500 次,每天最多 200 次,由 Gemini 3.6 Flash 提供;一次云端确认计为一次 |
| 答案确认 | 通过设备端检查的本地答案也会由 Synalux 确认;副本中的姓名、日期和其他标识符已在你的设备上替换 |
| 技能路由 | Portal 根据你的项目和提示词确定要加载哪些技能 |
| 跨设备记忆 | Supabase 云同步——会话可在不同机器间延续 |
| 依据验证器 | 对模型输出进行 L3 NLI 验证 |
| 团队功能 | 多 Agent Hivemind、工作区协作、账户和团队技能 |
付费层级增加了智能路由——Synalux portal 会确定哪些技能与当前项目和提示词相关,让你的 Agent 获得领域专业知识(stripe 模式、训练协议、临床标准),而不是加载所有内容。拥有仓库的免费用户可以运行 sync-skills.sh 在本地填充所有技能;付费路由则增加了基于项目和提示词的选择。
- 贡献者需要签署 CLA。
- “Prism”和“Synalux”是 Synalux LLC 的商标名称;Apache 许可证不授予商标权(参见许可证第 6 条)。
许可证变更(v20)
自此版本起,prism-mcp 的许可证从 AGPL-3.0 更改为 Apache-2.0。 先前版本仍采用 AGPL-3.0。现有分支保留原许可证授予的所有权利。
| 产品 | 许可证 |
|---|---|
| prism-mcp-server(本仓库) | Apache-2.0 |
| VS Code extension(synalux-ai.synalux) | BSL-1.1 |
| Web IDE(synalux.ai/coder) | Synalux 服务条款 |
| Prism AAC | Apache-2.0 |
本仓库采用 Apache-2.0 许可证。云功能(托管推理、跨设备记忆、团队功能)由 Synalux 云服务提供,适用单独的条款。
© 2026 Synalux, LLC。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。