Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CoReader

🤖 CoReader

读懂代码,不该只是一场对话。

一个面向 AI Coding 时代的代码理解平台 —— 把项目转成可浏览的 Wiki、可追问的 Agent、可自测的 Quiz。

CoReader 主界面预览


怎么使用?

把项目文件夹丢进去就OK了。


为什么有它?

高强度使用 AI 写代码时,最稀缺的不是生成能力,而是对项目本身的理解

  • 整体架构长什么样?
  • 这段代码的运行路径是什么?
  • 这个模块到底负责啥?
  • 这个奇怪的语法又是干嘛的?

用 Claude / ChatGPT 当然能问出来,但 chat 范式有几个绕不开的痛点:

  • 🧩 碎片化 —— 每次都从零开始喂上下文,问 10 次浪费 9 次
  • 👀 混乱的视觉 —— 代码、解释、追问、回答全混在一条时间线
  • 📚 难以沉淀 —— 关掉对话就什么都没了,下次还得再问一遍

CoReader 把"理解一个项目"这件事从对话流里解放出来:上传代码 → 自动生成结构化文档 + 智能问答 + 自测题,三种方式各取所需。


它能做什么?

📖 Wiki —— 把项目自动写成一本书

上传项目后,后台会跑一条完整的分析管线:AST 拆解 → 模块识别 → 分层目录 → LLM 撰写。最终产出一套层级化的 wiki 文档

项目概览
├─ 分类(Category)
│  └─ 章节(Chapter)
│     └─ 主题(Topic)
│        └─ 模块详情(Module Page)

每页都带可点击的源码引用(点击直接打开侧边代码窗口),不是空中楼阁式的解读。

💬 Q&A —— 两种问答模式

  • 快速模式:单次 LLM 调用 + 预先拼好的项目上下文,秒回。适合"这个变量啥意思"。
  • 深度模式:基于 Agent Loop,LLM 可以自主调用 7 个工具(查摘要、查符号、查调用关系、读文件、全文搜索…)在 SQLite 化的项目结构里"现场调研",再综合回答。适合"这段流程是怎么走的"。

整个 Agent 思考过程在前端实时流式可视化:工具调用、参数、返回结果一一展开,不再是黑盒。多轮对话有完整记忆 + 自动压缩,长会话也不爆上下文。

📝 Quiz —— 给项目出题

基于已生成的 wiki 自动出选择题,校验你对项目的掌握度。给自己用、给团队新人用、给面试候选人用都行。每题都附带代码依据(文件:行号),可点击直接定位源码。

Quiz 答题界面


技术亮点

AST 优先,不是 LLM 盲猜 tree-sitter 多语言解析(Python / Rust / Java)→ 函数符号 / 调用边 / 入口点抽取 → SQLite 持久化。LLM 通过工具查这个结构化数据,而不是把整个项目塞进 prompt——这让大项目也能精准回答,不受上下文窗口限制
统一的 Agent Loop + Skill 系统 一套带 7 个工具的 Agent 循环(get_modules / get_summaries / get_symbols / get_call_edges / search_code / search_symbols / get_file_content + spawn_agent)同时驱动 Wiki / QA / Quiz 三个能力;复杂任务(如"按业务职责拆模块")封装成 Skill 复用,包含独立 system prompt + 工具子集
两档 QA:快回答 vs 深探索 快速模式:单次 LLM 调用 + 预拼项目上下文,秒回适合"这变量啥意思"。深度模式:完整 Agent Loop + 7 个工具 + 自动压缩 + 最多 30 轮迭代,适合"这流程怎么走"。两种成本档让用户按需选,便宜问题不浪费 token,难问题不偷工减料
OpenAI 协议兼容 + 模型分层 接 Qwen / Kimi / MiniMax / 任何 OpenAI 兼容网关,换模型只改一个环境变量。摘要类轻量任务走 QWEN_FAST_MODEL,Agent 主循环走强模型,整套 wiki 生成成本压低近 3 倍
流式优先,过程透明 SSE 实时推送 token / 工具调用 / 工具结果 / 压缩事件 / 完成事件,前端工具时间线把 Agent 思考过程逐步展开。每个工具调用看得到参数和返回结果摘要——不是干等黑盒,用户能看到当前 LLM 正在做啥、跑到哪了
生产级容错(踩过坑的那种) LLM 网关每次 90s 主动 kill + 退避重试;工具返回超 30KB 自动截断(防止 get_call_edges 误返回全图把上下文撑爆);长会话 token 接近 budget 自动压缩历史;Wiki 任务后台异步 + task_id 持久化,浏览器刷新也能继续看进度而不是从头再来
代码即引用,点击就跳转 Wiki 每段叙述都带源码引用 <code_ref:文件:行号:函数>点击弹出侧边代码窗口高亮目标行。引用由 Agent 在生成时自己挑("这段话依据哪几行代码"),不是事后正则瞎匹配——保证了引用和叙述的真实对应
现代前端栈,体验细抠 React 19 + TypeScript + Vite 8 + Tailwind 4 + Zustand。多 store 按域拆分(Wiki/QA/Quiz/Layout),整页 ErrorBoundary 拦截任何渲染异常,Wiki/QA/Quiz 可拖拽并排同屏,localStorage 持久化导航宽度、主题、深度模式开关等所有用户偏好

技术栈

后端:FastAPI · SQLite · tree-sitter · OpenAI 兼容 LLM(默认 Qwen / MiniMax) 前端:React 19 · TypeScript · Vite 8 · Tailwind CSS 4 · Zustand · react-markdown · highlight.js · Mermaid


快速开始

1. 准备 LLM 网关

复制环境变量模板:

cp .env.example .env

编辑 .env,至少填一个能用的 OpenAI 兼容网关:

QWEN_API_KEY=sk-xxxxxxxx
QWEN_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
QWEN_MODEL=qwen3.6-plus

变量名沿用 QWEN_ 前缀只是历史原因 —— 实际走的是 OpenAI 协议,DashScope / sub2api / 自建 vLLM / 任何兼容端都行。.env.example 里有 MiniMax 的备选配置。

2. 启动后端

pip install -r backend/requirements.txt
PYTHONPATH=. uvicorn backend.main:app --reload --port 8000

⚠️ PYTHONPATH=. 是必须的,后端用绝对导入。

3. 启动前端

cd frontend
npm install
npm run dev

浏览器打开 Vite 输出的本地地址(默认 http://localhost:5173)即可。


项目结构

CoReader/
├─ backend/
│  ├─ controllers/         # FastAPI 路由(file / wiki / qa / quiz)
│  ├─ services/
│  │  ├─ agent/            # 核心 Agent Loop + 7 个工具 + Skill 系统
│  │  ├─ wiki/             # Wiki 生成管线
│  │  ├─ qa/               # 问答(fast / deep 双模式)
│  │  ├─ quiz/             # 题目生成
│  │  └─ llm/              # OpenAI 兼容客户端 + Prompt 模板
│  ├─ dao/                 # SQLite 持久化
│  ├─ models/              # Pydantic 数据模型
│  └─ utils/analysis/      # AST 分析管线(多语言)
└─ frontend/
   └─ src/
      ├─ components/       # Wiki / QA / Quiz / Upload / CodeDrawer
      ├─ store/            # Zustand stores
      ├─ services/         # 后端 API 封装(含 SSE 解析)
      ├─ contexts/         # 主题 + 国际化
      └─ i18n/             # 中英文文案

限制与已知问题

  • 单个文件 ≤ 1MB,整个项目 ≤ 10MB / 200 个文件(防止 LLM 调用失控)
  • AST 分析目前覆盖 Python / Rust / Java,其他语言上传后只做文本摘要
  • 长任务(Wiki 全量生成)走后台异步 + 状态轮询,需要保持后端进程存活
  • 目前未做用户隔离,仅适合本地或单租户场景使用

Made with ☕ and 🤖 in 2026

About

代码阅读助手,From code to markdown,快速理解代码

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages