supermodeltools/cli
GitHub: supermodeltools/cli
通过构建代码调用与依赖图谱并写入纯文本文件,帮助 AI 代理更全面理解代码库,从而节省令牌成本并提升变更影响分析的精度。
Stars: 20 | Forks: 6
# Supermodel CLI
使用代码 graphs 可节省高达 40% 的代理令牌成本。
Supermodel 会映射你仓库中的每个文件、函数和调用关系,并在每个源文件旁边写入 `.graph` 文件。你的代理通过 grep 和 cat 自动读取它们。无需更改提示词。无需额外的上下文窗口。无需学习新工具。
```
curl -fsSL https://supermodeltools.com/install.sh | sh
```
## 工作原理
**1. 映射你的代码库**
```
supermodel watch
```
将你的仓库上传到 Supermodel API,构建完整的调用图,并在每个源文件旁边写入 `.graph` 文件。持续运行以在编码时保持文件更新。
**2. 代理自动读取图谱**
`.graph` 文件是纯文本。任何能够读取文件的代理——Claude Code、Cursor、Copilot、Windsurf——都会通过其常规文件读取工具自动获取它们。代理端无需配置。
**3. 提问任意内容**
你的代理现在可以完整查看你的调用图、导入、域和影响范围——针对仓库中的每个文件,而不仅仅是编辑器中打开的文件。
## 适用于任何 AI 代理
`.graph` 文件是通过 grep 和 cat 读取的纯文本。不需要任何代理特定的集成。
| 代理 | 设置 |
|---|---|
| **Claude Code** | 运行 `supermodel watch`;安装实时更新钩子(设置向导会自动处理) |
| **Cursor** | 运行 `supermodel watch`;打开任何源文件时 `.graph` 文件会出现在上下文中 |
| **GitHub Copilot** | 运行 `supermodel watch`;在编辑器中打开 `.graph` 文件以将其包含在上下文中 |
| **Windsurf** | 与 Cursor 相同 |
| **Aider** | 运行 `supermodel watch`,然后传递 `--read '**/*.graph.*'` 以包含所有图谱文件 |
| **其他任意代理** | 运行 `supermodel watch` —— 如果它能读取文件,就能读取 `.graph` 文件 |
要在 Claude Code 中启用实时更新,请在 `.claude/settings.json` 中添加以下钩子:
```
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{"type": "command", "command": "supermodel hook"}]
}]
}
}
```
如果检测到 Claude Code,`supermodel setup` 向导会自动安装此钩子。
## 安装
### macOS
```
brew install supermodeltools/tap/supermodel
```
### Linux / macOS(使用 curl)
```
curl -fsSL https://supermodeltools.com/install.sh | sh
```
在首次安装并连接到终端时,会自动运行设置向导。
### 从源码安装
```
git clone https://github.com/supermodeltools/cli
cd cli
go build -o supermodel .
```
## 快速开始
```
supermodel setup # authenticate + configure (runs automatically after install)
cd /path/to/your/repo
supermodel watch # generate graph files and keep them updated
```
## 命令
### 文件模式
管理写入每个源文件旁边的 `.graph.*` 分片文件。代理在不发起 API 调用的情况下读取这些文件。
| 命令 | 描述 |
|---|---|
| `analyze [path]` | 上传仓库,运行完整分析,写入图谱文件(使用 `--three-file` 获取最佳结果,使用 `--no-shards` 跳过分片) |
| `skill` | 打印代理感知提示——可管道到 `CLAUDE.md` 或 `AGENTS.md` |
| `watch [path]` | 启动时生成图谱文件,然后持续增量更新 |
| `clean [path]` | 从仓库中删除所有 `.graph.*` 文件 |
| `hook` | Claude Code 的 `PostToolUse` 钩子——将文件变更事件转发给 `watch` 守护进程 |
### 三文件分片格式(推荐)
为获得最佳效果,请使用 `--three-file` 标志生成独立的 `.calls`、`.deps` 和 `.impact` 文件,而不是单个 `.graph` 文件:
```
supermodel analyze --three-file
```
这为每个源文件生成三个文件:
```
src/cache.go → src/cache.calls.go # who calls what, with file:line
→ src/cache.deps.go # imports and imported-by
→ src/cache.impact.go # risk level, domains, blast radius
```
三文件格式在基准测试中**快 68%**,因为 grep 命中更精确——搜索函数名时只会命中包含调用/被调用数据的 `.calls` 文件,而不是合并后的数据块。
**通过以下方式告知代理这些文件**:将其添加到 `CLAUDE.md` 或 `AGENTS.md` 中:
```
supermodel skill >> CLAUDE.md
```
或手动添加:
```
This repository has Supermodel graph shard files next to source files.
Files ending in .calls.* contain function call relationships.
Files ending in .deps.* contain dependency relationships.
Files ending in .impact.* contain blast radius data.
Read these files to understand relationships between modules before making changes.
```
### 按需分析
| 命令 | 描述 |
|---|---|
| `dead-code [path]` | 使用静态分析查找不可达函数(别名:`dc`) |
| `blast-radius [file]` | 显示更改文件、函数或差异所影响的文件和函数(别名:`br`、`impact`) |
| `audit` | 代码库健康报告:循环依赖、耦合度指标、高影响范围文件 |
| `focus ` | 针对文件的令牌高效图谱切片——导入、调用者、类型(别名:`ctx`、`context`) |
| `find ` | 在整个代码库中查找符号的使用和调用者 |
| `graph [path]` | 显示完整的仓库图谱(人类可读表格、JSON 或 Graphviz DOT) |
### 代码工具
| 命令 | 描述 |
|---|---|
| `compact [path]` | 剥离注释并缩短标识符以减少令牌使用(别名:`pack`、`minify`) |
| `docs [path]` | 生成静态 HTML 架构文档站点 |
| `restore` | 构建项目上下文摘要以在上下文压缩后恢复 Claude 的理解 |
### 代理集成
| 命令 | 描述 |
|---|---|
| `mcp` | 启动一个 stdio MCP 服务器,将图谱工具暴露给 Claude Code 和其他 MCP 主机 |
### 认证与配置
| 命令 | 描述 |
|---|---|
| `setup` | 交互式设置向导——认证、配置文件模式、安装 Claude Code 钩子 |
| `login` | 使用你的 Supermodel 账户认证(浏览器或 `--token` 用于 CI) |
| `logout` | 移除存储的凭证 |
| `status` | 显示认证和缓存状态 |
## 在 README 中添加徽章
```
[](https://supermodeltools.com)
```
[](https://supermodeltools.com)
## 配置
设置存储在 `~/.supermodel/config.yaml` 中。环境变量会覆盖文件值。
```
api_key: smsk_... # or SUPERMODEL_API_KEY
api_base: https://... # or SUPERMODEL_API_BASE (default: https://api.supermodeltools.com)
output: human # human | json
files: true # set false to disable .graph.* writing globally (or SUPERMODEL_FILES=false)
```
对于 CI 或非交互式环境:
```
SUPERMODEL_API_KEY=smsk_live_... supermodel analyze
```
## MCP 设置
要通过模型上下文协议将 Supermodel 图谱工具直接暴露给 Claude Code,请将服务器添加到 `~/.claude/config.json`:
```
{
"mcpServers": {
"supermodel": {
"command": "supermodel",
"args": ["mcp"]
}
}
}
```
公开 MCP 工具:`analyze`、`dead_code`、`blast_radius`、`get_graph`。
## 链接
| | |
|---|---|
| **网站** | [supermodeltools.com](http://supermodeltools.com) |
| **API 文档** | [api.supermodeltools.com](https://api.supermodeltools.com) |
| **仪表板** | [dashboard.supermodeltools.com](https://dashboard.supermodeltools.com) |
| **X / Twitter** | [@supermodeltools](https://x.com/supermodeltools) |
| **联系** | [abe@supermodel.software](mailto:abe@supermodel.software) |
*有问题?请打开议题或邮件联系 [abe@supermodel.software](mailto:abe@supermodel.software)。*
标签:Aider, AI编码助手, blast radius分析, Claude Code, Cursor, EVTX分析, GitHub Copilot, grep cat读取, SEO: AI编码优化, SEO: 代码图谱工具, SEO: 降低token成本, Token成本优化, Windsurf, 云安全监控, 仓库映射, 代码分析, 代码可视化, 代码图谱, 低成本代码分析, 依赖图谱, 凭证管理, 函数关系, 图文件分析, 性能优化, 扇区影响分析, 技术栈: CLI, 技术栈: Shell, 无需配置, 日志审计, 检测绕过, 死代码检测, 自动化代码洞察, 调用图谱, 静态分析