源码导航与阅读顺序¶
推荐顺序¶
main.go
↓
cmd/cmd.go: NewCLI, RunHandler, RunServer
↓
api/client.go + api/types.go
↓
server/routes.go: GenerateRoutes, ChatHandler, GenerateHandler
↓
server/model.go + manifest/* + types/model/*
↓
server/sched.go
↓
llm/server.go + llm/llama_server.go
↓
discover/* + ml/* + llama/*
↓
agent/session.go + agent/registry.go + agent/compactor.go
包职责表¶
| 包 | 一句话职责 | 首读文件 |
|---|---|---|
api |
对外请求/响应和 Go client | types.go, client.go |
cmd |
Cobra 命令、交互和本地客户端体验 | cmd.go, agent_tui.go |
server |
HTTP、模型、prompt、调度和云代理 | routes.go, sched.go, model.go |
manifest |
内容寻址模型索引 | manifest.go, layer.go, paths.go |
model |
模型配置/解析器/renderer | model.go, parsers/, renderers/ |
llm |
runner 抽象和 llama-server 进程 | server.go, llama_server.go |
discover |
GPU/CPU/runner 能力探测 | gpu.go, runner.go |
convert |
外部模型格式转换 | convert.go, reader.go, tokenizer.go |
agent |
chat/tool/skills/compaction loop | session.go, registry.go, compactor.go |
middleware |
OpenAI/Anthropic 协议转译 | openai.go, anthropic.go |
x |
MLX、create、transfer、quant 等扩展 | 按目标子目录阅读 |
关键源码链接¶
链接指向 upstream main;具体行号可能随上游更新漂移。
- CLI 入口与命令树
- HTTP 路由
- ChatHandler
- Scheduler
- LlamaServer 接口
- Manifest
- 模型转换
- Agent Session
- OpenAI middleware
- Cloud proxy
静态搜索配方¶
# 找路由
rg -n 'r\.(GET|POST|DELETE|HEAD)' ollama-main/server/routes.go
# 找主要类型和函数
rg -n '^type |^func ' ollama-main/server ollama-main/agent --glob '*.go'
# 找 runner 边界
rg -n 'LlamaServer|NewLlamaServer|getRunner|runnerRef' ollama-main/server ollama-main/llm
# 找模型格式入口
rg -n 'GGUF|Safetensors|ParseFile|Manifest|BlobsPath' ollama-main