{"id":50125529,"url":"https://github.com/LichAmnesia/openseek","last_synced_at":"2026-06-09T11:00:55.309Z","repository":{"id":356842160,"uuid":"1234289791","full_name":"LichAmnesia/openseek","owner":"LichAmnesia","description":"OpenSeek - 广度求索: open-source TUI coding agent with multi-provider routing, MCP, LSP, and Plan/Agent/YOLO modes.","archived":false,"fork":false,"pushed_at":"2026-05-26T03:35:39.000Z","size":567,"stargazers_count":159,"open_issues_count":2,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T17:34:50.601Z","etag":null,"topics":["ai-agent","bun","cli","coding-agent","lsp","mcp","tui","typescript"],"latest_commit_sha":null,"homepage":"https://openseek.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LichAmnesia.png","metadata":{"files":{"readme":"README-zh.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"LichAmnesia"}},"created_at":"2026-05-10T01:47:22.000Z","updated_at":"2026-05-26T17:16:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/LichAmnesia/openseek","commit_stats":null,"previous_names":["lichamnesia/openseek"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/LichAmnesia/openseek","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LichAmnesia%2Fopenseek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LichAmnesia%2Fopenseek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LichAmnesia%2Fopenseek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LichAmnesia%2Fopenseek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LichAmnesia","download_url":"https://codeload.github.com/LichAmnesia/openseek/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LichAmnesia%2Fopenseek/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34103357,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","bun","cli","coding-agent","lsp","mcp","tui","typescript"],"created_at":"2026-05-23T20:00:20.650Z","updated_at":"2026-06-09T11:00:55.300Z","avatar_url":"https://github.com/LichAmnesia.png","language":"TypeScript","funding_links":["https://github.com/sponsors/LichAmnesia"],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# OpenSeek · 广度求索\n\n### 开源 TUI 编码代理 — 多 provider、MCP、LSP、Plan/Agent/YOLO 三种模式\n\n[![Version](https://img.shields.io/github/v/release/LichAmnesia/openseek?color=blue\u0026label=version)](https://github.com/LichAmnesia/openseek/releases)\n[![License](https://img.shields.io/github/license/LichAmnesia/openseek?color=green)](./LICENSE)\n[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20WSL2-lightgrey.svg)](#环境要求)\n[![Built with Bun](https://img.shields.io/badge/built%20with-Bun%201.3-orange.svg)](https://bun.sh)\n[![Stars](https://img.shields.io/github/stars/LichAmnesia/openseek?style=social)](https://github.com/LichAmnesia/openseek)\n\n### 🌐 官网: **[openseek.dev](https://openseek.dev/)**\n\n[English](./README.md) | 中文\n\n\u003c/div\u003e\n\n## ❤️ 赞助商\n\n\u003e 想出现在这里？提 issue 联系。\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"180\"\u003e\u003ca href=\"https://relayrouter.io/register?aff=BZP9UY6W9CBZ\"\u003e\u003cstrong\u003eRelayRouter\u003c/strong\u003e\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003e感谢 \u003ca href=\"https://relayrouter.io/register?aff=BZP9UY6W9CBZ\"\u003eRelayRouter\u003c/a\u003e 对本项目的赞助！RelayRouter 是一个多协议 AI API 中转 —— 一个 key, 调所有模型。同时兼容 OpenAI \u003ccode\u003e/v1/chat/completions\u003c/code\u003e 和 Anthropic \u003ccode\u003e/v1/messages\u003c/code\u003e 两种协议, 按 API key 的 group 自动派发: Claude · GPT-5.x · Codex · Gemini · DeepSeek · Kimi · MiniMax —— 倍率 \u003cstrong\u003e0.5×–5.5×\u003c/strong\u003e (取决于所选 group)。OpenSeek 内置了两个 provider (\u003ccode\u003erelayrouter\u003c/code\u003e + \u003ccode\u003erelayrouter-anthropic\u003c/code\u003e), 默认置顶。\u003ca href=\"https://relayrouter.io/register?aff=BZP9UY6W9CBZ\"\u003e点这里注册\u003c/a\u003e。\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## 为什么用 OpenSeek？\n\n现代 AI 编程工具 —— Claude Code、Codex、Cursor —— 都很好用, 但都是闭源, 还把你锁死在特定 provider 上。**OpenSeek** 给你同样的终端 agentic 体验, 开源, **28 个内置 provider** 任你 BYOK, 还有透明的成本表。\n\n- **28 个内置 provider** —— OpenAI-compat (Mikan、DeepSeek、OpenRouter、Groq、Fireworks、NVIDIA NIM、Together、Cerebras、DeepInfra、Perplexity、Mistral、xAI、Cohere、Vercel Gateway、Novita、SGLang、vLLM、MiniMax、**RelayRouter**)、Anthropic 协议 (Anthropic、Bedrock、Vertex、Azure Foundry、**RelayRouter-Anthropic**)、Google (Gemini、Vertex)、本地 (Ollama、custom)\n- **50+ 工具, 100+ slash 命令** —— 文件操作、shell、网搜、MCP 并行、Plan 树、sub-agent、RLM\n- **Plan / Agent / YOLO 三种模式** —— 只读规划 → 受确认执行 → 完全自动\n- **MCP client** —— stdio / SSE / websocket 三种传输, 一键装 skills / server\n- **LSP 反馈** —— `tsserver` / `rust-analyzer` / `pyright` / `gopls` 等, 编辑时实时打诊断\n- **无头 HTTP/SSE Runtime API** —— `openseek serve --http`, 给 IDE bridge / CI 用\n- **成本表** —— 每模型 `$/Mtok` 价格, 实时花费、cache hit 统计\n\n## 环境要求\n\n- macOS 或 Linux (Windows 请用 WSL2)\n- [Bun](https://bun.sh) ≥ 1.3 — **运行时必装, 不是可选项。** 代码里大量用 `Bun.spawn` / `Bun.serve` / `Bun.file`, 单 node 跑不起来。即便走 `npm i -g`, `openseek` 命令启动时也会 spawn `bun`, 没装会报 `env: bun: No such file or directory`。\n\n## 快速开始\n\n### 1. 装 bun (装过就跳过)\n\n```bash\ncurl -fsSL https://bun.sh/install | bash   # 任意 Unix\nbrew install oven-sh/bun/bun               # macOS (Homebrew)\n```\n\n验证: `bun --version` 应该输出 ≥ `1.3.0`。\n\n### 2. 装 openseek\n\n三选一。都会把 `openseek` 放到 PATH 上。\n\n```bash\n# A. npm\nnpm install -g openseek\n\n# B. bun (跟 A 同一个 registry, 已经在用 bun 时更顺)\nbun add -g openseek\n\n# C. 源码 (开发 / 想看源码时推荐)\ngit clone https://github.com/LichAmnesia/openseek.git\ncd openseek\nbun install\nbun run build\nln -sf \"$PWD/bin/openseek\" ~/.local/bin/openseek\n```\n\n### 3. 跑\n\n```bash\nopenseek               # 启动 TUI\nopenseek setup         # 首次配置向导 —— 选 provider + 粘 API key\nopenseek doctor        # 打印 resolved config + 每个字段的来源层\nopenseek serve --http  # 无头模式, HTTP/SSE 监听 :7117\n```\n\n### 4. 挑 provider (推荐 RelayRouter)\n\n想用最少的注册次数试遍所有模型家族 —— 注册 [RelayRouter](https://relayrouter.io/register?aff=BZP9UY6W9CBZ), 拿到 key, 在 dashboard 切 group, 然后接到 OpenSeek 上即可。\n\n```bash\n# Claude 系列 —— key 在 \"Claude\" 类 group (比如 Claude 2x)\nOPENSEEK_PROVIDER=relayrouter-anthropic \\\nOPENSEEK_API_KEY=sk-... \\\nOPENSEEK_MODEL=claude-sonnet-4-6 \\\n  openseek\n\n# GPT / Codex —— key 在 \"Codex 0.75x\" group (最稳)\nOPENSEEK_PROVIDER=relayrouter \\\nOPENSEEK_API_KEY=sk-... \\\nOPENSEEK_MODEL=gpt-5.4 \\\n  openseek\n```\n\n→ [点这里注册](https://relayrouter.io/register?aff=BZP9UY6W9CBZ) 拿 RelayRouter 额度。\n\n## 配置\n\nOpenSeek 用**分层覆盖**解析每个设置 (provider / model / API key / base URL), 高层覆盖低层。\n\n| # | 层 | 位置 | 说明 |\n|---|---|---|---|\n| 1 | **env** | `OPENSEEK_PROVIDER` / `OPENSEEK_MODEL` / `OPENSEEK_API_KEY` / `OPENSEEK_BASE_URL` | 也认 provider 专属变量 (`DEEPSEEK_API_KEY` / `ANTHROPIC_API_KEY` 等) |\n| 2 | **project overlay** | `\u003cworkspace\u003e/.openseek/config.toml` | 沙盒化 — 只认 `model`。`api_key` / `base_url` / `provider` 字段会被静默丢弃, 防止 checked-in 的 overlay 泄密钥或劫持 provider。 |\n| 3 | **user config** | `~/.openseek/config.toml` | 首次运行向导 (`openseek setup`) 写入, 0600 权限。 |\n| 4 | **default** | 内置 fallback | binary 里 hard-code 的值。 |\n\n跑 `openseek doctor` 看每个值具体从哪一层来:\n\n```\n$ openseek doctor\n\nResolved configuration:\n  provider   deepseek                       ← user (~/.openseek/config.toml)\n  model      deepseek-v4-flash              ← user (~/.openseek/config.toml)\n  api_key    sk-a…b8e2                      ← env\n  base_url   (provider default)             ← built-in default\n\nPrecedence (highest first):\n  1. env       OPENSEEK_PROVIDER / OPENSEEK_MODEL / OPENSEEK_API_KEY / OPENSEEK_BASE_URL\n  2. project   \u003cworkspace\u003e/.openseek/config.toml  (model only — secrets ignored)\n  3. user      ~/.openseek/config.toml\n  4. default   built-in fallbacks\n```\n\nTUI 里 `/help` 按 category 分组列出所有 slash 命令; `/help \u003cname\u003e` 看单条详情, `/help \u003ccategory\u003e` 按分类过滤 (`session` / `config` / `tools` / `git` / `agent` / `skills` / `diagnostics` / `advanced` / …), `/help all` 是平铺列表。\n\n## 开发\n\n```bash\nbun install\nbun run dev          # 直接从 TypeScript 源码启动 CLI, 无需 build\n```\n\n## 校验\n\n```bash\nbun run lint        # biome\nbun run typecheck   # tsc --noEmit\nbun run test        # bun test\nbun run verify      # 三件套全跑\n```\n\n## 仓库结构\n\n```\nopenseek/\n├── packages/         14 个 workspace package\n│   ├── core/         共享叶子工具\n│   ├── provider/     28 个 provider 适配 (Vercel ai SDK)\n│   ├── session/      主对话循环 + compaction 策略\n│   ├── tool/         内置工具注册表\n│   ├── command/      slash 命令注册表\n│   ├── tui/          @opentui/solid 终端渲染\n│   ├── mcp/          MCP client (stdio / SSE / websocket)\n│   ├── skill/        skill 加载器\n│   ├── agent/        sub-agent + RLM 并行\n│   ├── memory/       SessionMemory\n│   ├── plugin/       插件协议\n│   ├── server/       HTTP / SSE Runtime API\n│   ├── lsp/          LSP client (tsserver, rust-analyzer, pyright, ...)\n│   └── cli/          入口\n├── scripts/          init / build / lint / typecheck / test / verify\n├── tests/            跨包 smoke / e2e / coverage gate\n├── install/          curl-bash 安装脚本 + Brewfile + Nix 表达式\n├── bin/openseek      可执行 shim\n└── package.json      bun workspaces 根\n```\n\n## Star History\n\n\u003ca href=\"https://www.star-history.com/#LichAmnesia/openseek\u0026Date\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=LichAmnesia/openseek\u0026type=Date\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=LichAmnesia/openseek\u0026type=Date\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=LichAmnesia/openseek\u0026type=Date\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n## 许可\n\nMIT —— 见 [`LICENSE`](./LICENSE)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLichAmnesia%2Fopenseek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLichAmnesia%2Fopenseek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLichAmnesia%2Fopenseek/lists"}