Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jan 源码拆解

基于 /Users/hanqing/CliX/jan-main 本地源码快照(应用版本 0.8.4)的中文架构精读。

在线阅读:https://hanqing.github.io/jan-source-notes/

这不是 Jan 的使用手册,也不是 API 文档,而是一份“跟着一次请求穿过整个系统”的源码阅读笔记。写法参考 refs/dg-ai-notes:每章都回答三个问题——是什么、怎么做、为什么这样做

这份拆解覆盖什么

Jan 是一个跨平台桌面 AI 应用。它把 React/Vite WebView、TypeScript Core、Rust/Tauri 宿主、本地推理后端、远程 Provider、MCP、RAG 和文件/数据库存储拼成一个产品。主线从 UI 发出一条消息开始,沿着 ServiceHub、模型工厂、Vercel AI SDK、Tauri command、llama.cpp/MLX 或远程 API,最后回到流式 UI 和持久化文件。

React UI
  ↓ ServiceHub / Zustand / custom chat transport
TypeScript Core + Extensions
  ↓ Tauri invoke / plugin guest API
Rust/Tauri AppState + commands
  ├─ llama.cpp / MLX subprocess
  ├─ OpenAI-compatible proxy → remote providers
  ├─ MCP client processes / HTTP servers
  └─ thread.json + messages.jsonl / mobile SQLite

快速入口

源码范围与方法

  • 分析对象:jan-main,不是在线仓库的任意最新提交。
  • 版本锚点:src-tauri/Cargo.toml 与 Tauri 配置中的 0.8.4
  • 证据优先级:入口文件、类型定义、ServiceHub、Tauri command、插件 state/command、测试与配置文件。
  • 文中把“当前快照事实”和“设计推断”分开;如果一个结论是从调用关系推出来的,会明确写成“推断”。

本地构建

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
mkdocs serve

许可与归属

本文档是对开源项目 Jan 的独立学习笔记。Jan 源码版权与许可证以其上游仓库为准;本文档内容采用 CC BY-SA 4.0,欢迎指出源码对应关系或内容错误。

About

Jan 0.8.4 源码架构与运行时拆解,使用 MkDocs Material 发布

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors