mytuo1/supergrokie

GitHub: mytuo1/supergrokie

一款支持多供应商接入的终端 AI 代码助手,帮助开发者在命令行中灵活调用各类大模型完成编程、文件操作和代码审查等任务。

Stars: 19 | Forks: 4

# Super Grokie — 多提供商 AI 代码助手 Super Grokie 是一个基于终端的 AI 代码助手,可与**任何**具备推理能力的 API 配合使用:OpenAI、xAI (Grok)、Anthropic、本地模型(Ollama、LM Studio、vLLM),以及任何 OpenAI 兼容的 endpoint。 它提供了一个交互式 REPL,支持工具使用(bash、文件读/写/编辑、glob、grep、网络搜索、MCP)、会话管理、成本跟踪和多 Agent 工作流 —— 所有这些都由一个使用 **Bun** 构建的 `main.tsx` 入口驱动。 ## 快速开始 ``` # 1. 安装 Bun(如果尚未安装) curl -fsSL https://bun.sh/install | bash # 2. Clone & install git clone https://github.com/mytuo1/supergrokie.git cd supergrokie bun install ``` 或者根据您的平台运行 `./install.sh` 或 `./install.cmd`。 ``` # 3. Configure your provider # (首次运行时创建 ~/.supergrok/providers.json) export SUPERGROK_PROVIDER=openai export OPENAI_API_KEY=sk-... # 4. Run bun run dev # hot-reload dev mode # — 或 — bun run build # one-shot production build bun run start # run the production build ``` ## 支持的提供商 | 提供商 | 密钥环境变量 | 默认 base URL | 示例模型 | |----------|----------------|------------------|----------------| | **OpenAI** | `OPENAI_API_KEY` | `https://api.openai.com/v1` | gpt-5.4-nano, gpt-5.4-mini, gpt-4o | | **xAI** | `XAI_API_KEY` | `https://api.x.ai/v1` | grok-4.20, grok-3, grok-3-mini | | **Anthropic** | `ANTHROPIC_API_KEY` | `https://api.anthropic.com/v1` | claude-sonnet-4-5-20250929, claude-opus-4-6 | | **本地** | *(不需要)* | `http://localhost:11434/v1` | llama3, deepseek-r1, qwen3 | | **任何 OpenAI 兼容** | `SUPERGROK_API_KEY` | 通过 `SUPERGROK_BASE_URL` 设置 | 您的 endpoint 提供的任何模型 | ## 配置 SuperGrok 从 `~/.supergrok/providers.json` 读取其配置。 首次启动时会创建一个默认模板: ``` { "activeProvider": "openai", "providers": { "openai": { "apiKey": "sk-...", "baseURL": "https://api.openai.com/v1", "defaultModel": "gpt-5.4-mini", "models": [ { "name": "gpt-5.4-nano", "label": "GPT-5.4 Nano", "description": "Fast and lightweight" }, { "name": "gpt-5.4-mini", "label": "GPT-5.4 Mini", "description": "Balanced performance" } ] }, "xai": { "apiKey": "xai-...", "baseURL": "https://api.x.ai/v1", "defaultModel": "grok-4.20", "models": [ { "name": "grok-4.20", "label": "Grok 4.20", "description": "Latest Grok model" } ] }, "anthropic": { "apiKey": "sk-ant-...", "baseURL": "https://api.anthropic.com/v1", "defaultModel": "claude-sonnet-4-5-20250929" }, "local": { "baseURL": "http://localhost:11434/v1", "defaultModel": "llama3", "models": [ { "name": "llama3", "label": "LLaMA 3", "description": "Meta LLaMA 3" } ] } } } ``` ### 环境变量覆盖 | 变量 | 用途 | |----------|---------| | `SUPERGROK_PROVIDER` | 在运行时覆盖当前活动的提供商 | | `SUPERGROK_API_KEY` | 覆盖当前活动的提供商的 API 密钥 | | `SUPERGROK_BASE_URL` | 覆盖当前活动的提供商的 base URL | | `SUPERGROK_MODEL` | 覆盖当前活动的提供商的默认模型 | | `SUPERGROK_CONFIG_DIR` | 自定义配置目录(默认为 `~/.supergrok`) | | `SUPERGROK_PROVIDERS_CONFIG` | 自定义 `providers.json` 的完整路径 | | `OPENAI_API_KEY` | 旧版:当提供商为 `openai` 时自动使用 | | `XAI_API_KEY` | 旧版:当提供商为 `xai` 时自动使用 | | `ANTHROPIC_API_KEY` | 旧版:当提供商为 `anthropic` 时自动使用 | ## 功能开关 功能开关本地存储在 `~/.supergrok/features.json` 中。 通过 `SUPERGROK_FC_OVERRIDES` 环境变量(JSON 字符串)覆盖任何开关: ``` SUPERGROK_FC_OVERRIDES='{"my_feature":true}' bun run dev ``` 不会联系任何外部服务(GrowthBook、Statsig 等)。 ## 分析与遥测 所有分析都**仅在本地进行**。事件将被追加到: ``` ~/.supergrok/analytics.log ``` 这是一个 JSONL 文件(每行一个 JSON 对象),您可以随时检查、grep 或删除它。不会向 Datadog、Anthropic 或任何第三方发送任何数据。 ## 架构 ``` src/ ├── main.tsx # CLI entry point (commander + React Ink REPL) ├── services/ │ └── api/ │ ├── providers/ # ★ Multi-provider abstraction layer │ │ ├── types.ts # Universal types replacing @anthropic-ai/sdk │ │ ├── provider.ts # AIProvider interface │ │ ├── config.ts # providers.json reader │ │ ├── registry.ts # Provider singleton registry │ │ ├── openaiCompatible.ts # OpenAI/xAI/local adapter │ │ └── index.ts # Barrel export │ ├── claude.ts # Core message loop (provider-agnostic types) │ ├── client.ts # API client factory │ ├── errors.ts # Error classification │ └── withRetry.ts # Retry with exponential backoff │ └── analytics/ │ ├── growthbook.ts # Local feature flag system (no SDK) │ ├── firstPartyEventLogger.ts # Local JSONL file logger │ ├── datadog.ts # No-op stub │ └── ... ├── tools/ # Tool implementations (Bash, FileRead, etc.) ├── commands/ # Slash-commands (/model, /help, /cost, etc.) ├── utils/ │ ├── auth.ts # Auth utilities (OAuth disabled, key from config) │ ├── model/ # Model definitions & switching │ ├── messages.ts # Message normalization │ └── ... └── constants/ ├── system.ts # System prompt prefix └── ... ``` ## 可用命令 在 REPL 中,输入 `/` 查看所有命令。主要命令如下: | 命令 | 描述 | |---------|-------------| | `/model ` | 动态切换模型 | | `/cost` | 显示会话成本和 token 使用情况 | | `/help` | 列出所有命令 | | `/config` | 查看 / 编辑设置 | | `/compact` | 压缩对话上下文 | | `/review` | 运行代码审查 | | `/diff` | 显示 git diff | | `/commit` | 生成并应用一个 commit | ## 构建 ``` bun run build # → dist/cli.js ``` 构建使用 Bun 的打包器并加上 `--packages external` 参数,以便在运行时解析原生依赖(sharp、chokidar 等)。 ## 功能状态(对比原版 Claude Code) SuperGrok 是 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 的一个分支。 下表总结了哪些功能正常运作、哪些被有意移除以及哪些发生了变化。 ### ✅ 正常运作 | 功能 | 说明 | |---------|-------| | 交互式 REPL (TUI) | 支持所有提供商的全屏终端 UI | | 非交互式 / 打印模式 (`-p`) | 单次提示输出到 stdout | | 所有内置工具 | Bash、Edit、Read、Write、Glob、Grep、WebFetch、WebSearch、Task 等 | | MCP server 支持 | `mcp list`、`mcp add`、自定义工具 | | 会话持久化 | `--resume`、`--continue`、`--name` | | `/model` 选择器 | 跨提供商模型切换 | | 成本跟踪 (`/cost`) | 每个会话的 token 使用情况 | | 多 Agent 工作流 | Agent 工具、内置 Agent | | 权限模式 | `acceptEdits`、`plan`、`--dangerously-skip-permissions` | | 自定义 system prompt | `--system-prompt`、`--append-system-prompt` | | SUPERGROKIE.md 项目指令 | 在项目根目录自动发现 | | 调试模式 | `--debug`、`--debug-file` | | 插件 | `plugin list`、`plugin install` | ### ❌ 已移除(有意为之) | 功能 | 原因 | |---------|--------| | 通过 claude.ai 的 OAuth 登录 | 替换为来自配置 / 环境变量的 API-key 认证 | | AWS Bedrock 提供商 | SDK 已移除 —— 如有需要,请使用带有自定义 `baseURL` 的 Anthropic 提供商 | | GCP Vertex AI 提供商 | SDK 已移除 | | Foundry 提供商 | SDK 已移除 | | 订阅 / 等级检测 | 无单一供应商的订阅模式 | | 查询前配额检查 | 每个提供商管理自己的速率限制 | | 远程遥测(Datadog、GrowthBook) | 替换为仅限本地的分析(`~/.supergrok/analytics.log`) | ### ⚠️ 已知限制 | 领域 | 详情 | |------|--------| | `claude-code-guide` Agent 名称 | 内置的指南 Agent 仍然保留了旧版名称 | | 部分内部 URL 引用 `claude.ai` | 用于 Chrome 扩展 / 远程会话的产品 URL 是残留的 | | `--help` 输出中的 `Usage: claude` | 帮助文本中的 CLI 程序名称仍然显示上游名称 | ## 另请参阅 - [deployment.md](deployment.md) — 在 Ubuntu、macOS 和 Windows 上的分步部署 - [instructions.md](instructions.md) — 所有配置变量、值和更改详情
标签:AI编程助手, Bun, TypeScript, 多智能体, 多模型接入, 安全插件, 自动化攻击