弗兰肯试剂检测
  
一个用于确定性本地检测已安装编码代理工具的小型Rust机箱。
cargo add franken-agent-detection这个箱子是干什么的
许多工具都需要回答一个简单的问题:这台机器上有哪些编码代理连接器?这个crate为您提供了一个一致的报告形状、一个探测流和测试友好的根覆盖。
| 能力 | franken-agent-detection |
|---|---|
| 稳定的JSON可序列化报告 | 是 |
| 显式连接器作用域 | 是(only_connectors) |
| 确定性夹具模式 | 是(root_overrides) |
| 需要异步运行时 | 否 |
| 东京依赖性 | 否 |
示例
use franken_agent_detection::{
detect_installed_agents, AgentDetectOptions, AgentDetectRootOverride,
};
use std::path::PathBuf;
fn main() -> Result> {
let report = detect_installed_agents(&AgentDetectOptions {
only_connectors: Some(vec!["codex".into(), "gemini".into()]),
include_undetected: true,
root_overrides: vec![
AgentDetectRootOverride {
slug: "codex".into(),
root: PathBuf::from("/tmp/mock-codex"),
},
AgentDetectRootOverride {
slug: "gemini".into(),
root: PathBuf::from("/tmp/mock-gemini"),
},
],
})?;
println!(
"Detected {} of {}",
report.summary.detected_count, report.summary.total_count
);
Ok(())
}设计目标
- 保持下游工具和快照测试的输出稳定。
- 保持行为明确,包括连接器规范化和未知连接器错误。
- 将检测保持在文件系统探测器的本地,没有网络依赖性。
- 使用同步API保持运行时中立。
比较
| 方法 | 优点 | 缺点 |
|---|---|---|
franken-agent-detection | 共享架构、测试覆盖、一致的连接器处理 | 聚焦范围(仅检测) |
| 每个项目的临时检查 | 快速启动 | 漂移、输出不一致、重复错误 |
| 完整的搜索/索引系统 | 功能丰富 | 安装检测不必要的权重 |
安装
crates.io(推荐)
cargo add franken-agent-detectionCargo.toml
[dependencies]
franken-agent-detection = "0.1.7"来源
git clone https://github.com/Dicklesworthstone/franken_agent_detection
cd franken_agent_detection
cargo test快速开始
- 添加crates.io中的依赖项。
- 呼叫
detect_installed_agents(&AgentDetectOptions::default()). - 阅读
report.installed_agents和report.summary. - 使用
only_connectors当你想进行范围检查时。 - 使用
root_overrides用于确定性测试。
API 参考
| 项目 | 目的 |
|---|---|
AgentDetectOptions | 控制连接器过滤和覆盖根 |
AgentDetectRootOverride | 每个连接器自定义探头根 |
detect_installed_agents | 运行探测并生成完整报告 |
InstalledAgentDetectionReport | 顶级报告有效载荷 |
AgentDetectError | UnknownConnectors 以及与功能相关的错误 |
配置
机箱是通过函数输入而不是环境变量配置的:
AgentDetectOptions {
only_connectors: Some(vec!["codex".into(), "claude".into()]),
include_undetected: false,
root_overrides: vec![],
}检测是如何工作的
detect_installed_agents(opts)
|
+--> normalize connector slugs
+--> validate known connectors
+--> build probe roots (default + overrides)
+--> filesystem existence checks
+--> stable InstalledAgentDetectionReport故障排除
| 症状 | 原因 | 修复 |
|---|---|---|
UnknownConnectors 错误 | 无法识别连接器段 | 使用已知段(codex, claude, gemini等等) |
| 空结果 | 此计算机上不存在根 | 设置 include_undetected = true 检查证据 |
| 非确定性测试 | 测试中的真实主目录探测 | 使用 root_overrides 带有临时目录 |
| 报告中缺少连接器 | 范围连接器将其排除 | 删除或展开 only_connectors |
| 文档不匹配 | 本地版本与Docs.rs不同 | 将机箱版本与文档URL对齐 |
局限性
- 仅用于安装检测;没有会话解析或索引。
- 默认探测根是固执己见的,在自定义环境中可能需要重写。
- 无背景观看;检查仅在调用时运行。
常见问题
这个crate需要tokio或任何异步运行时吗?
不是。它是同步的,运行时中立的。
是否需要网络访问?
否。检测仅是本地文件系统探测。
我可以在CI中进行确定性测试吗?
对。使用 root_overrides 使用临时夹具目录。
报告模式的稳定性如何?
该报告适用于机器消耗,版本为 format_version.
这能检测到所有可能的代理工具吗?
它检测精心策划的连接器集和别名。未知连接器返回显式错误。
关于捐款
*关于捐款:* 请不要误解,但我不接受外界对我的任何项目的捐款。我只是没有足够的精神带宽来复习任何东西,而且这是我的名字,所以我对它造成的任何问题负责;因此,在我看来,风险回报是高度不对称的。我还得担心其他“利益相关者”,这对我主要为自己免费制作的工具来说似乎是不明智的。如果你想说明拟议的修复方案,可以随时提交问题,甚至PR,但要知道我不会直接合并它们。相反,我会让克劳德或食品法典委员会通过以下方式提交审查意见 gh 并独立决定是否以及如何解决这些问题。特别欢迎Bug报告。如果这冒犯了我,我很抱歉,但我想避免浪费时间和伤害感情。我知道这与寻求社区贡献的主流开源精神不一致,但这是我以这种速度前进并保持理智的唯一方法。许可证
麻省理工学院
