关于 trazum
Trazum 是用于分析 AI 使用成本并评估提示词、模型和工作流变更的本地分析器与 MCP 服务。其 spend_guard 可在调用发生前,根据已配置的限额和使用日志评估拟议调用。
主要功能
- 01分析本地使用日志与提示词
- 02估算费用并标出数据缺口
- 03排列缓存和模型调整机会
- 04比较计划与实际使用情况
- 05通过确定性规则精简提示词
- 06为调用检查设置支出限额
适用场景
- 01按项目和模型查看使用情况
- 02评估提示词或模型变更
- 03支出前检查拟议调用
- 04比较策略调整前后的使用量
MCP 相关
MCP 服务提供 spend_guard,根据配置限额和现有使用日志,对拟议调用返回 yes、no 或 cannot-tell。MCP 客户端也可查询 Trazum 分析结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
7收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| label | string | 否 | 此次调用所属的工作负载,用于按标签设置的上限。 |
| model | string | 是 | 此次调用将使用的模型 ID。可调用 list_models 查看已知模型。 |
| waive | array | 否 | 来自 trazum.config.json 的豁免列表 — [{"gate": "limits.sessionUsd", "reason": "...", "until": "YYYY-MM-DD"}]。豁免的上限仍会报告其测量值,但超过上限时会附带豁免信息并回答 yes:豁免情况会保留在记录中。按配置文件的规则验证。 |
| limits | object | 否 | 来自 trazum.config.json 的限制策略 — {"dayUsd": n, "sessionUsd": n, "byLabel": {"name": n}},金额须为正数。网关和 trazum serve 使用相同的函数进行判定,因此三种入口不会产生不一致。按配置文件的规则验证:未知键或非正数上限将被拒绝并说明原因。 |
| session | string | 否 | 此次调用所属的对话,用于按会话设置的上限。用于判定,不会回显。 |
| limitUsd | number | 否 | 用于判断的预算。省略此项时,答案为 cannot-tell:此工具报告相对于人类设定策略的位置,绝不会自行编造策略。 |
| position | object | 否 | 按范围统计的实测支出,来自你自己的使用日志,绝不猜测。省略某个范围时,该范围未测量,其上限的回答为 cannot-tell,而不是「低于上限」。 |
| position.dayUsd | number | 否 | |
| position.labelUsd | number | 否 | |
| position.sessionUsd | number | 否 | |
| consumedUsd | number | 否 | 截至目前的实测支出,单位为美元,来自账单,绝不猜测。省略此项时,答案为 cannot-tell,而不是未经测量的肯定答复。 |
| inputTokens | integer | 是 | 此次调用将发送的输入 token 数,包括任何缓存内容。 |
| outputTokens | integer | 否 | 预期返回的输出 token 数。保留为零时,答案仅对输入进行定价,并会附上你提供的数值以示说明。 |
| batchEligible | boolean | 否 | 此工作是否可以等到批处理时段。只有你知道这一点,因此只有你确认后才会提供批处理替代方案。 |
详细介绍
Trazum
了解你的 AI 开支,决定要做哪些调整。
找出 AI 使用费用从何而来,选择一项调整,并检查结果。 Trazum 会分析本地使用日志和提示词,评估缓存、模型调整等优化机会, 并将估算值与实测结果分开呈现。
开源 · 本地分析 · 入门无需提供商密钥
从这里开始:一条命令,无需全局安装
需要 Node.js 20 或更高版本。npx 可能会从 npm 下载 Trazum。
npx @trazum/cli bill
示例数据来自 examples/claude-projects,
并非客户结果。根据 CLI 输出生成。
如果未指定路径,bill 会读取本地 Claude Code 对话记录,并按项目和模型
汇总结果。如果使用订阅,这里显示的是 API 等效成本,而不是
你实际支付的费用。 无法计价的模型会作为缺口报告。本地分析
不会上传你的文件。
有受支持的用量导出文件?传入其路径:
npx @trazum/cli bill ./usage-export.jsonl
将报告转化为决策
对于按 API 用量付费的团队,关键问题是下一步该做什么调整。 从最大的一项工作负载入手,查看一项发现背后的假设, 并在更换模型或提示词之前评估质量。
- 了解用量:
bill会显示已记录的成本和覆盖缺口。 - 选择一项调整:
plan会根据标准化的用量日志对优化机会进行排序。 - 检查结果:
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,每次发布都会更新该条目。
该链接会在页面中运行 CLI 的纯子集,使用已加载的示例文件,并调用与终端相同的 @trazum/core 函数。你粘贴的任何内容都不会离开浏览器。
真实输出记录。请看最后两行:规则每月节省了 $24.00,而上方的建议价值为 $528.40,高出 22 倍。这个差距就是这个工具存在的全部理由。
由 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 门控 或 网关决策 |
| 集成 Trazum | CLI、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 history | 20 份报告共同揭示了哪些单独两份报告无法揭示的信息?呈现趋势,不做预测。 |
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 reconcile | Trazum 的计算结果是否与服务商的收费相符?并列显示两个数字,绝不合并,并将无法解释的差额单独列出。 |
trazum bill | 这一切总共花了多少钱?一个入口:读取转换器支持的任意文件或目录,根据每个文件自身的文本识别其格式,进行转换和计价,最后生成收据。没有任何格式匹配的文件会被标出,绝不猜测。 |
trazum from-openrouter | OpenRouter 显示我用了多少?读取你用自己的管理密钥获取的活动报告,以实时价格覆盖层使用的相同 slug 为键;将 OpenRouter 收取的费用显示在 Trazum 计算结果旁边,绝不合并;推理令牌会计数,但不会计入总量。 |
trazum from-openai | OpenAI 显示我的组织用了多少?读取你用自己的管理员密钥获取的 completions 用量报告;记录保留 OpenAI 自身的提示词内缓存数据结构;批处理行和非默认层级会被排除并标明;音频或图像令牌绝不按文本费率计价。 |
trazum from-anthropic | 服务商自身显示我的组织用了多少?读取你用自己的管理员密钥获取的用量报告;Trazum 从不持有凭据,拒绝按标准费率计算批处理行的费用,并且仅根据你编写的映射按工作区标注。 |
trazum from-helicone | 我的 Helicone 代理记录的请求花了多少钱?按实际响应的模型计价,而非按请求指定的模型,并统计模型替换次数。 |
trazum from-langsmith | 我的 LangSmith 跟踪记录中的模型调用花了多少钱?只统计 llm 运行,因为跟踪记录是树形结构,汇总会让相同令牌重复计费;并拒绝按发起调用的客户端类为调用计价。 |
trazum switch | 我们是否应该迁移这部分流量?何时迁移才划算?提供实测差额、明确声明的迁移成本,以及依据历史数据通过除法计算的盈亏平衡点——并为所需评估本身计价。 |
trazum ownrate | 我自托管的模型每百万令牌成本是多少?根据你声明的 GPU 费率和实测吞吐量推导,绝不猜测。 |
trazum bench | Trazum 在这里运行有多快?运行环境是什么?每个工作负载运行一次,不作判断——变更前后都可以运行。 |
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
库
安装 @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 API | Anthropic、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 介绍如何私下报告漏洞。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。