拉扎鲁斯
MCP服务器包装的机械可解释性 楚克·拉扎鲁斯.
加载任何模型、提取激活、列车探测、转向生成, 并通过Claude(或任何MCP客户端)的MCP工具消融组件 可以自主呼叫。
快速开始
# Clone and install
git clone https://github.com/chuk-ai/chuk-mcp-lazarus.git
cd chuk-mcp-lazarus
uv sync
# Run the smoke test (53 tests on SmolLM2-135M, ~3 seconds)
uv run python examples/smoke_test.py
# Run the full 15-step language transition demo
uv run python examples/language_transition_demo.py克劳德桌面版
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"lazarus": {
"command": "uv",
"args": ["run", "chuk-mcp-lazarus", "stdio"],
"cwd": "/path/to/chuk-mcp-lazarus"
}
}
}工具(64)
| 组 | 工具 | 目的 |
|---|---|---|
| 型号 | load_model | 将任何HuggingFace模型加载到内存中 |
| 型号 | get_model_info | 返回架构元数据 |
| 世代 | generate_text | 从加载的模型生成文本 |
| 世代 | predict_next_token | 具有概率的Top-k下一个令牌预测 |
| 世代 | tokenize | 显示文本是如何标记的 |
| 世代 | logit_lens | 逐层预测演化(校准的logit透镜) |
| 世代 | track_token | 跨层跟踪特定令牌的概率 |
| 世代 | track_race | 通过交叉检测跨层竞争N个候选令牌 |
| 世代 | embedding_neighbors | 在嵌入空间中查找最近的标记(余弦相似度) |
| 激活 | extract_activations | 特定层和位置的隐藏状态 |
| 激活 | compare_activations | 跨提示的余弦相似度+PCA |
| 注意 | attention_pattern | 指定层的人均注意力权重 |
| 注意 | attention_heads | 人均熵和焦点分析 |
| 探测 | train_probe | 对分类器进行激活训练 |
| 探测 | evaluate_probe | 对保留的数据进行评估 |
| 探测 | scan_probe_across_layers | 找到交叉层 |
| 探测 | probe_at_inference | 在自回归生成过程中运行经过训练的探针 |
| 探测 | list_probes | 列出所有经过训练的探头 |
| 转向系统 | compute_steering_vector | 对比激活添加 |
| 转向系统 | steer_and_generate | 在应用转向的情况下生成 |
| 转向系统 | list_steering_vectors | 列出所有计算向量 |
| 消融 | ablate_layers | 清零层,测量中断 |
| 消融 | patch_activations | 在提示之间交换激活 |
| 因果关系 | trace_token | 哪些层是预测所必需的 |
| 因果关系 | full_causal_trace | 位置×层因果热图(孟等人风格) |
| 剩余 | residual_decomposition | 每层注意力与MLP贡献 |
| 剩余 | layer_clustering | 跨层表示相似性和聚类分离 |
| 剩余 | logit_attribution | 直接logit归因:每层组件对预测令牌的贡献 |
| 剩余 | head_attribution | 人均logit归因:哪些注意力头推向目标代币 |
| 剩余 | top_neurons | 每神经元MLP识别:哪些神经元向目标标记推送 |
| 归因 | attribution_sweep | 使用每个提示摘要跨提示批处理登录归因 |
| 干预 | component_intervention | 零/标度注意力、FFN或某一层的单个头部 |
| 神经元 | discover_neurons | 自动找到区分提示组的神经元 |
| 神经元 | analyze_neuron | 特定神经元:跨提示的激活统计数据 |
| 神经元 | neuron_trace | 通过下游层追踪神经元的影响 |
| 方向 | extract_direction | 通过平均差分、LDA、PCA或探头权重查找方向 |
| 实验 | create_experiment | 创建一个命名实验以实现结果持久性 |
| 实验 | add_experiment_result | 将步骤结果添加到实验中 |
| 实验 | get_experiment | 检索实验及其结果 |
| 实验 | list_experiments | 列出所有已保存的实验 |
| 比较 | load_comparison_model | 加载第二个模型进行并排分析 |
| 比较 | compare_weights | Frobenius范数+每层每个组件的余弦模拟 |
| 比较 | compare_representations | 提示之间的每层激活差异 |
| 比较 | compare_attention | 注意力模式中的人均JS差异 |
| 比较 | compare_generations | 两个模型并排输出的文本 |
| 比较 | unload_comparison_model | 从比较模型中释放VRAM |
| 几何学 | token_space | 标记未嵌入向量与层上残差流之间的角度 |
| 几何学 | direction_angles | 任何方向之间的成对角度(标记、神经元、头部、残差、FFN、注意力、转向向量) |
| 几何学 | subspace_decomposition | 将向量分解为基方向分量+正交残差 |
| 几何学 | residual_trajectory | 通过参考标记的角度跟踪图层中的残余旋转 |
| 几何学 | feature_dimensionality | PCA谱+特征的维度分类 |
| 几何学 | decode_residual | 将残差流解码到词汇空间:原始排名与归一化排名、差距分析、平均方向 |
| 几何学 | computation_map | 完整的预测流程:几何形状、归因、logit镜头竞赛、一次通话中的顶端/神经元 |
| 几何学 | inject_residual | 将供体残余物注入受体一层并继续生成(马尔可夫特性检验)。 donor_layer 从与注入点不同的层捕获 |
| 几何学 | residual_match | 查找与某层目标具有最相似残差流的候选提示 |
| 几何学 | compute_subspace | 不同提示下模型激活的PCA子空间——将基础存储在SubspaceRegistry中 |
| 几何学 | list_subspaces | 列出存储在SubspaceRegistry中的所有命名PCA子空间 |
| 几何学 | residual_atlas | 通过PCA在不同的提示下映射残差流:方差谱、vocab解码主成分 |
| 几何学 | weight_geometry | 地图供应侧:头部/神经元通过未嵌入的有效供应等级推动方向 |
| 几何学 | residual_map | 整个模型的每层方差谱紧凑(无vocab投影) |
| 几何学 | branch_and_collapse | 非折叠叠加:将供体残差注入多个模板,独立进化,折叠到最高置信度 |
| 几何学 | subspace_surgery | 全位置子空间替换:在每个位置交换实体子空间,同时保留正交补码(施主/坐标/查找模式) |
| 几何学 | build_dark_table | 预计算暗坐标查找表:项目参考提示到子空间进行零通注入 |
| 几何学 | list_dark_tables | 列出DarkTableRegistry中的所有暗表 |
资源(4)
| URI | 描述 |
|---|---|
model://info | 当前模型元数据 |
probes://registry | 所有经过培训的探头和精度指标 |
vectors://registry | 所有计算出的转向矢量 |
comparisons://state | 比较模型状态 |
支持的型号
适用于任何型号 楚克·拉扎鲁斯 支持:
- 杰玛 --吉玛3号(270M-27B),翻译吉玛4B/12B
- 大羊驼 --Llama 2/3,米斯特拉尔,斯莫尔LM2
- 通义 --问题2/3
- 花岗岩 --IBM Granite 3.x/4.x(混合曼巴-2/变压器)
- 贾姆巴 --AI21 Jamba(混合曼巴变压器MoE)
- 曼巴 --纯SSM型号
- StarCoder2 --代码生成
- GPT-2 --GPT-2及兼容
默认演示目标: 翻译杰玛4B (34层,适合苹果硅)。 烟雾测试使用 斯莫尔LM2-135M 为了速度。
演示
| 脚本 | 涵盖的工具 | 默认模型 |
|---|---|---|
language_transition_demo.py | 17种工具——旗舰15步工作流程(探测、指导、因果追踪) | gemma-3-4b-it |
comparison_demo.py | 8种工具——两种模型比较(Gemma 3与TranslateGemma) | Gemma-3-4b-it |
deep_dive_demo.py | 8个工具——完整的可解释性管道(logit归因→ 头部→ 神经元) | SmolLM2-135M |
attribution_sweep_demo.py | 3个工具——带有提示汇总表的批量归因 | SmolLM2-135M |
track_race_demo.py | 1个工具——具有交叉检测的多候选logit轨迹 | SmolLM2-135M |
intervention_demo.py | 1个工具——手术部件干预(零/刻度注意力,FFN) | SmolLM2-135M |
experiment_demo.py | 4个工具——实验持久性(创建、添加结果、检索、列表) | SmolLM2-135M |
ablation_demo.py | 4种工具——层烧蚀和激活修补 | SmolLM2-135M |
attention_demo.py | 4种工具——注意力模式和头部熵分析 | SmolLM2-135M |
residual_stream_demo.py | 4种工具——残差分解和层聚类 | SmolLM2-135M |
logit_attribution_demo.py | 3个工具——直接logit归因(知识本地化) | SmolLM2-135M |
causal_tracing_demo.py | 3种工具——因果追踪(观察与干预) | SmolLM2-135M |
geometry_demo.py | 6个工具——激活空间中的角度、轨迹、维度 | SmolLM2-135M |
subspace_demo.py | 12种工具——PCA子空间、残余注射、手术、暗台 | SmolLM2-135M |
copy_circuit_demo.py | 8个工具——复制电路假设(DLA、磁头输出、KV矢量) | SmolLM2-135M |
direction_demo.py | 7种工具——方向提取、转向、探测 | SmolLM2-135M |
neuron_demo.py | 4种工具——神经元发现、分析和下游追踪 | SmolLM2-135M |
smoke_test.py | 53个测试——验证所有具有错误包络覆盖率的工具 | SmolLM2-135M |
演示:语言转换探究
旗舰实验遵循15个步骤的工作流程:
- 加载模型 --
load_model("google/gemma-3-4b-it") - 检查架构 --
get_model_info()显示34层 - 分词 --查看提示如何分解为令牌
- 生成文本 --查看基线模型输出
- 卫生检查激活 --验证激活是否重要
- 在早期层进行比较 --语言表征是不同的
- 在后期进行比较 --表示法收敛
- Logit镜头 --查看预测如何在各个层中演变
- 跟踪令牌 --观察特定代币的概率在各层之间的上升
- 跨层扫描探头 --找到语言身份可解码的地方
- 评估最佳探头 --确认保留的数据
- 计算转向矢量 --法国到德国方向
- 转向生成 --将法语翻译重定向到德语
- 阿尔法扫描 --以不同的转向强度迭代
- 因果追踪 --证明哪些层是预测所必需的
运行它: uv run python examples/language_transition_demo.py
演示:模型比较
将基础模型与其微调后的变体进行比较。先看实际 输出差异 compare_generations,然后找到位置 微调改变了权重、激活和注意力模式。 专为Gemma 3 4B与TranslateGemma 4B而设计,使用低资源 语言(冰岛语、斯瓦希里语、爱沙尼亚语、马拉地语) 显示25-30%的改善
运行它: uv run python examples/comparison_demo.py
建筑
看 建筑.md 10个设计原则。
要点:
- 异步本机 --所有工具都是
async def,CPU密集型工作包asyncio.to_thread - Pydantic土著 --每个数据结构都是类型化的
BaseModel - 模型无关 --适用于9+个模特家庭
- 错误信封 --工具永远不会升起;总是返回结构化错误
- JSON安全边界 --工具返回时转换的MLX阵列
项目结构
src/chuk_mcp_lazarus/
├── server.py # ChukMCPServer instance
├── main.py # Entry point (stdio / http)
├── model_state.py # ModelState singleton
├── probe_store.py # ProbeRegistry singleton
├── steering_store.py # SteeringVectorRegistry singleton
├── comparison_state.py # ComparisonState singleton (2nd model)
├── experiment_store.py # ExperimentStore singleton
├── subspace_registry.py # SubspaceRegistry singleton
├── dark_table_registry.py # DarkTableRegistry singleton
├── resources.py # MCP resources (4 resources)
├── errors.py # Error types + envelope helper (17 error types)
├── _bootstrap.py # Optional dependency stubs
├── _serialize.py # MLX/NumPy -> JSON-safe
├── _generate.py # Shared text generation
├── _compare.py # Shared comparison kernels
├── _extraction.py # Shared activation extraction
├── _residual_helpers.py # Shared residual-stream helpers
└── tools/
├── model/ # load_model, get_model_info
├── generation/ # generate_text, predict_next_token, tokenize,
│ # logit_lens, track_token, track_race, embedding_neighbors
├── activation/ # extract_activations, compare_activations
├── attention/ # attention_pattern, attention_heads
├── residual/ # residual_decomposition, layer_clustering,
│ # logit_attribution, head_attribution, top_neurons
├── neuron/ # discover_neurons, analyze_neuron, neuron_trace
├── probe/ # train_probe, evaluate_probe, scan_probe_across_layers,
│ # probe_at_inference, list_probes
├── steering/ # compute_steering_vector, steer_and_generate,
│ # list_steering_vectors, extract_direction
├── causal/ # trace_token, full_causal_trace,
│ # ablate_layers, patch_activations
├── comparison/ # load_comparison_model, compare_weights,
│ # compare_representations, compare_attention,
│ # compare_generations, unload_comparison_model
├── attribution/ # attribution_sweep
├── intervention/ # component_intervention
├── experiment/ # create_experiment, add_experiment_result,
│ # get_experiment, list_experiments
└── geometry/ # Geometry tools (per-tool subpackage, 18+ tools)
├── _helpers.py # Shared enums, math, direction extraction
├── _injection_helpers.py # Shared injection/generation helpers
└── (one .py per tool)发展
# Install with dev dependencies
uv sync --extra dev
# Run smoke tests
uv run python examples/smoke_test.py
# Run with a different model
uv run python examples/smoke_test.py --model TinyLlama/TinyLlama-1.1B-Chat-v1.0
# HTTP mode for development
uv run chuk-mcp-lazarus http --port 8765需求
- Python>=3.11
- 苹果硅Mac(适用于MLX)
- 楚克·拉扎鲁斯 >= 0.4
- chuk mcp服务器 >= 0.25
许可证
Apache 2.0
