mcpField
T
trazum

trazum

本地服务
github.com/DavmunreyAI 与智能体12 周前更新

关于 trazum

Trazum 是用于分析 AI 使用成本并评估提示词、模型和工作流变更的本地分析器与 MCP 服务。其 spend_guard 可在调用发生前,根据已配置的限额和使用日志评估拟议调用。

主要功能

  1. 01分析本地使用日志与提示词
  2. 02估算费用并标出数据缺口
  3. 03排列缓存和模型调整机会
  4. 04比较计划与实际使用情况
  5. 05通过确定性规则精简提示词
  6. 06为调用检查设置支出限额

适用场景

  1. 01按项目和模型查看使用情况
  2. 02评估提示词或模型变更
  3. 03支出前检查拟议调用
  4. 04比较策略调整前后的使用量

MCP 相关

MCP 服务提供 spend_guard,根据配置限额和现有使用日志,对拟议调用返回 yes、no 或 cannot-tell。MCP 客户端也可查询 Trazum 分析结果。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"davmunrey-trazum": {
"command": "npx",
"args": [
"-y",
"@trazum/mcp"
]
}
}
}
启动命令npx -y @trazum/mcp

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

安装包
npm@trazum/mcp2.6.0

工具

7

收录的工具列表 · 更新于 2 周前

参数类型必填说明
labelstring否此次调用所属的工作负载,用于按标签设置的上限。
modelstring是此次调用将使用的模型 ID。可调用 list_models 查看已知模型。
waivearray否来自 trazum.config.json 的豁免列表 — [{"gate": "limits.sessionUsd", "reason": "...", "until": "YYYY-MM-DD"}]。豁免的上限仍会报告其测量值,但超过上限时会附带豁免信息并回答 yes:豁免情况会保留在记录中。按配置文件的规则验证。
limitsobject否来自 trazum.config.json 的限制策略 — {"dayUsd": n, "sessionUsd": n, "byLabel": {"name": n}},金额须为正数。网关和 trazum serve 使用相同的函数进行判定,因此三种入口不会产生不一致。按配置文件的规则验证:未知键或非正数上限将被拒绝并说明原因。
sessionstring否此次调用所属的对话,用于按会话设置的上限。用于判定,不会回显。
limitUsdnumber否用于判断的预算。省略此项时,答案为 cannot-tell:此工具报告相对于人类设定策略的位置,绝不会自行编造策略。
positionobject否按范围统计的实测支出,来自你自己的使用日志,绝不猜测。省略某个范围时,该范围未测量,其上限的回答为 cannot-tell,而不是「低于上限」。
position.dayUsdnumber否
position.labelUsdnumber否
position.sessionUsdnumber否
consumedUsdnumber否截至目前的实测支出,单位为美元,来自账单,绝不猜测。省略此项时,答案为 cannot-tell,而不是未经测量的肯定答复。
inputTokensinteger是此次调用将发送的输入 token 数,包括任何缓存内容。
outputTokensinteger否预期返回的输出 token 数。保留为零时,答案仅对输入进行定价,并会附上你提供的数值以示说明。
batchEligibleboolean否此工作是否可以等到批处理时段。只有你知道这一点,因此只有你确认后才会提供批处理替代方案。

详细介绍

Trazum

了解你的 AI 开支,决定要做哪些调整。

找出 AI 使用费用从何而来,选择一项调整,并检查结果。 Trazum 会分析本地使用日志和提示词,评估缓存、模型调整等优化机会, 并将估算值与实测结果分开呈现。

开源 · 本地分析 · 入门无需提供商密钥

CI CodeQL MIT licence Node Runtime dependencies

从这里开始:一条命令,无需全局安装

需要 Node.js 20 或更高版本。npx 可能会从 npm 下载 Trazum。

npx @trazum/cli bill
Trazum 账单示例,展示两个示例性 Claude Code 项目的数据:126 次已计价调用共计 $12.70,包含按项目和模型划分的表格,每项占比均以条形图呈现;Claude Fable 5.1、Opus 5.5、Sonnet 5.5 和 Haiku 5.5 各自按其费率计价

示例数据来自 examples/claude-projects, 并非客户结果。根据 CLI 输出生成。

如果未指定路径,bill 会读取本地 Claude Code 对话记录,并按项目和模型 汇总结果。如果使用订阅,这里显示的是 API 等效成本,而不是 你实际支付的费用。 无法计价的模型会作为缺口报告。本地分析 不会上传你的文件。

有受支持的用量导出文件?传入其路径:

npx @trazum/cli bill ./usage-export.jsonl

支持的输入格式 · 在浏览器中试用示例数据

将报告转化为决策

对于按 API 用量付费的团队,关键问题是下一步该做什么调整。 从最大的一项工作负载入手,查看一项发现背后的假设, 并在更换模型或提示词之前评估质量。

  1. 了解用量: bill 会显示已记录的成本和覆盖缺口。
  2. 选择一项调整: plan 会根据标准化的用量日志对优化机会进行排序。
  3. 检查结果: verify 会将已保存的计划与后续用量进行比较, 也会涵盖证据不足以确定结果的情况。

查看从首次报告到验证的操作指南。 预计节省金额并不代表账单一定会降低。

使用订阅?

降低 API 等效成本估算,并不会减少固定的订阅费用。 使用 Trazum 检查对话增长情况,审查重复的提示词文本,并 为你控制的指令设置 token 预算。保留较短的提示词前,请检查任务质量。 这不会自动管理 Agent 的上下文,也不保证能在提供商的限制内发送更多消息。

订阅效率工作流。

在 Tasks 仪表板 和 CLI/MCP 2.6.0 中: 任务效率 会关联 Claude Code/Codex 任务用量、重复工具调用的证据、可撤销的指令策略以及明确的验收决策。比较调整前后的 实际用量,不会据此推断成功或保证节省费用。

保留或分享报告

npx @trazum/cli bill ./usage-export.jsonl --html-out bill.html

此外还可导出 PDF、CSV 和 Markdown。分享前请先检查报告: 其中包含用量和成本信息。

选择你的集成方式

Claude Code 是首个原生集成,但不会锁定服务提供商。Codex 会话导入、标准化用量日志和服务提供商导出数据都使用同一核心。MCP 客户端无需原生转录适配器,即可查询 Trazum。

你的需求从这里开始
终端报告快速入门
原生 Agent 会话导入Claude Code 或 Codex
任务级效率实验分析、应用策略并进行比较,自 2.6.0 起提供
Agent 集成CLI、MCP 和技能工作流
API 合约或强制调用路径本地 HTTP API 或 网关
完整文档按任务分类的索引

Harness、模型和付费模式是彼此独立的信息。API 等效估算不是订阅账单;模型没有定价时仍是一个缺口。

探索高级工作流、命令、架构和限制

你的 Agent 会在循环中花钱。这里会在调用发生前为其定价。

单个 Agent 的花费一目了然。一群 Agent 在无人逐轮查看的循环中不断花钱,一个月后账单才以一个总数到来,没有任何逐项决策明细。

Trazum 会接入这个循环。MCP 服务的第一个工具是 spend_guard,也是这里唯一一个触发条件不是某人输入一句话的工具:

"May I spend this?"  ->  yes, no, or cannot-tell.

拒绝调用时会提供更省钱的方式来完成同一调用,每种方式都针对该调用定价,并说明自身的假设。上限来自你的 trazum.config.json;当前花费来自主机已经写入的用量日志。回答时不会调用任何工具,也不会产生任何花费。

claude plugin marketplace add Davmunrey/Trazum
claude plugin install trazum@trazum

这一行命令会同时带来技能和 MCP 服务。若 Agent 改为从仓库读取 Agent Skills,则可通过 npx skills add Davmunrey/Trazum 获取相同的技能。其他所有 MCP 客户端读取相同的 mcpServers JSON,因此 Cursor(.cursor/mcp.json)、Windsurf、Claude Desktop 等客户端都只需粘贴一次:

{ "mcpServers": { "trazum": { "command": "npx", "args": ["-y", "@trazum/mcp"] } } }

该服务已列入官方 MCP 注册表,名称为 io.github.Davmunrey/trazum,每次发布都会更新该条目。

或者立即运行,无需安装任何内容:Playground

该链接会在页面中运行 CLI 的纯子集,使用已加载的示例文件,并调用与终端相同的 @trazum/core 函数。你粘贴的任何内容都不会离开浏览器。

## 一张截图,道出全部理由
trazum 优化一条冗长的支持提示词:令牌数从 238 降至 142(-40.3%),规则每月节省 $24.00,并给出一条指出每月可节省 $528.40、多出 22 倍的建议

真实输出记录。请看最后两行:规则每月节省了 $24.00,而上方的建议价值为 $528.40,高出 22 倍。这个差距就是这个工具存在的全部理由。

输入内容:提示词或使用日志。在你的机器上离线计算的内容:零依赖的 @trazum/core,以及 CLI、MCP 服务、Web 应用和 Action。输出内容:收据、报告、门控判定。绝不会越过边界的内容:提示词文本、模型的回答、文件路径、分支名称和凭据。

由 npm run draw:architecture 生成,并非手绘。如果某个包未在图中展示、核心模块引入了依赖但图中称其没有依赖,或第三个模块获准访问网络但图中未作说明,architecture-image.test.js 就会使构建失败。

提示词是所有人都会关注的部分,但通常也是成本较低的部分。 在上面的运行结果中,文本减少了 40%,账单却只减少了 3.5%。其余部分的变化,来自一个此前无人提出的问题:这项任务需要使用当前运行的这个模型吗?

每个数字都有据可查。 有 16 条建议,每条都按月计价,且可在单个文件上复现:未启用的缓存、可通过 Batch API 处理的工作,以及每次调用都要消耗令牌来描述某种结构的 schema,而请求本可将其作为参数传递。在这些建议之下,是 12 条确定性规则,用于缩短文本本身:相同输入、相同输出,免费、离线运行,绝不触碰代码、URL、电子邮件地址或占位符。除此之外,还有一个可选的 LLM 处理步骤,用于处理压缩规则无法完成的工作;你可以配置所用的任意提供商,而且只有在你提出要求时才会运行。

                      ┌──────────────┐
                      │ @trazum/core │   the library: rules, tokens, pricing
                      └──────┬───────┘   zero dependencies, browser-safe
    ┌────────────┬─────────────┼─────────────┬─────────────┐
 @trazum/cli  @trazum/mcp  trazum-vscode  @trazum/web    action/
 54 commands   MCP server    the editor      Next.js    comments on
              for your agents  status bar               pull requests

              @trazum/tokenizer-openai   optional: exact counts for OpenAI
                    install it or do not, nothing else changes

目录

我想要……前往
获取第一个结果快速入门
了解已记录的支出使用情况输入 和 账单/配置文件
设置预算CI 门控 或 网关决策
集成 TrazumCLI、Web、库和 Agent
查找命令或数据契约命令参考 和 文档索引

已明确说明的限制 · 隐私 · 你按令牌付费的每个模型 · 贡献

它实际能做什么

分析器会报告 16 项发现,并为每项估算附上假设。

1. 告诉你钱究竟花在哪里。 这一部分最值得先看,因为这里有具体数字。每条建议都根据你自己的调用量按月估算费用,而且没有一条是为了缩短文本:

建议重要原因
提示词缓存从缓存读取的费用是输入费用的 10%。节省金额根据实际稳定前缀计算:在包含 {{placeholders}} 的模板中,只有第一个占位符之前的内容会被缓存,而不是整个提示词。
重新排列模板今天,位于第一个变量占位符之后的稳定指令永远不会被缓存。Trazum 会估算将它们移到前面的节省金额;并且使用 --reorder 时,会这样做。
Batch API当工作允许有延迟时,输入和输出费用可减半。
更便宜的模型复杂度启发式判断:如果任务看起来很简单,降低一个档次能节省多少费用。
输出主导的费用如果答案的费用高于提示词,缩短提示词能节省的费用就有上限。
促销价格当你依据即将到期的入门价格编制预算时发出警告。
上下文窗口如果提示词放不下,调用就会失败。
相互矛盾的指令“用英语回答”上方三个段落又说“用客户自己的语言回复”。模型必须二选一,而每次调用的选择可能不同——这不仅是正确性问题,还会让令牌费用翻倍。
冗余示例找出与前一个示例高度相似的少样本示例,并计算它们每月的费用。
输出格式重复说明先在代码块中给出模式,又在正文中再次解释。代码块才是值得保留的版本。
请求本身可以携带的模式以“输出格式:”引出的模式块,每次调用都会按输入令牌计费。如今,每个主要 API 都可以将响应模式作为参数传入——支持结构化输出的 API 可以强制遵循该格式,但模式令牌仍可能计费。见下文。

最后四项仅提供建议。矛盾之处的正确答案只有作者知道,而看似冗余的示例可能是有意展示边界情况。Trazum 只指出问题,不会删改。

结构化输出是一项代码更改

Trazum 可以识别提示词中描述的输出架构,并建议改用提供商的结构化输出 API。它绝不会自动移除该架构:调用应用必须保留这份约定。

在支持的情况下,受约束的解码器可以提高格式可靠性。**将架构移至请求参数并不能证明能节省费用:**提供商仍可能会统计架构 token。请比较实际用量,再声称有所节省。此发现估算的是相关提示词文本,而非提供商账单必定会减少的金额。

只有明确输出提示语前面的文本块才会纳入考虑。示例输入是模型可能需要的数据,不应当作架构移除。

示例检测器会查找近似副本——这正是少样本文本块实际扩展的方式。它有意不会标记改写内容:这种情况需要模型处理,目前已列入 LLM 检查阶段的路线图。

2. 然后精简提示词本身。 十二条确定性规则:礼貌用语、填充词、冗长措辞、重复段落、装饰性分隔符、大写字母喊话。分为两个级别——safe(没有语义风险)和 aggressive(请检查差异)。这通常是页面上最小的数字,因此会如实报告,而不会刻意美化。

3. 绝不触碰会破坏提示词的内容。 在运行任何规则之前,代码围栏、缩进代码块、行内代码、URL、电子邮件地址、模板占位符({{x}}、${x}、{x}、{% %})以及 XML/HTML 标签都会被隔离。如果某条规则真的让其中任何内容消失,该规则就会被丢弃,其余规则照常执行。

审查激进模式的运行结果。 每条规则都会报告实际更改的内容,因此会逐条评估节省最多的级别,而不是把它们混成一大块差异;对于不赞同的单条规则,可通过 --disable 移除:

  [aggressive] Intensifiers (3×, ~6 tokens)
      VERY → —
      extremely → —
      quite → —
  [aggressive] Self-verification instructions (1×, ~17 tokens)
      You should double-check your answer before re… → —

4. 可选:交由 LLM 检查。 只有在结果更短且受保护内容逐字节保持不变时,才会接受结果。否则保留确定性版本。它绝不会返回比初始版本更差的内容。使用 --suggest 时,它会逐条提出短语建议——You should always make sure to → Always——每条都会先与你的提示词核对,再展示给你。因此,十条中有八条建议通过,就足以让你有个轻松的早晨,无须从头到尾阅读一份重写稿。

5. 回答“缩短这个”之前的问题。 精简一个文件是这里最基础的操作。optimize 是 54 条命令之一——上方表格列出了每条命令所回答的问题——因为知道某个提示词浪费资源,并不等于知道具体是哪个提示词、谁的更改导致了问题,也不等于知道缩短后的版本是否仍然有效。

check、diff、rank 和 blame 都支持 --markdown-out,因此结果可以显示在拉取请求评论中,而不是无人查看的终端里。

可在你现有的 CI 中设置门禁。 一个二进制文件、两个退出码,以及 GitLab CI、Jenkins、CircleCI 和 pre-commit 钩子的实用配置示例——没有供应商插件,因为每个插件都会形成一条独立代码路径,可能偏离它本应转发的退出码。


54 条命令

命令它能回答什么
trazum task已接受的任务是否因经过审核的指令变更而减少了消耗?分析、应用、比较并还原。自 2.6.0 起提供。
trazum filter在 Agent 上下文中压缩重复的工具日志行,同时在本地保留原始内容。选择启用。
trazum init检查仓库提示词和可用用量,然后编写配置。首次报告后可选的设置步骤。
trazum optimize这个提示词能删掉什么?一个月下来值多少?
trazum check这个提示词是否符合令牌预算?仓库是否已偏离记录的基准?任一项不通过时退出码为 1——这是 CI 门禁。
trazum baseline这个仓库的提示词目前成本是多少?记录下来,以便提交。
trazum diff这次编辑花了多少?
trazum rank这 40 个提示词中,哪个值得花一个下午来改?
trazum doctor整个工作区有哪些问题?
trazum prune哪些少样本示例值得占用这些令牌?基于测量,并会在花费前征求同意。
trazum blame是谁、在什么时候让这个提示词变得昂贵?
trazum eval更短的提示词还能完成任务吗?
trazum where哪些提示词藏在我的源文件里?
trazum models每种模型的成本是多少?缓存最低用量是多少?
trazum profile钱究竟花到哪里去了?读取用量日志,而不是提示词。
trazum route更便宜的模型够用吗?基于测量,并会在花费前征求同意。
trazum plan根据日志中的所有信息,我应该先做什么?每项措施值多少?
trazum verify计划中的节省是否真的实现了?有三种结果,而非两种。
trazum history20 份报告共同揭示了哪些单独两份报告无法揭示的信息?呈现趋势,不做预测。
trazum connect服务商实际向我收取了多少费用?直接从其 API 读取,无需手动导出。
trazum store我测量并保留了哪些数据?仅聚合数据——绝不保留提示词文本。
trazum watch是否有项目超出预算?仅记录实际测得的超额,绝不预测。
trazum serve这次调用要花多少钱?预算够吗?毫秒内给出答案,并将两半分开保留。
trazum gateway它能否直接阻止调用,而不是只给出反对建议?拒绝调用;绝不替换。
trazum ladder先用便宜模型、失败后再升级,究竟省钱还是更花钱?明确给出盈亏平衡率。
trazum experiment在真实流量下,两个实验组哪个更好?只有确有胜者时才宣布胜出。
trazum quality这次提示词变更是否悄悄降低了产品质量?无法归因的情况,绝不归咎。
trazum semantic这个提示词是否重复表达了同一内容,或自相矛盾?由模型提出,由检查器裁定。
trazum owners这笔费用会计入谁的预算?未分配的费用绝不摊派。
trazum commitment这笔承诺用量协议实际能值多少?依据实测月份,计算双方的价格。
trazum report这一年实际情况如何?不引入新数据,并列出自身的盲点。
trazum schema这种格式的文档必须包含哪些字段?提供 JSON Schema,供非 Trazum 的验证器使用。
trazum conform我的工具生成的文档是否符合规范?它又无法回答哪些问题?
trazum rollup我们 4 个人各自测量了 4 项内容——总计是多少?合并后又丢失了什么?提供格式和合并功能,而非服务。
trazum pulse应该运行的项目是否都运行了?自身不运行任何任务——负责发现问题的是你的 CI。
trazum position本月相对于每个上限的情况如何?基于实测,附上分母,不做任何预测。
trazum receipt这笔费用是多少?如何让这个数字在别处阅读时仍有依据?列出计数,并拆分金额,以便汇总,而非盲目采信。不含提示词文本、答案或路径:格式中没有这些字段。
trazum from-claude-code我的 Claude Code 会话花了多少钱?读取磁盘上已有的会话记录——只读取数字,绝不读取内容。
trazum from-codex本地 Codex 部署可支持多少 API 等效用量?使用明确指定的路径、经过交叉验证的计数器,不含提示词内容。
trazum from-otel我的 OpenTelemetry 导出中的大模型调用花了多少钱?读取任意导出器已生成的 GenAI span——只读取计数,绝不读取提示词。
trazum from-litellm我的 LiteLLM 代理记录的调用花了多少钱?读取网关已写入的费用日志——只读取计数,绝不读取同一行中的提示词、密钥或地址。
trazum reconcileTrazum 的计算结果是否与服务商的收费相符?并列显示两个数字,绝不合并,并将无法解释的差额单独列出。
trazum bill这一切总共花了多少钱?一个入口:读取转换器支持的任意文件或目录,根据每个文件自身的文本识别其格式,进行转换和计价,最后生成收据。没有任何格式匹配的文件会被标出,绝不猜测。
trazum from-openrouterOpenRouter 显示我用了多少?读取你用自己的管理密钥获取的活动报告,以实时价格覆盖层使用的相同 slug 为键;将 OpenRouter 收取的费用显示在 Trazum 计算结果旁边,绝不合并;推理令牌会计数,但不会计入总量。
trazum from-openaiOpenAI 显示我的组织用了多少?读取你用自己的管理员密钥获取的 completions 用量报告;记录保留 OpenAI 自身的提示词内缓存数据结构;批处理行和非默认层级会被排除并标明;音频或图像令牌绝不按文本费率计价。
trazum from-anthropic服务商自身显示我的组织用了多少?读取你用自己的管理员密钥获取的用量报告;Trazum 从不持有凭据,拒绝按标准费率计算批处理行的费用,并且仅根据你编写的映射按工作区标注。
trazum from-helicone我的 Helicone 代理记录的请求花了多少钱?按实际响应的模型计价,而非按请求指定的模型,并统计模型替换次数。
trazum from-langsmith我的 LangSmith 跟踪记录中的模型调用花了多少钱?只统计 llm 运行,因为跟踪记录是树形结构,汇总会让相同令牌重复计费;并拒绝按发起调用的客户端类为调用计价。
trazum switch我们是否应该迁移这部分流量?何时迁移才划算?提供实测差额、明确声明的迁移成本,以及依据历史数据通过除法计算的盈亏平衡点——并为所需评估本身计价。
trazum ownrate我自托管的模型每百万令牌成本是多少?根据你声明的 GPU 费率和实测吞吐量推导,绝不猜测。
trazum benchTrazum 在这里运行有多快?运行环境是什么?每个工作负载运行一次,不作判断——变更前后都可以运行。
trazum write这个提示词应该怎么写?在我发送之前会产生多少费用?会提问;不会生成任何内容。
trazum rules有哪些规则?每条规则的作用是什么?
trazum feedback我应该在哪里反馈?你们会向我询问什么信息?不会发送任何内容。

快速开始

Node.js 20 或更高版本。 npx 可以下载软件包;本地分析无需 API 密钥。选择与你已有数据相匹配的任务:

npx @trazum/cli bill ./usage-export.jsonl
npx @trazum/cli optimize ./prompt.txt --cost

第一项读取已记录的使用情况。第二项估算提示词的变更; 其预计节省金额不是服务商的账单。请参阅 快速入门,了解可复现的示例和后续步骤。

前五分钟:trazum init

生成第一份报告后,可以选择在项目中运行 npx @trazum/cli init, 检查提示词和可用的使用情况、写入配置并识别一项发现。请阅读 init 会写入什么,以及拒绝覆盖什么。

CLI

使用 npm install -g @trazum/cli 安装,或继续使用 npx。 CLI 示例和配置涵盖令牌预算、 报告、CI 和价格覆盖。命令参考。

其余命令,详见专门指南

按任务查找命令。 trazum --help 会列出命令;trazum <command> --help 会说明其标志。

Web

打开 Playground试用示例 文件。本地开发时,运行 npm install、npm run build,然后运行 npm run dev:web。Web 设置和 API 用法示例。

登录(可选)

账户默认处于禁用状态。启用账户后,会添加一个保存的提示词库 和由部署运营方的数据库支持的分享链接。 账户设置和数据处理。

部署到 Vercel

部署说明、 环境变量和 N0 部署。

库

安装 @trazum/core,即可在应用程序中使用分析功能。 库使用示例和软件包 API。

语言

报告支持英语和西班牙语(使用 --locale es,或在 Web 上使用 浏览器语言)。语言区域设置只会改变报告,不会改变优化结果: 两种语言使用相同的优化文本、令牌数和建议 ID。完整说明——哪些内容会翻译、 哪些内容有意不翻译,以及报告和提示词如何各自选择语言——请参阅 命令参考。

连接自己的 LLM

可选的 LLM 步骤(--suggest、eval、route)会连接到你通过环境 配置的任意 OpenAI 兼容端点或原生端点,包括 vLLM、 Ollama、OpenRouter、Anthropic、Gemini、Bedrock 和 Vertex;密钥 绝不会被存储。配置、拒绝行为和 --pricing-live 覆盖项详见 命令参考。

每个按令牌计费的模型

Trazum 为 Anthropic、OpenAI、Google、Moonshot、DeepSeek、xAI 和 Mistral 定价:

每份报告都会说明价格信息有多旧——表格核验日期以及距今多少天—— 因为每个金额都来源于该列表,而仅有日期时,你还得拿它与今天的日期相减, 才能判断是否值得信任。超过 45 天后,报告会用一句话说明, 而不是让读者自行判断“旧”意味着什么。

这 7 家服务商分别发布价格信息,因此每家都有自己的核验日期, trazum models 会将它们打印出来;上方的标题数字取七家中最早的日期, 因为“这张表有多旧”这个问题,关注的是其中最旧的部分。

trazum optimize prompt.txt --model gpt-5 --calls 50000
trazum optimize prompt.txt --model kimi-k3
trazum models                      # the whole table, with each provider's terms

所有读取提示词的功能都已与服务商无关——规则、保护步骤、 --reorder、矛盾检测器和示例检测器都只处理文本。不同之处在于费用,而 费用并非只有一套数字:

缓存读取OpenAI(GPT-6.1 Sol 上为 5%)、Google、Mistral、Moonshot 的 Kimi K3 和 Anthropic(最高至 Opus 5 和 Sonnet 5)为输入价格的 10%;Moonshot 的 K2 系列为 17% 到 20%;xAI 按模型定价,Grok 4.5 为 15%,4.3 和 4.20 系列为 16%,Build 0.1 为 20%,4.6 和 4.7 为 25%。两家提供商的价格在代际之间有所变动:Anthropic 的 Opus 5.5 和 Sonnet 5.5 为 5%,Fable 5.1 和 Mythos 5.1 为 2.5%;DeepSeek V4.1 Flash 为 2%,V4 Pro 约为 3%,而 V3 为 10%
缓存写入Anthropic 以及 OpenAI 的 GPT-5.6 及后续模型为输入价格的 125%,缓存条目至少保留 30 分钟;Kimi K3 按 TTL 将其作为单独项目计费,与 Anthropic 类似,五分钟为 100%,一小时为 200%;早期 OpenAI 模型、Google、Kimi 的 K2 系列、DeepSeek 和 xAI 均为 100%;Mistral 未公布写入价格,也不会报告写入令牌
缓存最低长度**按模型而非提供商确定。**只有 Anthropic 存在 512 到 4,096 的范围;OpenAI 和 DeepSeek 为 1,024;Gemini 3.6 Flash、3.8 Flash 和 3.1 Pro 为 4,096,已停用的 Gemini 2.5 模型为 2,048;Moonshot、xAI 和 Mistral 均未公布,因此其缓存价格根据你的日志计算,需要最低长度的建议会保持沉默
缓存启用方式Anthropic 需要你标记前缀;OpenAI、Google、Moonshot、DeepSeek 和 xAI 会自动启用;Mistral 未作说明,因此 Trazum 不会针对它提供缓存建议
Batch APIAnthropic、OpenAI、Google 和 Mistral 为 50%;Kimi K2.7 Code 和 K2.6 优惠 40%;Grok 4.3 和 4.20 系列优惠 20%;DeepSeek、Kimi K3 和 xAI 的其他模型均无优惠
价格并非统一Claude Haiku 5.5、Gemini 3.1 Pro Preview、OpenAI 的 GPT-5.6 及后续模型,以及所有当前 Grok 模型,均按每次请求的提示词长度计费;超过 100,000、200,000 和 272,000 个令牌后价格更高,xAI 则从恰好 200,000 个令牌起提高价格;DeepSeek V4 按时段计费,非高峰时段半价。每次调用按其所属区间计费;用量报告中的汇总行按较高费率计费,并在旁边列出较低的价格。grok-4 于 2026-05-15 停用,此后一直按 Grok 4.3 的价格计费;跨越该日期的日志会按两种价格分别计费

**缓存最低长度这一行值得仔细看两遍,而它以前在这里写错了。**这张 表曾笼统地写着 “Anthropic 为 512”。Anthropic 的最低长度取决于 模型:Fable 5.1、Fable 5、Mythos 5.1、Mythos 5、Opus 5.5、Opus 5、 Sonnet 5.5 和 Haiku 5.5 为 512;Opus 4.8、Sonnet 5 和 Sonnet 4.6 为 1,024;Opus 4.7 为 2,048; Opus 4.6、Opus 4.5 和 Haiku 4.5 为 4,096。如果使用 Haiku 4.5 的读者相信了“512”,就会构建出短了八倍的前缀,并被告知缓存能省钱, 但实际根本不可能省下这笔钱——这是这个工具绝不能出错的方向。trazum models 会打印每个模型的真实数值,所有缓存建议也一直都使用该数值;错的只有这张表。

最后两行正是乘数必须移到模型层级的原因。把它们设为全局常量,会给没有 Batch API 的 提供商提供批处理折扣,也会给不支持缓存的模型提供缓存优惠——这些都是虚构的优惠,而这正是 这个工具绝不能输出的内容。没有 Batch API 的提供商现在不会得到批处理建议;即使你勾选了 方框,也不会显示折扣:batchEligible 描述的是工作,而不是提供商提供的服务。

**更便宜的模型,指的是更便宜的模型,而非换一家供应商。**降级建议只会推荐你当前 使用的提供商旗下的模型。降低一个档次只需改一行;更换供应商则是一次迁移,而这条建议 基于关键词启发式——它不该建议你更换供应商。

**不涵盖订阅账单。**API 令牌价格无法说明订阅账单会变化多少。Claude Code、Codex 和 Cursor 标识的是工具,而非付款方式;Trazum 在这些宿主中默认使用令牌价格。显式指定 --cost 表示要求按 API 价格估算情景,并不保证账单会节省。

优化代码中定义的提示词
trazum optimize src/prompts.ts --prompt support --diff

它会读取标记的提示词,不会改动文件。如果指向未标记的源文件,它会拒绝操作,因为把 TypeScript 当作散文来优化,不会让提示词变差——只会破坏代码,而 -o 会把结果写回并覆盖你的文件。如果文件中有多个标记的提示词,它会询问你要选哪一个,而不是直接采用第一个。

模型信息也来自代码,因此调用 OpenAI 的文件会按 OpenAI 计价。--model 和 trazum.config.json 仍然优先:命令行标志优先于配置,配置优先于检测结果,检测结果优先于内置默认值;内置默认值并不知道你使用的是哪家提供商。

这个提示词究竟会调用哪家提供商?

由于 Trazum 会为 7 家提供商计价,默认使用 Claude 就成了一个错误的数字:调用 OpenAI 的文件会按 Claude Opus 5 计费,却没有任何提示。trazum where 会读取代码中已有的信息。

trazum where src/prompts.ts
Running inside
  Claude Code (CLAUDECODE)
  Claude Code identifies the execution host only. Payment mode is unknown;
  token prices do not establish invoice savings.

Prompts in src/prompts.ts go to
  anthropic · Claude Sonnet 5
    line 2  model-literal: claude-sonnet-5
    line 1  sdk-import: @anthropic-ai/sdk

Priced as
  Claude Sonnet 5 (read from the source)

每个答案都会注明来源行。 证据分为四类,按优先级从高到低排列:trazum:prompt 标记上的 model=、带引号的模型 ID、基础 URL、SDK 导入——而且基础 URL 的优先级高于它指向的 SDK,因为 Moonshot、DeepSeek、xAI 和 Groq 都是通过 OpenAI SDK 调用的,只是使用了不同的 base_url。如果文件中指定了两家提供商,它会拒绝操作:悄悄选一家,会让人一个月都按错误的提供商做预算。检测遵循常见的优先级:命令行标志优先于配置,配置优先于检测结果,检测结果优先于内置默认值。

未提供文件时,它只会报告运行环境。环境变量只能识别工具,无法判断工作负载使用的是 API、订阅、点数还是本地模型:

运行环境根据环境推断的付款方式
Claude Code、Codex、Cursor未知
GitHub Actions、CI未知
VS Code、普通终端未知
Agent 执行环境默认显示 Token 数量,而非账单节省额

在 Claude Code、Codex 或 Cursor 中,Trazum 默认谨慎地显示 Token 数量。这是显示策略,并非对你的付款方式做出判断。使用 --cost 可查看 API 价格场景;这不是订阅账单:

What this buys on Claude Code
  Claude Code identifies the tool, not your payment mode. Tokens are shown
  by default; invoice savings are unknown.

  1,001 tokens back, every call.
  Context window: 12.4% → 2.1% of Claude Opus 5's 1,000,000 tokens — room the
  conversation gets instead.
  Pass --cost if this prompt is bound for a metered API.

上下文窗口才是 Agent 中真正的货币:系统提示词占用的每个 Token,都会挤占对话可用的空间。

在此视图中,只以省钱为卖点的建议会被隐藏。 它们能否减少账单,取决于你的付款方式。model-downgrade、batch-api、output-dominated 和 promo-pricing 会被过滤掉;缓存、上下文溢出、矛盾和冗余示例则会保留,因为延迟、余量和正确性依然重要。

退出选项很重要。 运行环境只能说明 Trazum 在哪里运行,而不是你的提示词会发送到哪里——有人可能在 Cursor 中编辑生产环境的提示词并希望查看金额,--cost 无需离开编辑器就能满足需求。任何环境下都可以使用 --tokens-only 强制切换到另一种视图。

钱究竟花在哪里:trazum profile

这是整个产品的核心命令:提供使用日志(或存放轮换日志的目录),它就会读取提供商实际收取的费用——支出分布、缓存是否物有所值、对话增长情况、生成到一半就被截断的回答,以及真正能降低账单的措施,并根据你自己的调用进行计价。它只读取计数,绝不读取内容;会话密钥用于分组,且绝不会打印出来;无法计价的模型会被列出,并排除在总额之外,而不是悄悄计入。

完整章节——记录格式、--against、--what-if、缓存事后分析、对话上限以及所有过滤条件——请参阅命令参考。

开篇就说明这适用于什么场景

每次 optimize 运行结束时都会显示同一句话,因为这正是该命令刚刚执行的操作:

  Shortening a prompt is the smallest lever there is: measured on an ordinary
  support prompt, the rules recover about 1% of a monthly bill. On a metered
  API the things that move 60% to 80% are which model the call goes to, the
  Batch API, prompt caching, and what re-sending the conversation costs — and
  "trazum profile <usage.jsonl>" prices all four from what the provider
  actually charged.

如果一个工具的第一个命令只报告 1%,却对其余 99% 知之甚少,那它就没有如实告诉你它知道什么。

令牌计数

无需依赖项的估算器,按不同文本类型提供误差范围——CJK 为 ±4%、拉丁文正文为 ±6%、代码和标记语言为 ±26%、表格数字为 ±33%——基于 10 种语言的 47 个样本测得,各类别中的最大误差分别为 3.2%、5.6%、25.1% 和 32.5%。它能感知语言差异,因为单一的英语除数在德语上的误差达 37%。--exact-tokens 可通过服务提供商免费的计数端点消除疑虑。测量详情见命令参考。

坦诚说明局限性

  • 节省金额是预测值,不是账单金额。 它根据你描述的场景(每月调用次数、输出令牌数)计算,使用的是 packages/core/src/pricing.ts 中的价格表。预算前请检查该表:PRICING_LAST_REVIEWED 会告诉你上次更新的时间。
  • 计算时输出令牌数保持不变。 更短的提示词通常会产生稍短的回答,但这取决于任务,无法保证。显示的节省金额仅来自输入部分。
  • 模型推荐基于关键词启发式规则,并非对回答质量的判断。在生产环境中降低模型档位之前,请先用自己的评估衡量差异。
  • 激进级别可能会改变语气细微差别。 它会删除强调语、保留意见的表达和自我验证请求。应用前请查看差异。
  • Amazon Bedrock 和 Vertex AI 的价格由各合作伙伴设定,不在此价格表中。

目录结构

packages/core/     dependency-free library (rules, tokens, pricing, LLM)
  src/segment.ts     isolation of code, URLs, emails, templates and XML
  src/rules.ts       deterministic rules engine
  src/phrases.ts     phrase dictionaries (data, multilingual)
  src/pricing.ts     model and pricing catalogue
  src/structure.ts   contradictions and repeated few-shot examples
  src/similarity.ts  shared near-duplicate scoring
  src/advisories.ts  caching, batch, model and context advisories
  src/reorder.ts     moving blocks in front of the first placeholder
  src/compare.ts     comparePrompts — after minus before, positive is worse
  src/profile.ts     the measurements behind `rank`, and no score
  src/suggest.ts     phrase-level rewrites, and the checks each one passes
  src/promptfoo.ts   exporting a suite for somebody else's assertions
  src/extract.ts     prompts marked inside source files
  src/detect.ts      which provider a file actually calls
  src/llm.ts         pluggable providers and safety checks
  src/net.ts         endpoint validation, the allowlist, safe fetch defaults
  src/i18n/          message catalogues (report language)
  src/shared-prefix.ts  preambles that could share a cache entry and do not
  src/usage.ts       the usage-log profiler: where the money actually went
  src/levers.ts      what would move the bill, priced from tokens that were billed
  src/conversation.ts   what re-sending the conversation costs, a ceiling
  src/output-shape.ts   where the output spend concentrates: tail or task
  src/prune.ts       leave-one-out over few-shot examples, against the noise floor
  src/aws-sigv4.ts   Bedrock's signature, by hand, on WebCrypto
  src/gcp-auth.ts    Vertex's service-account JWT, same reasoning
  src/openrouter.ts  live prices, with the unknowns marked unknown
packages/cli/      dependency-free CLI
  src/markdown.ts    the report as markdown, and the three escapers
  src/git.ts         the only module here that runs another program
packages/mcp/      dependency-free MCP server — twelve tools over stdio in this checkout
  src/rpc.ts         JSON-RPC 2.0 by hand; the invariant beat the SDK
  src/tools.ts       the whole surface an agent can reach, in one file
packages/tokenizer-openai/   optional exact counter, and the only dependency here
  src/index.ts       OpenAI's own ranks; refuses a model it has no table for
apps/web/          Next.js (App Router) — Optimise, Compare, Your bill, Library
action/            the packaged GitHub Action that comments on pull requests
scripts/           release notes, the token-band harness, rollback recovery
  draw-architecture.mjs  redraws the picture above from the workspace globs
  build-wiki.mjs     rebuilds wiki/ from this file, verbatim, section by section
wiki/              the GitHub wiki, generated — every page is a section of a
                   document above, so there is nothing here to keep in sync

更新价格

packages/core/src/pricing.ts 是唯一可信来源,并会在标明的日期审核;覆盖配置(--pricing)和 OpenRouter 实时数据源(--pricing-live)无需升级即可修正价格。操作步骤及其保护措施见命令参考。

分析与隐私

有两种配置,情况各不相同。 此处说明两者,是因为简短版的说法有误:在提示词库发布并加入相关条件后的多个版本中,本节曾毫无保留地声称提示词不会存储在任何服务器上。

  • 未登录——默认状态。 关于提示词的任何内容都不会写入服务器。优化过程是同步的:响应中会携带结果,历史记录保存在浏览器的 localStorage 中。未配置 TRAZUM_GITHUB_CLIENT_ID 的部署会采用此配置,访客也无法开启登录功能。
  • 已登录并使用提示词库。 保存提示词会将其文本写入 Postgres——trazum_prompt_versions.text,每个版本一行,因为无法查看昨天措辞的库就称不上库。只有在你保存后才会写入,数据库由运营方持有,而非我们持有。docs/accounts.md 介绍了完整的账户信息,包括架构启用的行级安全机制,以及使用 ENABLE 而非 FORCE 的原因。
  • 分析功能(PostHog)默认关闭,且绝不发送提示词内容——只发送汇总指标(缩减百分比、级别、模型、区域设置)。只有运营方设置 NEXT_PUBLIC_POSTHOG_KEY 后才会启用,同时也会将分析源添加到 Content-Security-Policy 中;未设置密钥时,策略保持为 connect-src 'self'。启用后,只会发送应用明确指定的事件:按名称关闭了自动捕获、自动页面浏览、会话录制、热图和问卷调查;不会在 Cookie 中保存任何内容;事件携带的所有 URL 在离开浏览器前都会将分享令牌替换为 /c/:token,并移除查询参数。
  • 在界面中输入的 LLM 密钥仅用于当前请求,随后即被丢弃;既不会记录,也不会持久化。

文档的其他部分

本 README 介绍项目概况。教程、集成指南和参考资料各有专页。docs/README.md 是索引,按你来此想做的事分类,而非按文件名分类:选择工具、使用工具、扩展工具、维护工具或报告问题。

你最可能直接需要的四份文档:

  • docs/doctrine.md — 本产品绝不妥协的原则,每条原则都是先吃过亏才总结出来的。它解释了为什么这里展示的数字值得一读。
  • docs/our-own-medicine.md — 将同一标准应用于本项目:它拒绝发布过什么、曾经犯过什么错以及持续了多久,还有哪些关于自身的事它无法说明。
  • docs/usage-logs.md — Trazum 能从你的日志中读取什么,以及开始记录每个可选字段后能解锁哪些功能。
  • docs/json-output.md — 逐字段介绍每份机器可读文档,以及各自包含的来源信息。

路线图与贡献

ROADMAP.md 介绍计划中的内容、原因,以及一路走来的历史,按时间从早到晚排列。 CONTRIBUTING.md 介绍如何添加规则或语言,docs/authoring-rules.md 则完整讲解了规则编写流程。 VERSIONING.md 介绍哪些内容属于公共 API。 CODE_OF_CONDUCT.md 介绍所有参与者应遵守的准则,并坦诚说明单人维护项目能做出哪些承诺。 SUPPORT.md 介绍哪些问题会得到回复以及回复速度; SECURITY.md 介绍如何私下报告漏洞。

评论

支持 Markdown

第一次接触 MCP?

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

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