此存储库为Claude Code代理环境提供了一套扩展,包括模型上下文协议(MCP)服务器、生命周期挂钩和任务编排脚本。该系统旨在扩展代理在web数据检索、运行时安全实施和并行任务执行方面的能力。
架构和组件交互
代码库分为四个主要功能域:
- 网络搜索和内容检索(MCP): 这
conduit-websearch服务器实现了模型上下文协议,以公开用于通过Brave Search API搜索web和获取远程资源的工具。检索管道使用多阶段转换过程:HTML通过readabilipy用于内容提取和markdownify对于Markdown转换,而二进制格式(PDF、DOCX、XLSX、PPTX)则通过markitdown. - 运行时干预(挂钩和安全指导): 这些组件利用Claude Code的钩子系统来拦截代理操作。
Hookify实现了一个动态规则引擎,该引擎从本地Markdown文件中解析YAML frontmatter,使用正则表达式和字符串比较根据工具输入评估条件。Security Guidance提供了一个专门的实现,用于检测常见漏洞,如GitHub Actions中的命令注入或eval()和child_process.exec(). - 并行编排(批调度): 这
batch-dispatch技能管理多个Claude Code实例的并发执行。它使用异步信号量控制的工作器模型来生成隔离的子流程,通过强制执行每个任务的工作目录来利用代理的原生沙盒功能。 - 可扩展性框架(技能创建者): 一组用于构建、验证和打包模块化“技能”的实用程序。这包括技能元数据的模式实施和基于zip的打包到
.skill分发文件。
关键实施细节
并发和资源管理: 这 batch_runner.py 脚本利用 asyncio.Semaphore 限制并发工作进程(默认为5)。每个worker都在一个唯一的临时目录中操作,以防止文件系统冲突。任务受可配置超时(默认600秒)的约束,通过以下方式实现 asyncio.wait_for,在超时时显式终止子进程,以防止僵尸进程。
数据流和内容处理: 在 fetch_url 工具,MIME类型分派器确定处理路径。对于HTML,决定使用Readability是为了通过剥离样板导航和广告来最大限度地提高LLM的信息密度。超过8000个字符的内容会自动分页,并包括一个基于Markdown标题生成的目录,以使代理能够高效地导航大型文档。
错误处理和稳定性: 插件挂钩(例如。, pretooluse.py)采用失败开放的哲学设计。脚本使用详尽 try-except 块,通常以代码0退出,以确保钩子逻辑中的故障不会阻塞主代理循环,除非安全规则明确触发块(退出代码2)。安全警告的状态管理在中保持不变 ~/.claude/ 使用会话键控JSON文件来防止同一上下文中的冗余通知。
技术限制和决策:
- Markdown转换:
markitdown用于二进制文件而不是更简单的文本提取器,因为它保留了对LLM推理至关重要的结构元素(表、列表)。 - 正则表达式缓存: 这
RuleEngine利用functools.lru_cache用于编译正则表达式模式以最小化高频工具调用期间的开销(例如。,MultiEdit操作)。 - 沙盒: 这
batch_runner明确检查/sandbox自动允许配置。之所以做出这一决定,是因为在没有文件系统限制的情况下运行并行无头代理会带来意外递归文件修改的高风险。
操作环境和限制
- 勇敢的API依赖关系: 搜索功能需要
BRAVE_API_KEY环境变量。 - 依赖关系管理: 这
batch_runner使用内联脚本元数据格式(PEP 723)进行依赖性规范,需要一个兼容的运行器,如uv或手动安装jinja2. - 挂钩路径: 插件依赖于
CLAUDE_PLUGIN_ROOT环境变量由主机环境正确设置以解析内部模块。 - MIME嗅探: 如果服务器提供的MIME类型不正确或缺失
fetch_url工具退回到检查前100个字符<html默认为原始文本之前的标记。
