[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81705":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"lastSyncTime":33,"discoverSource":34},81705,"deepx-code","itmisx\u002Fdeepx-code","itmisx","deepseek标配coding agent、原生支持模型路由、CodeGraph代码图谱、OCR截图识别、自动上下文压缩、最佳工作模式选择等功能，从根本上节省Token","https:\u002F\u002Fitmisx.github.io\u002Fdeepx-code\u002F",null,"Go",167,18,4,2,0,9,47,123,48,91.84,"MIT License",false,"main",true,[27,28,29],"coding-agent","deepseek","tui","2026-06-12 04:01:35","\u003Cdiv align=\"center\">\n\n# deepx-code\n\n**DeepSeek 原生、兼容 OpenAI 接口的终端编程 Agent（已支持小米 MiMo）—— 单二进制、缓存友好、内置代码图谱与本地 OCR**\n\n[![Go](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbuilt%20with-Go-00ADD8?logo=go&logoColor=white)](https:\u002F\u002Fgo.dev) [![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](LICENSE) [![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fitmisx\u002Fdeepx-code?color=success)](https:\u002F\u002Fgithub.com\u002Fitmisx\u002Fdeepx-code\u002Freleases) [![Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fitmisx\u002Fdeepx-code?style=flat)](https:\u002F\u002Fgithub.com\u002Fitmisx\u002Fdeepx-code\u002Fstargazers) ![Platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey)\n\n简体中文 · [English](README.en.md) · [日本語](README.ja.md) · [한국어](README.ko.md)\n\n![deepx-code demo](assets\u002Fdemo.gif)\n\n\u003C\u002Fdiv>\n\n> [!TIP]\n> **⚡ 长会话实测 prompt-cache 命中 ~99%**（真实 session：41,591 tokens 中 41,472 命中）。DeepSeek 对命中缓存的输入按未命中价的几十分之一计费（[官方定价](https:\u002F\u002Fapi-docs.deepseek.com\u002Fquick_start\u002Fpricing)），长跑几乎不为重复的上下文重复付费。\n\n---\n\n## ✨ 核心特性\n\n- **🦫 单一 Go 二进制** —— 无 Node \u002F Python 运行时，`curl` 一行装，macOS \u002F Linux \u002F Windows 全覆盖。\n- **💰 缓存友好，长会话省钱** —— 围绕 DeepSeek 前缀缓存设计，实测 ~99% 命中；本地关键词路由零延迟、零 token 起手。\n- **🧭 内置代码图谱（codegraph）** —— 符号级跳定义 \u002F 找调用 \u002F 接口实现 \u002F 影响面分析，Go 经 `go\u002Ftypes` 精确解析，替代满仓库 grep。\n- **👀 本地图片 OCR（PaddleOCR）** —— 离线读图，丢一张截图就能识别其中文字，不依赖多模态 API。\n- **🧠 双模型自动路由** —— flash 起手省钱，复杂任务自动升 pro；也可用 `\u002Fmodel flash|pro` 锁定模型、`\u002Fauto` `\u002Fplan` `\u002Freview` 切模式。\n- **🗂️ 顺序 Todo + 并发 Plan DAG** —— 多步任务用可见待办清单逐步勾选；可并行的独立子任务拆成 DAG 派并发子 agent。\n- **💾 无损会话持久化** —— gob 完整保留 `tool_calls` \u002F `tool results` \u002F `reasoning_content`，重启无缝续接；超窗自动分层压缩。\n- **🔌 MCP + Skill 生态** —— 原生 MCP；兼容 Claude 的 skill 目录，已有 skill 直接复用。\n- **🛡️ 审核模式** —— 写文件 \u002F 执行 Shell 默认需人工确认，安全可控。\n\n## 📊 对比 Claude Code\n\n|                  | **deepx-code**                       | Claude Code            |\n| :--------------- | :----------------------------------- | :--------------------- |\n| 分发             | Go 单二进制，`curl` 一行装           | Node（npm）            |\n| 开源             | ✅ MIT                               | ❌ 闭源                |\n| 模型             | DeepSeek \u002F 小米 MiMo（OpenAI 兼容，配置时选供应商，flash\u002Fpro 自动路由） | Anthropic Claude       |\n| 成本             | 长会话 ~99% 缓存命中，几乎不为重复上下文付费 | 订阅 \u002F 按 Claude API 用量 |\n| 内置代码图谱     | ✅ codegraph（Go 走 `go\u002Ftypes` 精确） | ❌（靠 grep \u002F 搜索）   |\n| 本地 · 离线 OCR  | ✅ PaddleOCR                         | ❌（图片走云端多模态） |\n| MCP              | ✅                                   | ✅                     |\n| Skill 生态       | ✅（兼容 Claude skill 目录）          | ✅                     |\n\n> [!NOTE]\n> 这张表不比模型质量本身；deepx-code 的取舍是 **成本、开源、单二进制、内置代码图谱与离线 OCR**。\n\n## 🚀 快速开始\n\n**1. 安装**\n\n```bash\n# macOS \u002F Linux\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fitmisx\u002Fdeepx-code\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n\n# Windows (PowerShell)\nirm https:\u002F\u002Fraw.githubusercontent.com\u002Fitmisx\u002Fdeepx-code\u002Fmain\u002Fscripts\u002Finstall.ps1 | iex\n```\n\n安装到 `~\u002F.local\u002Fbin\u002Fdeepx`，随时用 `deepx upgrade` 升级。\n\n**2. 进入项目并启动**\n\n```bash\ncd \u003C你的项目目录>\ndeepx\n```\n\n**3. 配置**\n\n| 项目        | 怎么做                                                        |\n| :---------- | :----------------------------------------------------------- |\n| 供应商 & Key | 首次启动弹出向导：**用 ←\u002F→ 选模型供应商（DeepSeek \u002F 小米 MiMo），再填对应 API Key**，持久化到 `~\u002F.deepx\u002Fmodel.yaml`。各供应商已预置 flash\u002Fpro 默认模型与 1M 上下文（DeepSeek `deepseek-v4-flash` \u002F `-pro`，MiMo `mimo-v2.5` \u002F `-pro`）。也可 `\u002Fconfig` 重配。 |\n| 手动覆盖    | 可直接编辑 `~\u002F.deepx\u002Fmodel.yaml`，按 role（flash\u002Fpro）覆盖 `base_url` \u002F `model` \u002F `api_key` \u002F `max_tokens` \u002F `context_window`；flash 与 pro 也可指向不同供应商。 |\n| Skill       | 放到 `\u003C工作区>\u002F.deepx\u002Fskills\u002F`，或复用 `~\u002F.claude\u002Fskills\u002F` 等已有目录。 |\n| MCP         | TUI 内 `\u002Fmcp-add` 添加，`\u002Fmcp-list` 查看。                    |\n\n## 🧠 核心机制\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>模型路由（本地，零延迟，零 token）\u003C\u002Fb>\u003C\u002Fsummary>\n\n用户消息发来时，deepx 在本地做关键词匹配 + 长度判定，瞬间决定起手模型，不额外消耗任何 LLM token：\n\n```\n消息含 \"重构 \u002F refactor \u002F architecture \u002F 调试 …\" → 直接升 pro\n消息长度 \u003C 100 字符                              → flash\n消息长度 > 500 字符                              → pro\n```\n\n覆盖中（简 \u002F 繁）\u002F 英 \u002F 日 \u002F 韩五种语言。本轮中如遇复杂推理，模型还可主动 `SwitchModel` 升到 pro。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>会话持久化（gob 二进制，无损续接）\u003C\u002Fb>\u003C\u002Fsummary>\n\n```\n~\u002F.deepx\u002Fsessions\u002F\u003Csha1(workspace)[:16]>\u002F\n├── meta.json          # 工作区元信息\n├── state.json         # 压缩状态 + 用量快照\n├── YYYY-MM-DD.jsonl   # 文本日志（Memory 搜索用）\n└── history.gob        # 二进制完整历史\n```\n\n| 格式               | 存储内容                                                                | 用途                       |\n| :----------------- | :---------------------------------------------------------------------- | :------------------------- |\n| `history.gob`      | system + user + assistant（含 `tool_calls`、`tool results`、`reasoning_content`） | **重启恢复，LLM 无缝续接** |\n| `YYYY-MM-DD.jsonl` | user \u002F assistant 纯文本                                                  | Memory 工具搜索            |\n\n重启优先加载 gob，失败回退 JSONL。system prompt 因升级 \u002F skill 变化而变动时，gob 恢复时自动原地替换为当前版本（保持缓存前缀一致）。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>会话压缩（分层 + 摘要合并）\u003C\u002Fb>\u003C\u002Fsummary>\n\n长对话超出上下文窗口 70% 时自动触发：尾部分层保留约 20K token，旧内容由 LLM 压成连贯摘要并合并已有摘要。压缩后同步更新 gob，重启一致。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>任务规划：Todo（顺序）vs Plan DAG（并发）\u003C\u002Fb>\u003C\u002Fsummary>\n\n- **Todo** —— 多步、强顺序、强上下文的任务（如从零搭一个应用）：模型用可见待办清单列出步骤、逐项勾选，自己一步步执行，给你实时进度。\n- **CreatePlan（Plan DAG）** —— 真正可并行、彼此独立的扇出任务：拆成 DAG，按依赖关系派并发子 agent，每个节点独立选 flash \u002F pro，最后汇总。\n\n```\nCreatePlan\n  ├─ plan-1: Read  (flash) ─────┐\n  ├─ plan-2: Read  (flash) ─────┤\n  ├─ plan-3: Grep  (flash) ─────┤\n  └─ plan-4: Write (pro)   ─────┘ depends_on: [1,2,3]\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>本地 OCR（补齐读图能力）\u003C\u002Fb>\u003C\u002Fsummary>\n\n粘贴图片或给出图片路径 → LLM 通过 `OCR` 工具（PaddleOCR PP-OCRv5）识别其中文字。首次自动下载 OCR 模型（~37MB）与 ONNX runtime，之后**离线、秒级**响应。让你不依赖多模态 API 也能让 agent「看懂」报错截图 \u002F UI 稿。\n\n\u003C\u002Fdetails>\n\n### 🧭 代码图谱（codegraph）\n\n内置符号图谱引擎，模型直接做符号级导航 + 调用关系查询，代替满仓库 grep + 一个个翻文件。\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>操作速查表（12 个 op）\u003C\u002Fb>\u003C\u002Fsummary>\n\n| op             | 用途                 | 必填参数                   | 说明                                            |\n| :------------- | :------------------- | :------------------------- | :---------------------------------------------- |\n| `def`          | 符号定义在哪         | `name`                     | 函数 \u002F 类型 \u002F 方法 \u002F 变量的定义位置             |\n| `refs`         | 谁用到了某符号       | `name`                     | 全部引用（定义 + 调用 + 取值）                  |\n| `symbols`      | 按名模糊搜索符号     | `name`(可选), `kind`(可选) | `kind`: func\u002Fmethod\u002Ftype\u002Fvar\u002Fconst\u002Ffield        |\n| `outline`      | 一个文件有哪些符号   | `path`                     | 文件大纲                                        |\n| `imports`      | 文件 import 了哪些包 | `path`                     | 依赖概览                                        |\n| `callers`      | 谁调用了某函数       | `name`                     | **改函数时查影响面**，Go 隐式接口也覆盖         |\n| `callees`      | 某函数调用了哪些     | `name`                     | 理解函数内部实现流程                            |\n| `implementers` | 谁实现了某接口       | `name`                     | 对 Go 隐式接口**精确到符号级**，grep 查不出     |\n| `subtypes`     | 谁继承 \u002F 嵌入某类型  | `name`                     | 子类型追踪                                      |\n| `supertypes`   | 某类型派生自什么     | `name`                     | 父类型 \u002F 嵌入接口                               |\n| `impact`       | 改某符号牵连哪些下游 | `name`, `depth`(默认 3)    | 传递闭包，blast radius 分析                     |\n| `reindex`      | 强制重建索引         | —                          | 缓存异常时手动触发                              |\n\n\u003C\u002Fdetails>\n\n**覆盖语言**：Go（stdlib 精确解析）+ TypeScript \u002F JavaScript \u002F Python \u002F Java \u002F Rust \u002F C \u002F C++ \u002F C# \u002F Ruby \u002F PHP \u002F Kotlin \u002F Swift \u002F Scala \u002F Dart \u002F Vue \u002F Svelte。\n\n**工作机制**：启动后台 `Prewarm` 建索引（状态栏 `loading → ready`）；文件被 Write\u002FUpdate 后标 `stale`，下次查询增量重建；结果按 `文件:行`（含签名 \u002F 调用方）展示并自动分页。\n\n## 🧰 工具集\n\n| 类型     | 工具                               |         plan | auto | review |\n| :------- | :--------------------------------- | -----------: | :--: | :----: |\n| 文件只读 | `Read` `List` `Tree` `Glob` `Grep` |            ✓ |  ✓   |   ✓    |\n| 代码图谱 | `CodeGraph`                        |            ✓ |  ✓   |   ✓    |\n| 文件写入 | `Write` `Update`                   |            ✗ |  ✓   |   ⏳   |\n| Shell    | `Bash`                             |            ✗ |  ✓   |   ⏳   |\n| 联网     | `Search` `Fetch`                   |            ✓ |  ✓   |   ✓    |\n| 记忆     | `Memory`                           |            ✓ |  ✓   |   ✓    |\n| 技能     | `LoadSkill`                        |            ✓ |  ✓   |   ✓    |\n| 图片     | `OCR`                              |            ✓ |  ✓   |   ✓    |\n| 规划     | `Todo` `CreatePlan`                | LLM 自主调用 |      |        |\n| 升级     | `SwitchModel`                      | LLM 自主调用 |      |        |\n\n> ⏳ = 自动执行，但需人工确认。\n\n## ⌨️ Slash 命令\n\n| 命令                       | 作用                              |\n| :------------------------- | :-------------------------------- |\n| `\u002Fplan` `\u002Fauto` `\u002Freview`  | 切换模式（只读 \u002F 全自动 \u002F 审核）  |\n| `\u002Fmodel`                   | 弹窗选择模型（auto 按任务路由 \u002F flash \u002F pro 定死）；也可 `\u002Fmodel flash` 直接指定 |\n| `\u002Fcompact`                 | 手动压缩会话以节省上下文          |\n| `\u002Flang`                    | 切换界面语言（中 \u002F 英）           |\n| `\u002Fmcp-list` `\u002Fmcp-add` `\u002Fmcp-delete` | 管理 MCP server         |\n| `\u002Fskills` `\u002Fconfig` `\u002Fmode`| 列出 skill \u002F 重配 key \u002F 查看模式  |\n| `\u002Fhelp`                    | 帮助                              |\n\n## 🛡️ 审核模式\n\n| 模式             | Write \u002F Update \u002F Bash | 其余工具 | 切换命令  |\n| :--------------- | :-------------------- | :------- | :-------- |\n| `review`（默认） | 人工 YES\u002FNO 确认      | 自动执行 | `\u002Freview` |\n| `auto`           | 自动执行              | 自动执行 | `\u002Fauto`   |\n| `plan`           | 禁用                  | 自动执行 | `\u002Fplan`   |\n\n## 📦 Skills 生态\n\n```\nworkspace 级  \u003Cwd>\u002F.deepx\u002Fskills\u002F\nglobal 级     ~\u002F.agents\u002Fskills\u002F → ~\u002F.claude\u002Fskills\u002F → ~\u002F.deepx\u002Fskills\u002F\n```\n\n- workspace 级可 `git add` 共享给团队\n- global 兼容 Claude Code 生态，已有 skill 直接复用\n\n## 🏗️ 架构\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>展开数据流\u003C\u002Fb>\u003C\u002Fsummary>\n\n```\n单轮对话:\n  用户输入\n    ↓\n  RouteByKeyword (本地) ─► flash 或 pro\n    ↓\n  StartStream (主循环)\n    ├─ 直接答\n    ├─ 调工具 → review 拦截写\u002FShell → 执行 → 结果回灌 → 继续\n    ├─ Todo → 可见待办清单(主 agent 自己逐步执行)\n    ├─ SwitchModel → 升 pro\n    └─ CreatePlan → DAG scheduler → 子 agent 并发 → 汇总\n\n会话持久化:\n  HistoryUpdateMsg → SaveGob (history.gob, 完整 fidelity)\n  StreamDoneMsg    → Append JSONL (纯文本, Memory 搜索)\n  重启             → LoadGob (优先) \u002F JSONL (回退)\n\n会话压缩:\n  tokens ≥ ctxWindow × 70% → runCompression (异步)\n    → 尾部分层保留 ~20K token → LLM 合并新旧摘要 → 更新 gob + state.json\n```\n\n\u003C\u002Fdetails>\n\n**目录结构**\n\n```\ndeepx\u002F\n├── main.go\n├── agent\u002F      StartStream 工具循环 + 路由 + DAG 调度 + 子 agent\n├── config\u002F     ~\u002F.deepx\u002Fmodel.yaml 读写\n├── session\u002F    gob 持久化 + JSONL 日志 + 会话压缩状态\n├── tools\u002F      全部工具实现（读写 \u002F 搜索 \u002F OCR \u002F Memory \u002F Skill \u002F Plan \u002F CodeGraph）\n├── codegraph\u002F  代码图谱：跳定义 \u002F 找调用 \u002F 继承实现 \u002F 影响面\n├── skill\u002F      多路径 skill 发现与加载\n├── ocr\u002F        PaddleOCR 包装（ONNX Runtime）\n├── tui\u002F        bubbletea TUI（输入 \u002F 渲染 \u002F 剪贴板 \u002F 选中 \u002F 仪表盘）\n└── scripts\u002F    安装脚本\n```\n\n## 💰 Token 经济\n\n- **路由零 token**：纯本地关键词，不发 LLM 调用\n- **工具不预注入**：`Memory` \u002F `LoadSkill` 只在调用时才进 context\n- **system prompt 极简**：仅跨工具规约 + workspace，工具触发条件在各自 description 里\n- **DeepSeek KV cache 友好**：tools 数组不随模式 \u002F 角色变化；system prompt gob 恢复时版本感知\n- **代码图谱替代盲搜**：从根上减少 read \u002F glob \u002F grep 的 token 浪费\n\n## 🩹 卸载\n\n```bash\n# macOS \u002F Linux\nrm -f ~\u002F.local\u002Fbin\u002Fdeepx && rm -rf ~\u002F.deepx\n\n# Windows：删除 %LOCALAPPDATA%\\Programs\\deepx 和 %USERPROFILE%\\.deepx\n```\n\n## 📄 License\n\n[MIT](LICENSE) © 2026 itmisx\n","deepx-code 是一个专为开发者设计的终端编程助手，支持 DeepSeek 和 OpenAI 接口，并兼容小米 MiMo。其核心功能包括：单一 Go 二进制文件便于跨平台部署、内置代码图谱（codegraph）提供符号级代码导航、本地 OCR 识别截图中的文本、TUI 交互界面以及额外的 WebUI 服务等。项目通过高效的缓存机制和自动上下文压缩技术，在长会话中显著减少 Token 消耗，从而降低使用成本。适合需要频繁进行代码分析、理解与生成的开发场景，尤其是对成本敏感或偏好开源解决方案的技术团队。","2026-06-11 04:06:03","CREATED_QUERY"]