QwenPaw 源码级拆解:从目录结构到启动链路全流程【第二篇】
一、先说结论:这是一个“前后端强耦合”的 AI 系统
在开始看代码前,我先给你一个关键判断:
❗如果你把 QwenPaw 当成纯 Python 项目,你会踩坑
它的真实结构是:
Python(核心运行时) + Node.js(前端控制台) + CLI(入口封装)
👉 换句话说:
这是一个“AI系统”,不是一个“Python库”
二、源码目录全景(带理解)
典型 clone 下来之后结构大致如下(简化):
QwenPaw/├── qwenpaw/ # Python核心包├── console/ # 前端(非常关键)├── scripts/ # 安装脚本├── examples/ # 示例├── pyproject.toml # Python构建入口├── README.md
🧠 第一层认知:三个核心模块
|
|
|
|---|---|
qwenpaw/ |
|
console/ |
|
scripts/ |
|
三、Python 核心包拆解(qwenpaw/)
这是我们重点看的部分。
📦 1. 顶层结构(核心模块划分)
qwenpaw/├── app/ # 应用入口├── agent/ # Agent相关逻辑├── skill/ # Skill系统├── memory/ # 记忆系统├── runtime/ # 调度/运行机制├── channel/ # 多通道接入├── config/ # 配置管理
👉 这个划分其实就是 Day1 讲的五层架构的代码映射
四、启动入口:CLI 是怎么工作的?
你平时启动是这样:
qwenpaw initqwenpaw app
但真正发生的事情是:
🚀 Step 1:入口定义(pyproject.toml)
[project.scripts]qwenpaw="qwenpaw.cli:main"
👉 说明:
所有命令都从
qwenpaw/cli.py进入
📂 Step 2:cli.py(命令分发中心)
核心逻辑类似:
defmain():# 解析命令# init / app / skill / ... dispatch_command()
👉 这里做了三件事:
📌 架构意义:
CLI 是整个系统的“控制入口”,类似 Kubernetes 的 kubectl
五、init 过程源码级分析(第一次运行)
🧱 执行:
qwenpaw init
🔍 内部流程(关键)
1. 创建工作目录(~/.qwenpaw)2. 初始化配置文件3. 设置模型参数4. 初始化 workspace
📂 关键文件
~/.qwenpaw/├── config.yaml├── workspace/
👉 重点:
QwenPaw 是“有状态系统”,不是无状态 CLI
六、app 启动流程(最关键)
🧱 执行:
qwenpaw app
🔥 完整启动链路(源码级)
cli.py ↓app.main() ↓create_app() ↓load_config() ↓init_runtime() ↓load_agents() ↓load_skills() ↓start_web_server()
我们逐个拆:
🧩 1. create_app()
作用:
初始化整个系统容器(类似依赖注入)
包括:
⚙️ 2. init_runtime()
底层基于:
👉 AgentScope
它会:
📌 关键点:
这里不是线程模型,而是“消息驱动系统”
🤖 3. load_agents()
做什么?
👉 重点:
Agent 并不是写死的,可以扩展
🧩 4. load_skills()
这是系统最动态的一部分:
扫描 skill 目录 ↓加载 Python 模块 ↓注册函数 ↓加入 Skill Registry
📌 注意:
Skill 是“运行时加载”的,而不是编译时
🌐 5. start_web_server()
这里启动:
👉 关键点:
前端文件来自:
console/dist/
❗如果你没 build 前端:
👉 页面会直接挂掉(常见坑)
七、console 前端源码(必须理解)
📂 目录结构
console/├── src/├── package.json├── vite.config.ts
👉 技术栈:
🏗 构建流程
cd consolenpminstallnpm run build
输出:
console/dist/
👉 然后:
这些静态文件会被 Python 服务托管
📌 架构本质:
前端不是“可选项”,而是系统的一部分
八、一次完整请求的源码路径(非常重要)
假设你在 Web UI 输入一句话:
🧭 完整链路
浏览器 ↓HTTP 请求 ↓Python Web Server ↓Agent Runtime ↓LLM 推理 ↓Skill 调用 ↓返回结果 ↓前端渲染
👉 对应代码路径:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
📌 这就是“五层架构”的真实落地
九、开发者最容易踩的坑(源码级总结)
❌ 1. 忽略前端构建
结果:
❌ 2. 以为是同步调用
实际:
是一个循环决策系统(Agent Loop)
❌ 3. Skill 写错加载路径
结果:
❌ 4. 配置没初始化
qwenpaw init
必须先跑
十、本篇总结(源码视角)
🧠 三个核心认知
1️⃣ CLI → App → Runtime 是主启动链
2️⃣ Skill 和 Agent 都是“运行时注册”的
3️⃣ 前端是系统的一部分,而不是附属
👉 下一篇预告(Day 3)
我们会进入最核心的一层:
👉 Agent Runtime 深度剖析(真正“智能”的来源)
包括:
夜雨聆风