Token导航 LogoToken导航TokenDH.com
LLM Externalizer Plugin logo
开发工具stdio官方级别未说明来源级核验

LLM Externalizer Plugin

MCP Server

llm-externalizer是一款将代码扫描工作卸载到廉价LLM并在本地Claude Code会话中保持修复循环的插件,适用于代码审查和缺陷修复。

工具数

31

提示词数

0

GitHub Stars

1

资源数

0
代码审查开发工具TypeScriptClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Emasoft

提供方

Emasoft

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 "$CLAUDE_PLUGIN_ROOT/scripts/install_statusline.py"

详细介绍

llm-externalizer

Offload expensive code-scan work to cheap LLMs. Keep the fix loop local in Claude Code.

______________________________________________________________________

它做什么

此插件可帮助您使用廉价模型查看代码库,然后使用正常的Claude Code会话修复发现的问题。

这项工作分为两半:

  • 扫描 --读取文件并列出出现的问题(错误、规范违规、重复代码、导入错误)。这一半被发送到您选择的廉价模型:免费的远程模型、三个模型的付费远程集成,或在您自己的机器上运行的本地模型。
  • 修复 --实际编辑代码以解决每个发现。这一半保留在Claude Code中,由Claude Sonnet或Opus完成,因此您可以保持已用于任何编辑的相同审核和批准流程。

将修复部分保持在本地意味着昂贵的模型只在实际需要时才接触代码。扫描部分在廉价方面完成了所有缓慢的读取工作。

______________________________________________________________________

目录

______________________________________________________________________

运作原理

┌─────────────────────────────────────────────────────────────────────────┐
│  YOUR CLAUDE CODE SESSION (local — Sonnet / Opus / Haiku)               │
│                                                                         │
│   /llm-externalizer:llm-externalizer-scan-and-fix                       │
│        │                                                                │
│        │  1. auto-discover codebase via git ls-files                    │
│        │  2. call MCP tool "scan_folder" or "code_task"  ───────┐       │
│        │                                                        │       │
│        │                                                        ▼       │
│        │           ┌─────────────────────────────────────────────────┐  │
│        │           │  MCP SERVER (bundled with plugin)               │  │
│        │           │                                                 │  │
│        │           │  FFD-batches files into ~400 KB payloads        │  │
│        │           │  Streams each batch to the configured backend:  │  │
│        │           │    • OpenRouter ensemble (3 models in parallel) │  │
│        │           │    • OpenRouter single model                    │  │
│        │           │    • LM Studio / Ollama / vLLM / llama.cpp      │  │
│        │           │    • Nemotron free tier                         │  │
│        │           │                                                 │  │
│        │           │  Writes per-file / per-group / merged reports   │  │
│        │           │  to ./reports/llm-externalizer/*.md             │  │
│        │           └─────────────────────────────────────────────────┘  │
│        │                                                        │       │
│        │  3. receive report paths (only paths — never bodies)   │       │
│        │  4. dispatch FIXER SUBAGENTS (local Claude Sonnet/Opus)        │
│        │       • parallel: up to 15 concurrent, one per report          │
│        │       • serial:   one bug at a time from an aggregated list    │
│        │                                                                │
│        │     EACH FIXER subagent:                                       │
│        │       a. reads ONE report from disk                            │
│        │       b. verifies every finding against the real source        │
│        │       c. rejects false positives / hallucinations              │
│        │       d. applies a minimal Edit only on REAL defects           │
│        │       e. runs the language linter, re-verifies                 │
│        │       f. writes a .fixer.*.md summary                          │
│        │                                                                │
│        │  5. join-script merges all fixer summaries into one report     │
└─────────────────────────────────────────────────────────────────────────┘

一行总结。 MCP服务器是扫描引擎;您的Claude Code会话是修复引擎。只有文件路径越过边界——编排器上下文从不读取报告正文。

______________________________________________________________________

特性

  • 扫描外部化 --31个MCP工具,用于代码审查、重复搜索、导入/引用验证、规范合规性检查和批量LLM驱动的结构化输出提取(大规模侦察),所有这些都由您选择的本地或远程LLM支持。
  • 修复循环保持本地 --修复程序由您的Claude Code Sonnet/Opus会话应用,而不是由外部LLM应用。你可以在不放弃编辑控制权的情况下获得乐团的第二意见。
  • 假阳性感知修复器 --每个修复程序子代理在编辑之前都会运行一个验证过程(文件读取+流跟踪)。根据经验,约15-30%的总体发现是假阳性;修理工用键入的理由拒绝了他们。
  • 17个插件命令 --9基地(discover, configure, change-model, benchmark, search-existing-implementations, scan-and-fix, scan-and-fix-serially, fix-report, fix-found-bugs)+8名群众侦察员(mass-scout-register, mass-scout-preclassify, mass-scout-estimate, mass-scout, mass-scout-search, mass-scout-search-xjob, mass-scout-get, mass-scout-export).完整列表在 插件命令.
  • 31个MCP工具 --15基地(chat, code_task, scan_folder, compare_files, check_references, check_imports, check_against_specs, search_existing_implementations, batch_check, discover, reset, get_settings, or_model_info, or_model_info_table, or_model_info_json)+16名群众侦察员(mass_scout_register, mass_scout_preclassify, mass_scout_estimate, mass_scout, mass_scout_search, mass_scout_search_xjob, mass_scout_get, mass_scout_export, mass_scout_jobs_list, mass_scout_audit_sample, mass_scout_body_get, mass_scout_build_fieldset, mass_scout_propose_fieldset, mass_scout_list_bundled_fieldsets, mass_scout_diff, mass_scout_chain).完整列表在 MCP工具.
  • 5内部代理人 --审阅者+4个修复器变体(并行/串行×Sonnet/Opus)。由命令调度,从不直接调用。看 代理.
  • 3种后端模式local (顺序), remote (并行、单一模型), remote-ensemble (平行,三个模型→ 合并报告)。
  • 6个后端预设 --LM工作室、Ollama、vLLM、llama.cpp、通用本地、OpenRouter。
  • 自动配料 --First Fit Reducing垃圾箱打包每个LLM请求1-5个文件(每批约400 KB)。LLM永远不会一次看到整个代码库。
  • 文件分组---GROUP:--- 文件列表中的标记将相关文件打包到一个请求中,并为每个组生成一个报告。
  • 秘密处理scan_secrets: true + redact_secrets: true 是修复运行时的默认设置。任何检测到的密钥/令牌/密码都将被替换为 [REDACTED:LABEL] 并且扫描继续。选择退出 --no-secrets.
  • 基于文件的输出 --每份报告都在 ./reports/llm-externalizer/。只有路径流过编排器上下文(每个报告≤200字节)。
  • 跨平台 --macOS、Linux、Windows。MCP服务器是一个捆绑的Node可执行文件;辅助脚本是纯Python 3.12+。

______________________________________________________________________

需求

这些是 用户 从市场上安装的要求。 下面列出了从源代码构建的其他工具 贡献→ 开发人员要求.
工具最小值为什么
克劳德代码2.0+插件主机
Node.js+npm节点≥18安装挂钩重建捆绑的MCP服务器
python≥3.12安装吊钩 scripts/setup.py;statusline是Python
版本控制系统最近有没有git ls-files / git rev-parse 驱动器代码库自动发现
一个后端-任一个OpenRouter API密钥 本地模型服务器(LM Studio、Ollama、vLLM、llama.cpp)

______________________________________________________________________

安装

下面的每一步都是 单层可粘贴块.在终端中运行它们,而不是在Claude Code会话中运行。

1·添加市场

macOS / Linux (bash / zsh)

# Add the marketplace that hosts this plugin
claude plugin marketplace add Emasoft/emasoft-plugins

Windows (PowerShell)

# Add the marketplace that hosts this plugin
claude plugin marketplace add Emasoft/emasoft-plugins

2·安装插件

# Install llm-externalizer from the Emasoft marketplace
claude plugin install llm-externalizer@emasoft-plugins

然后重新启动Claude Code(或 /reload-plugins 在跑步过程中)。

3·(稍后)更新插件

# Pull the newest version published in the marketplace
claude plugin update llm-externalizer@emasoft-plugins

4·(可选)卸载

# Remove the plugin
claude plugin uninstall llm-externalizer@emasoft-plugins

从Claude Code内部安装

如果你喜欢对话式安装,请将此repo URL粘贴到Claude中,并要求它安装插件:

https://github.com/Emasoft/llm-externalizer-plugin

______________________________________________________________________

首次运行

1·配置后端

挑选 以下四个选项。

A. OpenRouter (ensemble — recommended for best quality, paid)

你有 三种方式 为插件提供OpenRouter密钥。它们是按优先顺序列出的——第一个是 强烈推荐.

1.外壳环境变量(推荐)

出口 OPENROUTER_API_KEY 在您的shell rc文件中。 此插件中的消费者会自动拾取它:MCP服务器、状态线(🏦 剩余信用面板) llm-externalizer CLI和任何子进程Claude代码生成。没有其他配置。

macOS / Linux (bash / zsh / fish)

# Put this in ~/.zshrc, ~/.bashrc, or ~/.config/fish/config.fish
export OPENROUTER_API_KEY="sk-or-v1-..."

Windows (PowerShell — persistent)

# Persist for your user account (survives reboot and new terminals)
[Environment]::SetEnvironmentVariable("OPENROUTER_API_KEY", "sk-or-v1-...", "User")

Windows (cmd.exe — persistent)

setx OPENROUTER_API_KEY "sk-or-v1-..."

2.设置.yaml api_key 字段(支持,不推荐)

您可以在内部的配置文件中硬编码密钥(或不同的env-var引用) ~/.llm-externalizer/settings.yaml:

profiles:
  remote-ensemble-geminigrok:
    mode: remote-ensemble
    api: openrouter-remote
    api_key: sk-or-v1-...        # literal — do NOT commit this file
    # api_key: $MY_CUSTOM_VAR    # or a different env-var name

为什么会这样 建议:statusline和任何其他不解析settings.yaml的子进程(CLI调用、ad-hoc脚本)将看不到密钥,因此🏦 剩余的信用面板保持空白。另外:YAML文件中的文字键是粗心的 git add 远离泄漏。

3.Claude Code插件钥匙链(支持,不推荐)

通过Claude Code将密钥存储在操作系统钥匙链中:

# Opens an interactive TUI; paste the key when prompted
claude plugin configure llm-externalizer

Claude Code将值导出到MCP服务器 CLAUDE_PLUGIN_OPTION_OPENROUTER_API_KEY;服务器的 resolveEnvValue() 透明地将其映射到 OPENROUTER_API_KEY. 但是 这种映射只发生在MCP服务器进程树内部——statusline子进程和ad-hoc CLI调用在树外部运行,不会看到密钥,因此🏦 面板保持空白。

身份验证优先级

当设置了多个源时,分辨率顺序为:

  1. 壳牌环境 OPENROUTER_API_KEY (或配置文件的任何env变量 api_key via点 $VAR 语法)
  2. 中的文字值 settings.yaml::profiles..api_key
  3. 克劳德代码钥匙链(userConfig.openrouter_api_key)

默认配置文件 remote-ensemble-geminigrok 一旦其中任何一个设置好,它就会开箱即用。

B. OpenRouter free tier (Nemotron — free, single model)

与选项A相同的OpenRouter密钥(任何免费帐户都可以使用)。在中将活动配置文件切换到空闲配置文件 ~/.llm-externalizer/settings.yaml:

active: remote-free

配置→ B.远程免费(Nemotron) 对于完整的配置文件块。

\[!警告\] 免费提供商会记录您的提示。仅在开源代码上使用。

C. LM Studio (local — free, offline)

  1. 从以下位置安装LM Studio ,启动它并加载模型。
  2. 启动本地服务器: 开发者服务器启动服务器.
  3. 通过编辑将插件切换到LM Studio配置文件 settings.yaml --看 配置.

D. Ollama (local — free, offline)

拉取一个模型并启动守护进程:

# One-time: pull the model weights (~17 GB for Qwen3.5 27B)
ollama pull qwen3.5:27b

# Start Ollama (or launch the tray app)
ollama serve

然后将插件配置文件切换到 local-ollama --看 配置.

2·验证健康状况

内部克劳德代码:

/llm-externalizer:llm-externalizer-discover

您应该看到您的活动配置文件、型号ID、身份验证状态和 ONLINE.

3·运行第一次扫描+修复

/llm-externalizer:llm-externalizer-scan-and-fix

该命令将自动发现您的代码库,显示文件列表以供确认,运行扫描,然后在编辑前派遣本地Claude fixer子代理验证每个发现。

______________________________________________________________________

插件命令

命令在Claude Code中被斜线调用。格式为 /llm-externalizer:llm-externalizer-.

基本命令(9)

命令目的生产
/llm-externalizer:llm-externalizer-discover打印活动配置文件、模型、身份验证、上下文窗口、健康状况文本摘要
/llm-externalizer:llm-externalizer-configure只读配置文件检查器(编辑 settings.yaml 更改)配置文件表
/llm-externalizer:llm-externalizer-change-model切换活动配置文件的型号确认+新的活动型号
/llm-externalizer:llm-externalizer-benchmark在示例上运行OpenRouter模型选择工具以比较候选对象基准报告
/llm-externalizer:llm-externalizer-search-existing-implementationsPR重复检查——“此功能是否已在任何地方实现?”详尽无遗 NO / YES symbol= lines= 每个文件
/llm-externalizer:llm-externalizer-scan-and-fix扫描整个代码库→ 按文件报告→ 并行固定子代理(≤15个并发)→ 已加入报告按文件扫描报告+修复程序摘要+已加入报告
/llm-externalizer:llm-externalizer-scan-and-fix-serially相同扫描;在串行循环中一次修复一个错误(修复触摸共享状态时更安全)每个文件报告+规范错误列表+串行修复程序摘要
/llm-externalizer:llm-externalizer-fix-report在已生成的扫描报告上分派一个修复程序子代理一个 .fixer.-标记摘要
/llm-externalizer:llm-externalizer-fix-found-bugs汇总中所有报告的未修复发现 ./reports/llm-externalizer/ 并连续修复规范错误列表+连续摘要

大规模侦察司令部(8)

命令目的生产
/llm-externalizer:llm-externalizer-mass-scout-register浏览文件夹/获取文件列表,并将每个文件存储在SQLite缓存中(荣誉 .gitignore; --git-diff 增量)计数器行 registered=N already=M skipped_too_big=K …
/llm-externalizer:llm-externalizer-mass-scout-preclassify仅脚本桶标记器每个桶的计数行
/llm-externalizer:llm-externalizer-mass-scout-estimate字段集的成本/时间/上限跳过数字;荣誉 --budget-usd; --live-context 向OpenRouter查询真实的提供商上限数字+每个桶的细分
/llm-externalizer:llm-externalizer-mass-scout全程运行LLM侦察;发射MCP notifications/progress 每个文件Markdown报告下 reports/mass_scouting/ +计数器线
/llm-externalizer:llm-externalizer-mass-scout-search每次求职(正则表达式绕过/FTS5/结构化/组合)点击列表(文本或 --json)
/llm-externalizer:llm-externalizer-mass-scout-search-xjob跨作业联合搜索合并的命中列表
/llm-externalizer:llm-externalizer-mass-scout-get按以下方式打印一行 short_id (每个作业的结果可选)JSON行
/llm-externalizer:llm-externalizer-mass-scout-export将作业的每个结果行转储到JSONL或CSV reports/mass_scouting/文件路径

MCP专用大规模侦察工具(8个,无斜线命令包装器): mass_scout_jobs_list, mass_scout_audit_sample, mass_scout_body_get, mass_scout_build_fieldset, mass_scout_propose_fieldset, mass_scout_list_bundled_fieldsets, mass_scout_diff, mass_scout_chain。技能和代理人直接通过以下方式解决这些问题 mcp__plugin_llm-externalizer_llm-externalizer__CLI还将它们公开为 bin/llm-externalizer mass-scout --看 --help 查看完整的旗帜列表。插件附带的捆绑字段集: code-audit, skill-audit, security-audit, pr-review (传递为 --fields-file bundled:).

Parameter reference — click to expand

/llm-externalizer:llm-externalizer-discover

没有参数。

/llm-externalizer:llm-externalizer-configure

没有参数。只读;编辑 ~/.llm-externalizer/settings.yaml 然后直接呼叫MCP reset 或重新启动。

/llm-externalizer:llm-externalizer-search-existing-implementations

参数类型必填默认含义
``位置字符串yes--要搜索的特征的自然语言描述
``位置路径yes--要扫描的根文件夹(方面 .gitignore 在git repos中)。接受多个根
`--source-files
...`重复--显示该功能的引用源文件。按批次上下文传递;自动排除在扫描之外
`--diff
`文件路径no--统一差异文件以缩小范围。相互排斥 --base
--base git refno自动检测 origin/HEADmainmaster通过自动生成差异 git diff ...HEAD
--max-files 整数10000文件上限--高于 scan_folder2500是因为重复的搜索会扫描整个代码库
--freeflagnooff使用免费的Nemotron模型。提供程序日志提示——避免在专有代码上出现

/llm-externalizer:llm-externalizer-scan-and-fix

参数类型必填默认含义
[target]位置路径自动发现整个代码库如果两者都有 [target]--file-list 省略: git rev-parse --show-toplevelgit ls-files → 过滤器docs/examples/fixtures/binary/锁文件→ 展示精心策划的列表以供确认
`--file-list
`文件路径no--.txt 每条线有一条绝对路径,或 ---GROUP:--- / ---/GROUP:--- 标记线。 [target] 设置时忽略
`--instructions
`.md pathno内置的REAL-BUGS-ONLY量规替换默认的审计量规
`--specs
`.md pathno--Spec文件。每个批次都会看到源代码+规范,因此参考文献会根据权威列表进行验证
--freeflagnooff免费Nemotron模型(提供程序日志提示)
--no-secrets标志关闭默认设置为扫描+编校。 此标志同时关闭(无检测,无编辑)。仅在将秘密转移到以下位置后使用 .env
--text标志关闭包括 .md .txt .json .yml .yaml .toml .ini .cfg .conf .xml .html .rst .csv.搭配 --instructions

/llm-externalizer:llm-externalizer-scan-and-fix-serially

参数与 scan-and-fix修复阶段不同:一次一个修复器子代理,一次修复一个bug。

/llm-externalizer:llm-externalizer-fix-report

参数类型必填默认含义
@ 或裸路径位置路径yes--一个扫描报告的路径。 @ 前缀被删除。路径包含 .fixer..final-report. 被拒绝

/llm-externalizer:llm-externalizer-fix-found-bugs

参数类型必填默认含义
@ 或裸路径位置路径聚合中的所有报告 ./reports/llm-externalizer/如果省略,则每份没有 .fixer. 兄弟姐妹被聚合到一个规范的bug列表中

大规模侦察参数说明

mass-scout 家族经营着一家廉价的LLM(默认 qwen/qwen-2.5-7b-instruct)从数百到数百万个文件中提取每个调用定义的形状相同的结构化有效载荷。管道: 注册→ 预分类→ 估计→ 侦察员→ 搜索。参见 skills/llm-externalizer-mass-scouting/SKILL.md (及其 references/)了解完整的演练,包括故障排除流程图、样例、字段集方言和术语表。

常见的每个命令标志突出显示:

  • `--db

` --每个大规模侦察分队都需要。相同的SQLite注册表在各个阶段共享。

  • `--fields-file

--接受绝对路径或 bundled: 速记法(code-audit, skill-audit, security-audit, pr-review`).

  • --budget-usd estimate --硬门;当预测超出预算时,拒绝安排。
  • --live-contextestimatemass-scout --查询OpenRouter以获取活动提供商的真实信息 context_length 并覆盖KNOWN_PRICING(KNOWN_PRICING中烘焙的架构上限是模型的最大值,而不是提供商的实际上限)。
  • --no-smoke-testmass-scout --跳过5英里的连续飞行前训练,在破碎的场地上提前中止跑步。
  • --no-resumemass-scout --重新处理文件,即使它们已经有了结果行 --job-id.
  • --jsonsearch, search-xjob, get, jobs-list, audit-sample, diff, list-bundled-fieldsets --下游脚本的结构化输出。
  • 筛选器语法 search / search-xjob / chain: '$.path:OP:value' 哪里 OP ∈ {=, !=, >, >=, 对于每个命令,运行任何一个命令 --help (或者只是 bin/llm-externalizer mass-scout --help)查看完整的旗帜列表。

______________________________________________________________________

MCP工具

这些是 直接MCP工具调用 --可通过技能、自定义代理或脚本进行寻址,如 mcp__plugin_llm-externalizer_llm-externalizer__终端用户通常不会直接呼叫这些;他们使用上面的斜线命令。此处列出了用于编写自定义工作流的高级用户的工具。

分析工具

工具目的
chat通用目的:总结、比较、翻译、生成
code_task使用代码审查系统提示进行代码优化分析
scan_folder递归目录扫描;按扩展名自动发现文件
compare_files配对/批量/git差异比较;LLM总结了差异
check_references自动解析本地导入,验证符号引用
check_importsLLM提取进口;服务器验证磁盘上是否存在每个
check_against_specs将源代码与规范文件进行比较;报告偏差
search_existing_implementationsFFD批量重复狩猎;彻底的 NO / YES symbol= lines= 每个文件
batch_check多文件健全性检查包装器

大规模侦察工具(16)

基本的8个工具管道加上8个后续工具,用于字段集创作、作业自检和作业到作业操作。

工具目的
mass_scout_register浏览文件夹/明确 file_paths;将每个body缓存在SQLite中(幂等)。荣誉 .gitignore 默认情况下; --git-diff 对于增量
mass_scout_preclassify纯脚本bucket标记器(二进制/源代码/配置/文档/日志/规则/未知)
mass_scout_estimate字段集的成本/时间/上限跳过数字;荣誉 budget_usd. live_context 向OpenRouter查询真实的提供商上限
mass_scout编译字段集→ JSON 模式→ 按文件调用LLM→ 修复+验证→ 坚持;发射MCP notifications/progress 每个文件
mass_scout_search每次求职(正则表达式绕过/FTS5/结构化/组合)
mass_scout_search_xjob跨岗位联合搜索;按bm25合并每个作业
mass_scout_get按以下方式打印一行 short_id (每个作业的结果可选)
mass_scout_export将作业的每个结果行转储到JSONL或CSV
mass_scout_jobs_list列出数据库中的每个侦察任务
mass_scout_audit_sample从作业中随机抽取N行结果进行抽查验证
mass_scout_body_get按以下方式打印缓存的文件正文 short_id (LLM看到了什么)
mass_scout_build_fieldset从以下位置编写JSON字段集 name:type=desc 速记标记
mass_scout_propose_fieldsetLLM为自然语言目标编写了一个字段集JSON+可选示例文件
mass_scout_list_bundled_fieldsets列出接受的4个插件附带字段集 bundled::代码审计、技能审计、安全审计、公关审查
mass_scout_diff逐行比较两个作业;计数only _ a/only _ in _ b/已更改(带已更改的键)
mass_scout_chain使用新的字段集重新搜索与JSON提取过滤器匹配的现有作业结果的SUBSET

CLI将每个子命令公开为 bin/llm-externalizer mass-scout 上面列出的8个斜线命令是围绕基本8个子命令的1:1包装;其余8个仅为MCP,由技能/代理解决。这 llm-externalizer-mass-scouting skill遍历了整个流程,包括捆绑的字段集、故障排除流程图和工作示例。

实用工具

工具目的
discover运行状况、配置文件、模型、身份验证令牌状态、上下文窗口、并发性
reset软重启——等待正在运行的请求,重新加载 settings.yaml,清除缓存
get_settings复制 settings.yaml 到输出目录进行只读检查
or_model_info / or_model_info_table / or_model_info_jsonOpenRouter模型参数/定价/延迟/正常运行时间——三种格式

answer_mode (每个多文件分析工具)

模式名称输出
0每个文件一份报告一份 .md 每个输入文件
1每组一份报告一份 .md 每组(明确 ---GROUP:id--- 或自动分组)
2单一报告合并一份 .md

默认值。 scan_folder → 0. chat / code_task / check_* / search_existing_implementations → 2.

\[!重要\] 分批处理。 每个多文件工具都将文件打包为LLM请求,每个LLM请求包含1-5个文件(每批约400 KB)。LLM 从不 一次查看整个代码库-- answer_mode 仅控制报告在磁盘上的组织方式。对于跨文件分析,请使用 search_existing_implementationscheck_against_specs --他们的每批设计实际上与权威参考进行了验证。

高级参数(大多数工具)

参数默认值说明
output_dir./reports/llm-externalizer/报告的绝对路径
max_retries1在模式0下按文件重试。集 3 用于并联+重试+断路器
redact_regex--JavaScript正则表达式--匹配变为 [REDACTED:USER_PATTERN]
scan_secretstrue在发送到LLM之前,对每个输入文件运行秘密检测器
redact_secretstrue将检测到的机密替换为 [REDACTED:LABEL] 而不是中止(与 scan_secrets)
freefalse使用免费的Nemotron模型
max_payload_kb400每个LLM请求的最大有效载荷

______________________________________________________________________

代理

这五名特工都是 内部的 --用户通过斜线命令而不是直接发送它们。每个任务生成都是新的(零父对话上下文);用户/项目 CLAUDE.md 以相同的方式加载 claude -p修复程序命令显示一个双选项菜单(Sonnet默认, Opus可选)发货前;以下四种修复程序变体存在,因此所选模型是预烘焙的,可以在没有 model: 以(权力)否决

代理型号角色派遣人
llm-externalizer-reviewer-agentsonnet只读代码审阅器。继承完整的刀具表面(SERENA、TLDR、Grepika、LSP)。仅返回报告路径llm-externalizer-scan 技能
llm-externalizer-parallel-fixer-sonnet-agentsonnet验证并修复一份扫描报告中的所有发现。无国籍;写一个 .fixer.-标记摘要;最多可并行发送15个scan-and-fix, fix-report --当用户选择 十四行诗 在菜单上
llm-externalizer-parallel-fixer-opus-agentopusopus中的同一角色scan-and-fix, fix-report --当用户选择 作品
llm-externalizer-serial-fixer-sonnet-agentsonnet从聚合列表中每次调用只修复一个错误。磁盘上有状态(更改列表)。一次一个scan-and-fix-serially, fix-found-bugs --当用户选择 十四行诗
llm-externalizer-serial-fixer-opus-agentopusopus中的同一角色scan-and-fix-serially, fix-found-bugs --当用户选择 作品
\[!注意\] 每个修复程序代理都运行一个强制验证通行证 在编辑任何源文件之前:打开引用行,跟踪流程,拒绝幻觉/样式建议/编辑工件/已修复的声明。无编辑的“假阳性”判决被视为成功的结果。

______________________________________________________________________

配置

设置文件位于:

  • macOS/Linux: ~/.llm-externalizer/settings.yaml
  • 窗户: %USERPROFILE%\.llm-externalizer\settings.yaml

该插件在首次安装时使用四个启动器配置文件创建它。用任何文本编辑器编辑它,保存,然后重新启动Claude Code——或者调用MCP reset 工具无需重新启动即可重新加载。

配置文件模式

模式并发输出
local顺序一个模型
remote并行一个模型
remote-ensemble并行三个模型,组合报表

A.远程合奏(推荐)

# ~/.llm-externalizer/settings.yaml   (or %USERPROFILE%\.llm-externalizer\settings.yaml)
active: remote-ensemble

profiles:
  remote-ensemble:
    mode: remote-ensemble
    api: openrouter-remote
    model:        "google/gemini-2.5-flash"
    second_model: "x-ai/grok-4.1-fast"
    third_model:  "qwen/qwen3.6-plus"
    api_key: $OPENROUTER_API_KEY

每个文件都由所有三个模型并行审查;这份报告综合了他们的回答。交换任何一行以尝试不同的模型——请参阅 .

B.远程免费(Nemotron)

只需在OpenRouter上调用NVIDIA的免费Nemotron层即可。一个模型,没有整体,没有成本。

active: remote-free

profiles:
  remote-free:
    mode: remote
    api: openrouter-remote
    model: "nvidia/nemotron-3-super-120b-a12b:free"
    api_key: $OPENROUTER_API_KEY
\[!警告\] 免费层在提供商端记录您的提示。 仅在开源代码或您不介意被记录的代码上使用此功能。对于专有代码,使用集成(选项A)或本地模型(选项C/D/E)。

C.当地——LM工作室(Qwen 3.5 27B)

active: local-lmstudio

profiles:
  local-lmstudio:
    mode: local
    api: lmstudio-local
    # Apple Silicon → use the MLX build (much faster than GGUF):
    model: "mlx-community/Qwen3.5-27B-Instruct-4bit"
    # Windows / Linux → use the GGUF build:
    # model: "bartowski/Qwen3.5-27B-Instruct-GGUF"

D.当地-Ollama

active: local-ollama

profiles:
  local-ollama:
    mode: local
    api: ollama-local
    model: "qwen3.5:27b"
    # Default URL is http://localhost:11434 — override only for remote/custom hosts:
    # url: "http://192.168.1.42:11434"
    # Ollama needs no auth, so api_token is omitted.

首次使用前,拉动模型:

# One-time — downloads ~17 GB of model weights
ollama pull qwen3.5:27b

E.本地-vLLM或llama.cpp

形状与奥利玛积木相同;更改 api: 预设:

profiles:
  local-vllm:
    mode: local
    api: vllm-local         # default URL: http://localhost:8000 — auth: $VLLM_API_KEY
    model: "Qwen/Qwen3.5-27B-Instruct"

  local-llamacpp:
    mode: local
    api: llamacpp-local     # default URL: http://localhost:8080 — no auth
    model: "Qwen3.5-27B-Instruct"

model: 无论您的服务器在其上发布什么ID /v1/models 终点。

后端预设

预设协议默认URL身份验证环境变量
openrouter-remoteOpenRouterhttps://openrouter.ai/apiOPENROUTER_API_KEY
lmstudio-localLM工作室原生http://localhost:1234LM_API_TOKEN
ollama-localOpenAI兼容http://localhost:11434
vllm-localOpenAI兼容http://localhost:8000VLLM_API_KEY
llamacpp-localOpenAI兼容http://localhost:8080
generic-localOpenAI兼容(需要url)LM_API_TOKEN

环境变量

变量由使用
OPENROUTER_API_KEYopenrouter-remote 预设
LM_API_TOKENlmstudio-local, generic-local 预设
VLLM_API_KEYvllm-local 预设
\[!注意\] 这 推荐使用shell环境变量 提供上面列出的每个密钥。MCP服务器和statusline子进程都会自动继承它 llm-externalizer CLI在没有额外管道的情况下看到相同的值。配置文件级别 api_key / api_token 字段和克劳德代码密钥链(userConfig.openrouter_api_key)作为后备支持,但只有MCP服务器可以看到它们——状态线🏦 面板保持空白,ad-hoc CLI调用不会拾取密钥。看 首次运行§A.OpenRouter 对于完整的优先级列表和权衡。

可选:状态线

添加一个多层状态栏,包括:模型名称、上下文窗口栏、, 实时OpenRouter信用余额、MCP代币和成本、git分支和Claude Code 5小时/7天使用限制。宽度感知(1行≥184 cols→ 6 65列以下的行),每节错误隔离,没有外部依赖关系。

最简单的方法——从Claude Code内部调用捆绑的斜线命令:

/llm-externalizer:llm-externalizer-install-statusline

手动安装(跨平台Python):

macOS / Linux

# Default 3-second refresh cadence (re-tiers within 3 s of a terminal resize)
python3 "$CLAUDE_PLUGIN_ROOT/scripts/install_statusline.py"

# Or override the refresh cadence
REFRESH_INTERVAL=5 python3 "$CLAUDE_PLUGIN_ROOT/scripts/install_statusline.py"

# Bash-only equivalent (same behaviour, identical settings.json output)
bash "$CLAUDE_PLUGIN_ROOT/scripts/statusline/install.sh"

Windows (PowerShell)

python3 "$env:CLAUDE_PLUGIN_ROOT\scripts\install_statusline.py"
\[!注意\] OpenRouter剩余信用面板(🏦) 仅在以下情况下渲染 OPENROUTER_API_KEY 在您的shell环境中导出。每次刷新时,statusline都会作为一个新的子进程运行,因此插件的密钥链(userConfig.openrouter_api_key)以及每个配置文件 api_key 领域 settings.yaml不可见 看吧 首次运行§A.OpenRouter 为什么shell env是让每个消费者(MCP、statusline、CLI)共享同一密钥的唯一方法。

scripts/statusline/README.md 查看完整的特征矩阵和宽度分层细节。

______________________________________________________________________

故障排除

/llm-externalizer:llm-externalizer-discover 首先,输出会立即识别出大多数问题。

开放路由

症状原因/修复
discover 显示 $OPENROUTER_API_KEY (NOT SET)MCP服务器进程Env中缺少Env-var。在shell rc中设置它并重新启动Claude Code——或者通过以下方式存储它 claude plugin configure llm-externalizer
令牌已解析,但扫描返回401密钥已撤销或作用域不正确。检查 并再生
令牌已解决,但扫描返回429已用尽信用或达到RPS上限。检查 .AIMD回退会自动恢复——只需等待
model not found型号ID settings.yaml 在上游被重命名/弃用。看看
Ensemble报告仅显示1-2个模型一个模型超过了其每个文件的大小限制或被临时删除。报告仍在发表,只是章节较少

LM 工作室

症状原因/修复
discover 显示 service offlineLM Studio未运行,或其服务器选项卡未启动。 开发者服务器启动服务器 (默认端口1234)
每个文件的扫描超时型号太大,无法容纳RAM→ 交换。切换到较小的量子(例如。 -4bit 而不是 -8bit)
model not loaded /错误输出model:settings.yaml 与LM Studio在其广告中的ID不匹配 服务器 选项卡
结构化输出错误更新LM Studio——旧版本不支持 response_format: json_schema

奥拉玛

症状原因/修复
discover 显示 service offlineOllama守护进程未运行。从...开始 ollama serve 或启动托盘应用程序
model not found模型未被拉动。跑 ollama pull (确切的ID在 settings.yaml)
第一个请求非常缓慢Ollama正在装载重物。后续请求命中缓存
错误的主机/端口添加 url: "http://..." 到配置文件(默认为 localhost:11434)

通用

症状原因/修复
/llm-externalizer:... 命令不自动完成插件未安装或未加载。 claude plugin list 核实; /reload-plugins 重新扫描
discover 可以工作,但扫描不会生成报告查看最后一条助理消息 [FAILED] 原因--写入前扫描中止
预扫描秘密检测器中止运行在当前版本(9.0.1+)上,默认值为 修订,而不是中止。如果你看到中止,运行 claude plugin update llm-externalizer@emasoft-plugins

______________________________________________________________________

插件结构

Expand tree

llm-externalizer-plugin/
├── .claude-plugin/plugin.json     # Plugin manifest
├── .mcp.json                      # MCP server launcher
├── bin/                           # MCP launcher + CLI wrapper
├── commands/                      # 7 slash commands
├── agents/                        # 5 internal agents (reviewer + fixers)
├── skills/                        # 5 auto-discovered skills
├── rules/                         # Canonical usage rules bundled for users
├── mcp-server/                    # Bundled TypeScript MCP server
├── scripts/                       # Python: setup, publish, validators, helpers
└── docs/                          # Banner, cost-comparison image, OpenRouter refs

______________________________________________________________________

贡献

\[!重要\] 所有者唯一的边界。 为上游回购所有者保留了三件事 不得 由贡献者管理: 1. scripts/publish.py --更新插件版本,重新生成 CHANGELOG.md、标记和推送。版本冲突属于发布经理,而不是单个PR。 1. .githooks/pre-push 钩子 --这个钩子的存在是为了迫使主人通过 publish.py 当向上游推进时。在叉子上,它挡住了所有正常的东西 git push 并且是无用的。 1. .github/workflows/notify-marketplace.yml CI --此工作流通知 emasoft-plugins 市场上有新版本可用。在叉子上,它要么会失败(否 MARKETPLACE_PAT 秘密)或试图通知市场你的分叉——两者都不需要。 下面的设置禁用了叉子上的所有三个,这样你就可以干净地推PR了。

开发人员要求

除了上述用户要求外,您还需要:

  • uv --Python依赖管理(uv venv --python 3.12, uv run ...)
  • gh (GitHub CLI)-用于在您的fork上打开PR和管理工作流

1·在GitHub上分叉,然后克隆你的分叉

# Fork at https://github.com/Emasoft/llm-externalizer-plugin/fork
# Then clone — replace 
git clone https://github.com//llm-externalizer-plugin.git
cd llm-externalizer-plugin
# Track upstream so you can pull in new releases later
git remote add upstream https://github.com/Emasoft/llm-externalizer-plugin.git

2·在叉子上禁用仅限所有者的自动化

在克隆之后,在第一次推之前,这样做一次。跳过此步骤将使您的推送拒绝或触发中断的CI运行。

2a·局部禁用预推钩

回购随附 core.hooksPath = .githooks 在其提交的配置中。在叉子上,你需要松开它。

macOS / Linux (bash / zsh)

# Unset the repo's hooksPath so git uses the default .git/hooks/ (which is empty)
git config --local --unset core.hooksPath
# Verify — should print nothing (no active hooks path)
git config --local --get core.hooksPath

Windows (PowerShell)

# Unset the repo's hooksPath so git uses the default .git\hooks\ (empty)
git config --local --unset core.hooksPath
# Verify — should print nothing
git config --local --get core.hooksPath
pre-push 脚本本身在磁盘上没有变化(它在 .githooks/).你只是说说而已 *你的* git不要运行它。

2b·在你的fork上禁用GitHub Actions工作流

notify-marketplace.yml 每次推送时都会触发工作流 main 并且需要a MARKETPLACE_PAT 只有主人才有的秘密。这 ci.yml 工作流还运行所有者期望的gates。在分叉上禁用这两个选项,这样PR就不会发送红色CI运行。

选项A——通过 gh CLI(最快):

# Disable the workflow that notifies the marketplace (owner-only)
gh workflow disable "Notify Marketplace" --repo /llm-externalizer-plugin
# (optional) Also disable CI on your fork — the upstream PR will run CI instead
gh workflow disable "CI" --repo /llm-externalizer-plugin

选项B——通过GitHub web UI:

首选 https://github.com//llm-externalizer-plugin/actions,单击左侧边栏中列出的每个工作流→ ... menu → 禁用工作流.

选项C——删除fork分支(核)上的工作流文件:

如果你不希望这些工作流在你的分支上的任何地方运行,请向你的分支提交删除。不要这样做 main --它会出现在你的公关差异中。

# Only if you really want to remove the workflows from your fork's main.
# This changes the diff — don't include in a PR.
git checkout -b chore/disable-fork-ci
git rm .github/workflows/notify-marketplace.yml .github/workflows/ci.yml
git commit -m "chore: disable owner-only workflows on fork"

3·构建捆绑的MCP服务器

# Installs npm deps and compiles TypeScript
python3 scripts/setup.py

4·安装您的工作副本以进行本地测试

# Point Claude Code at your cloned checkout
claude plugin install "$PWD"

5·创建特征分支

git checkout -b feat/

6·提交前验证

# Fast local validation
claude plugin validate .
# (optional) deeper CPV remote validator
uvx --from git+https://github.com/Emasoft/claude-plugins-validation --with pyyaml \
    cpv-remote-validate plugin "$PWD"

7·使用常规提交前缀进行提交

# The maintainer's release pipeline uses the prefix to classify changes.
#   feat:  — new feature (minor bump)
#   fix:   — bug fix      (patch bump)
#   docs:  — documentation
#   refactor: / chore:    — other housekeeping
#   BREAKING CHANGE: …    — major bump (body or footer)
git commit -m "feat: "
\[!小心\] 请勿碰撞 versionplugin.json, mcp-server/package.json,或 pyproject.toml 在您的PR中。不要编辑 CHANGELOG.md请勿奔跑 scripts/publish.py合并后,所有版本工作均由维护人员完成。

8·推叉打开PR

# Push the feature branch to your fork
git push origin feat/
# Open PR against Emasoft/llm-externalizer-plugin main
gh pr create --repo Emasoft/llm-externalizer-plugin --base main

______________________________________________________________________

发布管道(仅限维护人员——不得作为贡献者运行)

本节记录了上游维护人员在合并PR后运行的命令。贡献者应该忽略它。上游克隆上的预推挂钩(贡献者通过步骤2a禁用)专门用于强制使用这些脚本。

仅限维护人员使用的额外工具:

  • git-cliff --自动计算下一个版本并重新生成 CHANGELOG.md 来自常规承诺(由 publish.py)
# Auto-bump version from Conventional Commits, run all gates, push tag + release
python3 scripts/publish.py
# Force a specific bump
python3 scripts/publish.py --patch
python3 scripts/publish.py --minor
python3 scripts/publish.py --major
# Dry-run preview (still runs all checks)
python3 scripts/publish.py --dry-run
# Used by the pre-push hook — runs checks, exits, no mutations
python3 scripts/publish.py --check-only

publish.py9个强制性验证门 在任何标记或推送之前: npm ci, npm run typecheck, npm run lint, npm run build, npm test, ruff check, shellcheck, plugin.json 模式, claude plugin validate。所有操作都必须零错误通过。

______________________________________________________________________

许可证

麻省理工学院——见 许可证.

______________________________________________________________________

链接

  • 市场:
  • 来源:
  • 问题:

目录标签

目录标签

代码审查开发工具TypeScriptClaude本地部署缺陷修复LLM集成自动化工具开发效率

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

31

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP