关于 Carrick
Carrick 为 AI Agent 和 IDE 提供 TypeScript 代码库分析,可索引单体仓库或跨仓库服务,并追踪路由、类型和调用关系。它通过 MCP、LSP 和 CI 提供代码搜索、契约检查与变更影响信息。
主要功能
- 01索引多个 TypeScript 仓库与服务
- 02按函数意图搜索现有实现
- 03追踪跨服务调用与 API 契约
- 04检查消费者与提供者类型兼容性
- 05在 CI 和 IDE 中报告变更风险
适用场景
- 01修改 API 前查找受影响的调用方
- 02为 Agent 查找可复用的现有函数
- 03在拉取请求中发现服务契约不一致
MCP 相关
Carrick 将索引作为结构化工具提供给 MCP Agent,涵盖意图搜索、调用方查询、服务图和类型兼容性检查等。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.carrick.tools/mcpclaude mcp add --transport http carrick-tools-carrick https://api.carrick.tools/mcp{"mcpServers":{"carrick-tools-carrick":{"type":"http","url":"https://api.carrick.tools/mcp"}}}在 Cursor 中打开{"servers":{"carrick-tools-carrick":{"type":"http","url":"https://api.carrick.tools/mcp"}}}在 VS Code 中打开{"mcpServers":{"carrick-tools-carrick":{"type":"http","url":"https://api.carrick.tools/mcp"}}}{"mcpServers":{"carrick-tools-carrick":{"serverUrl":"https://api.carrick.tools/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Carrick
面向 AI Agent 和 IDE 的 TypeScript 代码库智能分析。
在完整栈和多服务代码库中工作的编码 Agent,经常会重复开发已有的辅助工具、依赖过时的类型定义,还会在不了解哪些调用方会受影响的情况下修改 API 契约。
Carrick 会为整个 TypeScript 生态系统建立索引,涵盖前端应用和后端服务,无论它们位于单体仓库还是分布在多个代码库中。Carrick 与 TypeScript 编译器深度集成,可追踪每条路由、每种类型和每次跨服务调用,同时记录函数行为,让 Agent 能按意图而非名称搜索,并基于真实架构开展工作。
Carrick 通过 MCP 为 AI Agent 提供服务,通过 LSP 支持 IDE,确保模型在生成新代码前能看到已有端点和实用工具。扫描器采用源代码可用模式,可通过命令行或 CI 流水线运行,并提供免费方案,让你立即开始构建更安全的 Agent 工作流。
开始使用
npm install -g carrick
carrick init
carrick init 会为你登录,询问要索引哪些代码库,并连接你的 Agent。随后,你的 Agent 会为每个代码库编写 carrick.json 并运行首次扫描。快速入门中提供了详细说明(需要 Node 24 或更高版本)。
一个索引,三个使用场景
通过 Agent 搜索现有代码,在编辑器中检查实时契约,并在拉取请求中发现破坏性变更。
在你的 Agent 中
为 AI 助手提供完整上下文,了解已有内容、端点的结构,以及变更会影响哪些调用方。Carrick 会根据每个函数的实际功能建立映射,让 Agent 找到已有实现并在其基础上继续开发,即使相关代码库尚未在本地检出也可以。端点类型直接从暴露这些端点的服务所使用的 TypeScript 编译器中提取。
兼容所有支持 MCP 的 Agent,包括 Claude Code、Cursor、Windsurf 和 Codex。
在你的编辑器中
检查跨服务契约,并在相互关联的文件之间跳转,无需离开 IDE。当代码位于磁盘上时,“转到定义”会从服务调用直接跳转到对应处理程序,而 Code Lens 会以内联方式显示本地索引中的所有调用方。如果前端调用与后端处理程序不同步,Carrick 会将类型不匹配显示为原生编辑器诊断信息。
可在 Visual Studio Marketplace 和 Open VSX 获取,也可以作为标准 LSP 服务运行。
在你的拉取请求中
将同一索引用于 CI,以发现契约风险、重复工作和未察觉的版本漂移。如果生产方和消费方不同步,无论使用何种协议,Carrick 都会在 PR 合并前直接标出确切的不匹配之处。它还会检查各服务之间的依赖版本,及早发现冲突的软件包更新。
技能
Carrick 内置四种技能,用于应对最常见的 Agent 失误:破坏其他服务中的调用方、重新实现已有代码、信任其他服务类型的过期副本,以及遗漏代码库范围变更中的位置。每种技能都会从 Carrick 索引中获取答案。carrick init 会将它们安装到 .claude/skills/ 和 .agents/skills/ 中。
| 技能 | 使用场景 | 返回内容 |
|---|---|---|
carrick-impact | 在更改或删除路由、处理程序、响应结构、事件或共享函数之前,或想询问“谁调用了它?”时 | 所有依赖于即将更改代码的内容;每项都附有文件和行号,并为每个使用方提供类型判定 |
carrick-reuse | 在添加或更改函数的任务结束时,或想询问“这已经存在了吗?”时 | 将新函数与完整函数索引进行比较,并指出项目中重复实现同一功能的位置 |
carrick-drift | 更改请求或响应类型之前,或兼容性判定指出了你无法定位的问题时 | 并列显示生产方的类型、每个使用方调用点的预期类型以及存储的判定,一次处理一个操作 |
carrick-census | 用于“找出所有执行 X 的位置”这类问题 | 找出同一概念两种表述的所有匹配项,逐页查至末尾,并将结果合并为一份列表并附上凭证 |
询问你的 Agent
- “哪些函数会在我们的服务之间处理 webhook 签名?”
- “我们在哪里按电子邮件对用户去重?”
- “哪些内容调用了
/api/users,每个调用方预期的响应结构是什么?” - “列出所有会在遇到速率限制错误时重试的函数。”
MCP 工具
MCP 端点会将索引作为结构化工具公开,供你的 Agent 直接调用。MCP 工具参考列出了每个工具的参数和响应。
| 工具 | 用途 |
|---|---|
search_by_intent | 按函数的用途搜索,将自然语言查询与每个函数的意图进行匹配 |
find_similar | 查找相似函数,适用于你即将编写的代码或项目中已有的重复代码 |
list_function_intents | 按服务或文件逐页浏览已编入索引的函数及其意图 |
get_project_map | 显示项目地图,简要概述服务、契约和未匹配的调用 |
list_projects | 列出工作区项目及其关联的仓库 |
list_services | 列出项目的服务,以及每项服务的端点、调用和函数数量 |
get_service_graph | 显示跨服务调用图,包括未匹配的调用和孤立端点 |
get_operation | 根据方法和路径,查找某个操作的服务方和调用方 |
get_callers | 查找项目中任何位置对某个函数的调用方 |
get_api_endpoints | 列出服务通过 HTTP、GraphQL、WebSockets 和 pub/sub 提供的操作 |
get_endpoint_types | 读取端点的请求和响应类型,类型由 TypeScript 编译器解析 |
get_type_definition | 将具名类型定义解析为展开后的 TypeScript |
check_compatibility | 检查使用方与生产方之间的兼容性,并为每个调用提供类型判定 |
get_service_dependencies | 读取单个服务或整个项目的 npm 依赖项和版本冲突 |
list_external_calls | 列出发往外部目标的出站调用,例如 SDK 调用、外部域名和环境变量 URL |
get_contract_pair | 按操作逐一比较使用方和生产方的类型 |
scaffold | 生成 Carrick 配置文件(工作流、Carrick 技能、carrick.json 和 Claude Code 钩子) |
保持索引为最新
GitHub Action 会在每次推送到 main 时更新索引中对应仓库的部分。它在 CI 中以只读方式运行,无需存储 API 密钥。
name: Carrick
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
id-token: write
contents: read
jobs:
carrick:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: carrick-tools/carrick@v1
构建索引介绍了完整工作流,包括按需重新扫描、安装依赖项和配置 monorepo。
文档
许可
Carrick 提供免费版,付费方案请见定价页面。本仓库中的扫描器以源代码可见的形式根据 Elastic License 2.0 授权。版权所有 (c) 2026 Far Harbour B.V.
开发
有关构建、测试和贡献规范,请参阅 AGENTS.md。
cargo test
cargo fmt
cargo clippy
安装可选的 pre-commit 钩子,以便在每次提交前运行格式检查和测试:
./scripts/install-hooks.sh
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
