mcpField
T
turntax

turntax

本地服务
torutdev.github.io开发工具05 天前更新

关于 turntax

turntax 是命令行和浏览器工具,可测量不同编码 Agent 每轮读取仓库指令文件产生的 token 成本。它会列出潜在节省并提供带保护的修复,支持先预览再应用更改。

主要功能

  1. 01测量各 Agent 每轮的指令文件 token
  2. 02按模型统计 token 并估算成本
  3. 03发现重复、冲突和失效引用
  4. 04建议缩小作用范围或精简指令文件
  5. 05预览并应用选定的安全修复
  6. 06检查本地目录或公开 GitHub 仓库

适用场景

  1. 01估算编码 Agent 的持续上下文成本
  2. 02查找不必要加载的指令文件
  3. 03修改仓库文件前审阅修复提议
  4. 04比较指定模型下的指令文件成本

MCP 相关

README 将 turntax 描述为 MCP 服务审计工具:它读取 Agent 的 MCP 配置,并列出各 Agent 启动的服务及其工具定义,以纳入上下文成本分析。

配置

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

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

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

安装包
npmturntax0.7.2

工具

2

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

参数类型必填说明
pathstring否要审计的文件夹(默认:项目文件夹)。该文件夹中的 turntax.config.json 会生效。
toolsarray否要报告的 Agent(默认:包含文件的 Agent)。
modelsarray否要定价的模型(默认:claude-sonnet-5.5、gpt-6.1-sol、gemini-3.8-flash)。

详细介绍

turntax

编码 Agent 每一轮都会重新发送其指令文件。turntax 会测量每个会读取这些文件的 Agent 在某个代码库中每轮固定产生的成本,并指出可以从哪里精简。

npx turntax

在浏览器中试用,无需上传任何内容:https://torutdev.github.io/turntax/ — 拖入一个文件夹,或输入一个公开的 GitHub 代码库。像 https://torutdev.github.io/turntax/?repo=owner/name 这样的链接会直接打开该代码库的报告。

Agent 指令文件现状:看看 turntax 在 100 个热门代码库中发现了什么;每月发布一期新版,附带固定提交版本和复现脚本(scripts/state-of.mjs)。

只需一条命令,即可设置 GitHub Action 和配置文件:

npx turntax init

支持的 Agent

每个 Agent 的文档加载规则决定了每轮会发送哪些内容、Agent 在某个文件夹中工作或访问匹配文件时才会加载哪些内容,以及哪些内容会被忽略。

Agent从仓库读取的文件
Aider.aider.conf.yml 中 read: 下列出的文件(仅当列入其中或通过 --read 传入时才读取 CONVENTIONS.md)
AmpAGENTS.md(或 AGENT.md / CLAUDE.md)、嵌套的 AGENTS.md、通过 @ 提及的文件、.agents/skills、.claude/skills
Augment Code各级目录中的 AGENTS.md 和 CLAUDE.md、.augment-guidelines、按 type 分类的 .augment/rules/、.augment、.claude、.agents 中的技能
Claude CodeCLAUDE.md、CLAUDE.local.md、.claude/rules、技能、命令、子 Agent;没有 CLAUDE.md 时读取 AGENTS.md
Cline.clinerules/、.cline/rules/、.cline、.clinerules、.claude 中的技能
Continue.continue/rules/
Cursor.cursor/rules/*.mdc、.cursorrules、AGENTS.md、CLAUDE.md、.agents、.cursor、.claude、.codex 中的技能
Devin Local / Devin CLI各级目录中的 AGENTS.md、AGENTS.local.md、AGENT.md、.windsurfrules、CLAUDE.md、.devin/rules/、.windsurf/rules/、.cursor/rules/、技能
Factory DroidAGENTS.md / CLAUDE.md(也包括 .factory、.agents、.agent 中的文件)、DESIGN.md、.factory/skills、.agents/skills、.factory/droids
Gemini CLIGEMINI.md、.agents 和 .gemini 中的技能
GitHub Copilot.github/copilot-instructions.md、.github/instructions/、AGENTS.md、CLAUDE.md、.claude/rules、.github、.claude、.agents 中的技能(VS Code Local harness 默认设置)
Goose.goosehints、AGENTS.md、通过 @ 引入的文件、.agents、.goose、.claude 中的技能
Google Jules根目录下的 AGENTS.md
JetBrains Junie.junie/AGENTS.md,或 AGENTS.md 与 .junie/rules/,或 .junie/guidelines;.junie、.agents 中的技能
Kilo Code以下文件中的第一个:AGENTS.md、AGENT.md、CLAUDE.md、CONTEXT.md、.kilo/rules、.kilocode/rules、模式规则、.kilocoderules、技能
Kiro.kiro/steering/、AGENTS.md(包括嵌套文件,每轮都会读取)、.kiro/skills
OpenAI CodexAGENTS.md、AGENTS.override.md、.agents/skills
OpenCodeAGENTS.md;若不存在,则读取 CLAUDE.md;.opencode、.claude、.agents 中的技能
Roo Code.roo/rules/、.roo/rules-{mode}/、.roorules、AGENTS.md、.roo、.agents 中的技能
TRAE.trae/rules/(alwaysApply、globs、description;三个文件夹层级)、.trae/skills
WarpWARP.md;否则读取 AGENTS.md;.agents、.warp、.claude 及其他七个文件夹中的技能
Windsurf Cascade.devin/rules/、.windsurf/rules/、.windsurfrules、AGENTS.md、技能(旧版 Agent;新对话使用 Devin Local)
Zed以下文件中的第一个:.rules、.cursorrules、.windsurfrules、.clinerules、.github/copilot-instructions.md、AGENT.md、AGENTS.md、CLAUDE.md、GEMINI.md;.agents/skills

如果 Agent 从两个文件夹读取同名技能,则只计为一个,并按该 Agent 文档所述的顺序(或该 Agent 的假定顺序)计算。

加载完全相同文件的 Agent 在报告中共用一行(仅作为 /command 加载、每轮不产生费用的文件,不会拆分成多行):

always  o200k/turn  on-demand  model                tokens/turn  counted by                   100 turns  cached   agents
4       272         53         (no selected model)                                                                Claude Code
1       63          0          GPT-6.1 Sol          63           estimate (o200k_base proxy)  $0.01      $0.0006  OpenAI Codex, Roo Code, Kiro, JetBrains Junie
1       17          0          (no selected model)                                                                Gemini CLI
5       311         59         GPT-6.1 Sol          311          estimate (o200k_base proxy)  $0.06      $0.0031  Cursor
4       307         55         GPT-6.1 Sol          307          estimate (o200k_base proxy)  $0.06      $0.0031  GitHub Copilot
2       75          0          GPT-6.1 Sol          75           estimate (o200k_base proxy)  $0.01      $0.0008  Windsurf Cascade
2       21          32         GPT-6.1 Sol          21           estimate (o200k_base proxy)  $0.0042    $0.0002  Cline
1       11          0          GPT-6.1 Sol          11           estimate (o200k_base proxy)  $0.0022    $0.0001  Zed
3       84          32         GPT-6.1 Sol          84           estimate (o200k_base proxy)  $0.02      $0.0008  Goose, OpenCode, Kilo Code
3       84          51         GPT-6.1 Sol          84           estimate (o200k_base proxy)  $0.02      $0.0008  Amp
3       108         32         GPT-6.1 Sol          108          estimate (o200k_base proxy)  $0.02      $0.0011  Warp
2       282         19         GPT-6.1 Sol          282          estimate (o200k_base proxy)  $0.06      $0.0028  Factory Droid
4       303         51         GPT-6.1 Sol          303          estimate (o200k_base proxy)  $0.06      $0.0030  Augment Code
1       63          0          (no selected model)                                                                Google Jules
7       330         69         GPT-6.1 Sol          330          estimate (o200k_base proxy)  $0.07      $0.0033  Devin Local / Devin CLI

Advice (savings are estimates in o200k tokens per turn)
  HIGH duplicate CLAUDE.md, AGENTS.md [saves ~48 tokens/turn]
    3 identical lines are loaded twice every turn by cursor, copilot, factory-droid, augment, devin. Keep them in one file.
  HIGH contradiction AGENTS.md, CLAUDE.md [saves ~11 tokens/turn]
    Conflicting package manager: "Always use npm for installs and scripts in this repository." (AGENTS.md:3) vs "Always use pnpm for installs and scripts in this repository." (CLAUDE.md:5). (Removing the outdated line.)
  MEDIUM scopable-section CLAUDE.md:12 [saves ~128 tokens/turn]
    Section "API package" is mostly about packages/api/. Move it to packages/api/AGENTS.md (or CLAUDE.md), a path-scoped rule, or an instructions file ...

(使用 --models gpt-6.1-sol 对 test/fixtures/mixed 的输出摘录。)

统计内容及方式

模型系列令牌统计方式标签
OpenAI GPT-5.x、gpt-oss使用 o200k_base 离线统计(OpenAI 的 tiktoken 将这些模型映射到此编码)精确
OpenAI GPT-6.x使用 o200k_base 离线统计;OpenAI 尚未发布更新的编码估算
Claude仅使用 Anthropic 的 count_tokens API,需提供密钥并使用 --claude-apiAPI 计数
Gemini仅使用 Google 的 countTokens API,需提供密钥并使用 --gemini-apiAPI 计数

Claude 的分词器并未公开,而且 Anthropic 的文档指出,对于相同文本,较新的 Claude 模型生成的令牌数明显多于较旧的模型。turntax 绝不会将 OpenAI 的统计结果显示为 Claude 或 Gemini 的统计结果:没有密钥时,这些行会显示“需要 API 密钥”。o200k 列是所有文件都标注的参考统计值。

每 N 轮的成本 = 每轮令牌数 × N × 输入价格。“缓存”列假设每轮都从提示词缓存读取上下文。价格来自带有每个模型来源链接的注明日期的表格(turntax --list-models);使用 --prices my-prices.json 可使用自定义价格。

查看 docs/how-it-counts.md,了解各 Agent 的加载规则及其来源。

建议

所有检查结果都是确定性的。每项都会显示每轮预计节省的 o200k 令牌数。

  • duplicate:两个文件中存在相同行。仅当某个工具同时加载这两个文件时,每轮才能节省令牌;否则会标记为偏移风险。
  • contradiction:同一 Agent 遇到相互冲突的规则(包管理器、缩进、引号、分号)。
  • scopable-section:某个章节主要与一个目录相关,可以仅在该目录下加载(嵌套文件、路径范围规则、applyTo)。
  • oversized-section:内容较长且始终加载的章节,可以改为按需加载的技能。
  • size-limit:文档规定的限制(CLAUDE.md 不超过 200 行、Codex 的 32 KiB 截断限制、Windsurf 每条规则不超过 12,000 个字符且全局规则不超过 6,000 个字符、Cursor 不超过 500 行、Factory 不超过 80,000 个字符、Augment 不超过 49,512 个字符)。
  • misconfigured:工具会忽略的文件,例如 .cursor/rules 中的 .md 文件,或缺少 trigger 的 Windsurf 规则。
  • stale-reference:已不存在的引用文件或 npm run 脚本。
  • non-english:非英语章节。令牌倍数仅根据你提供的英文版本(--english CLAUDE.md=CLAUDE.en.md)进行衡量;或者,如果你选择启用,也可以使用 Claude 翻译(--translate)。

修复

npx turntax --fix            # print a diff of the safe fixes; nothing is changed
npx turntax --fix --write    # apply them

--fix 会处理四类建议:

  • duplicate:如果每个会读取某个文件的 Agent,每轮也会从另一个文件读取相同内容,则从该文件中删除这些行。技能、命令和子 Agent 文件会保持完整。
  • scopable-section:将某个章节移至与其内容相关的文件夹:移至该文件夹下同名文件(packages/api/CLAUDE.md)、嵌套的 AGENTS.md,或带有 paths: 的 Claude Code 规则。相关文件夹必须已存在;带有 @imports 或相对链接的章节会保留原处。章节及其子章节会一起移动。
  • oversized-section:将较长的流程(至少达到 --section-tokens,默认值为 600 个 token;其标题需指明发布、部署、设置或类似流程,或者内容主要由编号步骤组成;每个子章节也必须符合条件)移入新技能:Claude Code 使用 .claude/skills/<name>/SKILL.md,Codex 使用 .agents/skills/<name>/SKILL.md,并在原处保留标题和一行指引。每轮只会加载技能名称和描述。现在许多 Agent 会读取其中一个或两个文件夹,但并非所有 Agent 都会读取(例如,Zed 只读取 .agents/skills),因此默认情况下常会拒绝此修复;--tools 可将检查范围限制为你使用的 Agent。
  • misconfigured:将 .cursor/rules 中的 .md 文件重命名为 .mdc。

保留修复前,会在应用更改后重新分类文件:每个 Agent 仍必须读取之前读取的每一行,包括通过 @imports 引用的文件,且读取频率不能降低。移动的文本除外:移入文件夹的章节可能只有在 Agent 在该文件夹中工作时才会加载;移入技能的流程则只有在使用该技能时才会加载。否则会跳过修复并打印原因。移动的章节可能会被之前未读取该章节的 Agent 读取(嵌套的 AGENTS.md 会被比 CLAUDE.md 更多的 Agent 读取);摘要会列出这些 Agent。默认情况下,检查会涵盖所有受支持的 Agent,因此 AGENTS.md 中的章节通常会保留原处,因为有些 Agent 只读取根目录下的文件。--tools codex,claude-code 可将检查范围限制为你使用的 Agent。

预览时,差异会输出到 stdout,可与 git apply 配合使用;摘要会输出到 stderr。使用 --write 时,摘要会输出到 stdout。--write 会检查文件自读取后是否发生更改;若有更改,则不会写入任何内容。符号链接文件、其目标,以及符号链接文件夹中的文件均不会被修改。矛盾和过时的引用需要由人来判断,因此 --fix 不会处理。也用作供人阅读文档的文件(DESIGN.md、CONTEXT.md、agents.md、Agents.md、Claude.md)永远不会被修改,也不会创建仅大小写与其中某个文件名不同的文件。

网页会为你加载的任何仓库显示相同的修复,并提供可下载的 fix.patch。

配置文件

将默认值放在被审计文件夹中的 turntax.config.json 内(或传入 --config <file>)。命令行标志的优先级高于配置文件。

{
  "tools": ["claude-code", "codex", "cursor"],
  "models": ["claude-sonnet-5.5", "gpt-6.1-sol"],
  "maxTokens": 8000,
  "maxIncrease": 500,
  "ignore": ["docs/agents/archive/", "**/*.draft.md"]
}

键包括:tools、models、turns、maxTokens、maxIncrease(仅与 --compare 或 --baseline 配合时生效)、sectionTokens 和 ignore:要排除的指令文件 glob,路径相对于被审计文件夹(文件夹名称内的 * 和 ?、跨文件夹匹配的 **,以及表示整个文件夹的尾随 /)。被忽略的文件也会从 --compare 中排除,且永远不会被 --fix 修改。未知的键和 ID 会导致错误。

MCP 服务

每个由 Agent 启动的 MCP 服务都会将其工具定义(名称、描述、输入架构)加入上下文。turntax 会读取 Agent 的 MCP 配置,并列出每个 Agent 启动的服务:

Agent项目配置用户配置
Claude Code.mcp.json~/.claude.json(用户级和按项目配置的服务)
Cursor.cursor/mcp.json~/.cursor/mcp.json
GitHub Copilot.mcp.json、.github/mcp.json、.vscode/mcp.json(已弃用)~/.copilot/mcp-config.json
Gemini CLI.gemini/settings.json~/.gemini/settings.json
Kiro.kiro/settings/mcp.json~/.kiro/settings/mcp.json
Roo Code.roo/mcp.json
OpenAI Codex.codex/config.toml(受信任的项目)~/.codex/config.toml
OpenCodeopencode.json、opencode.jsonc~/.config/opencode/opencode.json
Zed.zed/settings.json
Windsurf Cascade~/.config/devin/mcp_config.json
Devin Local / Devin CLI.devin/mcp_config.json、.devin/mcp_config.local.json;导入 .mcp.json、.cursor/mcp.json、opencode.json、.zed/settings.json~/.config/devin/mcp_config.json;导入 Claude Code、Windsurf、OpenCode 和 Zed 的用户配置
Augment Code.augment/settings.json、.augment/settings.local.json~/.augment/settings.json
Factory Droid.factory/mcp.json~/.factory/mcp.json
Kilo Codekilo.json(c)、.kilo/kilo.json(c)、opencode.json(c)~/.config/kilo/kilo.json(c)
Warp(项目配置不会自行启动)~/.warp/.mcp.json

如果某个 Agent 在多个配置中找到同名服务,则根据该 Agent 文档规定的优先级(或按配置顺序,标记为推定)只计数一次;其他副本会列为已覆盖。配置中的工具筛选器(Codex 的 enabled_tools/disabled_tools、Gemini 的 includeTools/excludeTools、Factory 的 enabledTools/disabledTools、Copilot 的 tools,以及 Kiro、Roo 和 Windsurf 的 disabledTools)都会应用。

统计工具定义需要启动服务,因此这项功能默认不启用:

npx turntax --mcp

--mcp 会使用配置中的命令启动每个 stdio 服务(在仓库文件夹中;环境变量会像 Agent 自身一样展开到仓库配置定义的命令、URL 和标头中),并连接到可流式传输的 HTTP 服务,调用 tools/list,再将定义作为 JSON 使用 o200k 进行计数。多个 Agent 共用的服务只启动一次。配置中的环境变量(${VAR}、${VAR:-default}、${env:VAR}、{env:VAR}、${workspaceFolder})会被展开;需要 VS Code 的 ${input:...} 提示、使用旧版 SSE 或 WebSocket 的服务,以及发生故障或超时的服务(--mcp-timeout,默认值为 30 s)会连同原因一并列出,且不会计入统计。

Claude Code 默认会延迟加载 MCP 工具定义(工具搜索):在使用工具之前,只有工具名称会进入上下文,因此该行只统计名称,并另行显示完整大小。设置了 alwaysLoad: true 的服务,或标记了 _meta["anthropic/alwaysLoad"] 的工具,会按完整定义计数。会话开始时会加载服务说明;Claude Code(按其行为截断至 4,096 个字符)、Gemini CLI、Codex 和 Kilo Code 的服务说明也会计入,因为其文档说明这些内容会进入上下文。

MCP 令牌数是基于 o200k 的估算值,不计入模型成本列。

用户级文件

在每个项目中,Agent 也会读取你主目录中的指令文件。--include-user 会将它们添加到单独的 user/turn 列和 total 中:

npx turntax --include-user

它只读取 Agent 文档中列出的位置(各 Agent 的完整列表见 docs/how-it-counts.md):例如 ~/.claude/、~/.codex/AGENTS.md、~/.agents/、~/.gemini/、~/.copilot/、~/.cursor/skills、Windsurf 和 Devin 的 global_rules.md 与 ~/.config/devin/、Cline 的全局规则、~/.roo/、~/.kiro/、~/.junie/、~/.config/goose/、~/.config/amp/、~/.config/opencode/、~/.config/zed/AGENTS.md、~/.factory/、~/.augment/、~/.config/kilo/、~/.warp/ 和 ~/.trae/skills,以及上述用户 MCP 配置。系统会报告用户级文件与仓库文件之间的冲突和重复项。用户级文件不会计入徽章或 --max-tokens,因此结果不会因运行者而异。

与基线比较

npx turntax --compare origin/main            # instruction files at a git ref, read with git show
npx turntax --json --out before.json         # or save a report ...
npx turntax --baseline before.json           # ... and compare with it later
npx turntax --compare origin/main --max-increase 200   # exit 1 when any agent grows by more than 200 tokens

比较范围包括仓库指令文件(o200k),按 Agent 和文件分别统计,并列出新增或移除的 MCP 服务。它绝不会修改工作树。

GitHub Action

该仓库也提供一个 Action;运行 npx turntax init 会为你写入此工作流和一个 turntax.config.json。在拉取请求中,它会与基分支进行比较,发布一条评论(每次推送都会更新),将报告写入作业摘要,并在拉取请求中已更改文件的相关行上标记发现的问题(GitHub 每个步骤最多显示 10 条警告和 10 条提示):

name: turntax
on: pull_request
permissions:
  contents: read
  pull-requests: write
jobs:
  turntax:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: TorutDev/[email protected]
        with:
          max-increase: 500      # optional: fail when an agent grows by more than 500 tokens per turn
          # max-tokens: 8000     # optional: absolute budget
          # args: --tools claude-code,cursor
          # annotations: false   # optional: no findings on the changed lines

评论开头会以表格列出各 Agent 和各文件的变更情况。当 --fix 有安全修复时,评论会说明修复数量和可节省的 token 数,并折叠显示差异;完整报告会在下方折叠显示。仓库中的 turntax.config.json 也会被读取。来自复刻仓库的拉取请求会获得只读令牌,因此会跳过评论步骤;作业摘要仍会包含报告。

选项

turntax [path]
  --tools <ids>             agents to report (default: every agent that reads a file); see --help
  --models <ids>            see --list-models (default: claude-sonnet-5.5, gpt-6.1-sol, gemini-3.8-flash)
  --turns <n>               cost projection (default 100)
  --json | --md | --badge   output format (default: terminal table)
  --pr-comment              Markdown for a pull request comment (change first, fixes and full report folded)
  --annotations             GitHub Actions annotations, one per finding (--path-prefix <dir> for a subfolder)
  --out <file>              write the output to a file
  --max-tokens <n>          exit 1 when any tool loads more than n o200k tokens per turn (CI gate)
  --include-user            add user-level files and MCP servers from your home directory
  --mcp                     start the configured MCP servers and count their tool definitions
  --mcp-timeout <s>         seconds to wait for each MCP server (default 30)
  --baseline <file.json>    compare with an earlier --json report
  --compare <git-ref>       compare with the instruction files at a git ref
  --max-increase <n>        exit 1 when any tool grows by more than n tokens per turn vs the baseline
  --claude-api              exact Claude counts (ANTHROPIC_API_KEY)
  --gemini-api              Gemini counts (GEMINI_API_KEY)
  --english <file=en>       measure a language multiplier against your English version
  --translate               opt-in Claude translation for that measurement (needs --claude-api)
  --prices <file.json>      your own price table
  --section-tokens <n>      threshold for oversized sections (default 600)
  --fix                     print a diff of the safe fixes (--tools limits the agents whose context is kept)
  --write                   with --fix, apply the changes
  --config <file>           read defaults from this file (default: turntax.config.json, if any)

如果所选模型的价格在 90 天以前核验过,turntax 会在 stderr 中提示;请检查源信息,或传入 --prices。

turntax init [path]         add .github/workflows/turntax.yml and turntax.config.json (--tools, --max-increase,
                            --force, --dry-run); existing files are kept unless --force
turntax mcp                 run turntax as an MCP server over stdio (see below)

Agent 和 MCP

turntax mcp(MCP Registry:io.github.TorutDev/turntax)是一个只读 MCP 服务,提供两个工具:audit(文件夹报告)和 fix_preview(--fix 差异,绝不写入)。它像 CLI 一样读取 turntax.config.json,不会启动 MCP 服务或调用厂商 API。

claude mcp add turntax -- npx -y turntax mcp

对于 Cursor 和带有 mcpServers 映射的客户端,请将 { "mcpServers": { "turntax": { "command": "npx", "args": ["-y", "turntax", "mcp"] } } } 添加到其 MCP 配置中(VS Code 的 .vscode/mcp.json 将此映射称为 servers)。在原生 Windows 上,如果客户端无法直接启动 npx,请通过 cmd /c npx -y turntax mcp 运行。

该仓库也是一个 Claude Code 插件市场。该插件会添加此服务和一个 /turntax:context-tax 命令:

/plugin marketplace add TorutDev/turntax
/plugin install turntax@turntax

VS Code

vscode/ 是一款使用相同引擎的 VS Code 扩展:在状态栏显示打开文件夹中每轮最大的成本,在 Problems 面板中显示发现的问题,以 Markdown 预览显示报告,并将安全修复作为差异展示,仅在你选择 Apply 时写入。它可离线运行,唯一的设置是文件夹中的 turntax.config.json。

请从 VS Code Marketplace 安装,或运行:

code --install-extension torut.turntax

隐私

默认离线:不进行网络调用,也不收集遥测数据。仅当你传入 --claude-api、--gemini-api 或 --translate 时,才会发送文件内容,且只发送到对应供应商的 API。密钥从环境变量中读取,且仅在请求标头中发送。

--mcp 会运行其找到的 MCP 配置中的命令,并连接到配置的 HTTP 服务,就像 Agent 自己会做的那样。仅在你信任其配置的仓库中运行它。turntax 会在启动每条命令前打印出来。--include-user 会读取你主目录中的文件,且绝不会将其发送到任何地方。只有 --fix --write 会修改文件,且仅修改仓库文件。

网页

web/ 是一个静态网页,可在浏览器中使用仅离线的分词器运行相同的引擎。拖入仓库文件夹或粘贴文件;不会上传任何内容。

它还可以加载公开的 GitHub 仓库:网页会使用 GitHub API(api.github.com,无需身份验证,每小时 60 次请求)列出文件,并仅从 raw.githubusercontent.com 下载指令文件及其通过 @import 引用的文件。这些是网页发出的唯一网络请求,且仅在你加载仓库或打开 ?repo= 链接时发出。

npm run build:web

徽章

npx turntax --badge

上下文税费(o200k)

徽章显示找到的工具中始终加载的最大总量,按 o200k_base 计算:仓库文件加上测得的项目 MCP 工具,不包括用户级文件。

限制

  • 假定 Agent 从仓库根目录启动。只有使用 --include-user 才会统计用户级文件;应用设置或团队控制台中保存的规则(Cursor 用户规则、Copilot 组织指令)不会纳入统计。
  • 统计指令文件,以及使用 --mcp 时的 MCP 工具定义;不统计 Agent 自身的系统提示词或内置工具。
  • 加载规则会发生变化。每条规则都附有供应商页面和核验日期;若规则已过时,请提交 issue。

贡献

加载规则和价格可能会过时。附上供应商页面链接的更正最有帮助;请参阅 CONTRIBUTING.md。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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