一、QwenPaw 概述
1.1 什么是 QwenPaw
QwenPaw(原名 CoPaw)是 AgentScope 团队开源的个人 AI 助手。名称中的“Qwen”代表与通义千问(Qwen)开源生态的深度整合。它采用AgentScope和AgentScope Runtime构建,后端通过FastAPI提供 RESTful 接口和 SSE 流式推送,前端控制台采用Vue + Vite构建。
QwenPaw 的核心定位是:本地优先、数据自主、可自托管的个人 AI 智能体。它支持本地或云端部署,可通过 Token Plan 个人版/团队版、Coding Plan 或按量计费接入阿里云百炼。
1.2 核心特性
记忆系统(三层记忆)
- 实时工作上下文
- 完整逐字历史记录
- 基于 ReMe 的自我进化个人知识库
部署灵活,免费运行
- QwenPaw-Flash 模型(2B/4B/9B)专为 Agent 任务训练
- 内置本地运行时,无需 API Key,无云端依赖
- 同时支持 Ollama、LM Studio 及 14+ 云服务商
安全防护
- 内核级沙箱、Tool Guard、File Guard、Skill Scanner、访问策略
多智能体与并行
- 可生成独立智能体,各自拥有独立记忆和技能
- 支持 Agent Communication Protocol(ACP)跨系统编排
多渠道接入
- 支持钉钉、飞书、微信、Discord、Telegram、iMessage、QQ 等
可扩展性
- Skills 技能系统(定时任务、文档处理、浏览器、新闻等)
- Plugin 插件架构 + 官方插件市场
- MCP 集成外部工具
自动化与任务调度
- 新闻摘要、报告生成、多频道广播等定时任务
1.3 项目结构
QwenPaw 源码结构如下:
QwenPaw/ ├── src/qwenpaw/ # Python 后端核心 │ ├── agents/ # 智能体核心(QwenPawAgent 主类) │ ├── model_factory.py # LLM 模型工厂 │ ├── skills_manager.py # 技能管理器 │ ├── tool_guard_mixin.py # 工具安全拦截 │ ├── memory/ # 长期记忆管理 │ └── ... ├── console/ # 前端控制台(Vue + Vite) └── ...二、本地部署 QwenPaw
2.1 系统要求
- Python:3.10 ~ 3.13
- 操作系统:macOS / Linux / Windows
2.2 安装方式
方式一:一键安装脚本(推荐)
macOS / Linux
curl-fsSLhttps://qwenpaw.agentscope.io/install.sh|bashWindows(CMD)
curl -fsSL https://qwenpaw.agentscope.io/install.bat -o install.bat && install.batWindows(PowerShell)
irmhttps://qwenpaw.agentscope.io/install.ps1|iex脚本会自动安装 uv、创建虚拟环境并下载依赖,无需手动配置 Python。
方式二:pip 安装
pipinstallqwenpaw qwenpaw init--defaultsqwenpaw app方式三:Docker 部署
dockerpull agentscope/qwenpaw:latestdockerrun-p127.0.0.1:8088:8088\-vqwenpaw-data:/app/working\-vqwenpaw-secrets:/app/working.secret\agentscope/qwenpaw:latest方式四:源码安装(开发/测试)
gitclone https://github.com/agentscope-ai/QwenPaw.gitcdQwenPaw# 安装依赖并构建前端cdconsolepnpminstallpnpmrun build2.3 启动服务
安装完成后,在新终端执行:
qwenpaw app启动成功后,在浏览器中访问http://127.0.0.1:8088/即可打开 QwenPaw Console。
2.4 配置模型接入凭证
在 Console 中点击设置 > 模型,根据计费方案配置对应的提供商。
配置 Coding Plan(推荐)
- 进入内置的 Aliyun Coding Plan (International) 提供商设置页面
- 填入 Coding Plan 专属 API Key
- 模型已预设常用模型,可直接使用
配置 Token Plan 个人版
- 点击添加提供商,协议选「OpenAI 兼容(Chat Completions)」
- 基础 URL:
https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1 - 填入 Token Plan 个人版专属 API Key
配置 Token Plan 团队版
- 类似个人版配置
- 基础 URL:
https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1 - 填入团队版专属 API Key
配置按量计费(DashScope)
- 进入内置的 DashScope 提供商设置页面,填入 API Key 即可
三、将 QwenPaw 网页签入 Vue 3 项目
3.1 核心思路
QwenPaw 本身就是一个Vue + Vite构建的前端应用,前端控制台位于console/目录。将 QwenPaw 网页签入 Vue 3 项目,主要有以下两种方案:
3.2 方案一:iframe 嵌入(最简单)
在 Vue 3 组件中使用 iframe 直接嵌入 QwenPaw Console:
<template> <div class="qwenpaw-container"> <iframe src="http://127.0.0.1:8088/" width="100%" height="100%" frameborder="0" allow="microphone; camera; clipboard-read; clipboard-write" /> </div> </template> <script setup> // 可根据需要动态设置 src,例如从环境变量读取 const qwenpawUrl = import.meta.env.VITE_QWENPAW_URL || 'http://127.0.0.1:8088/' </script> <style scoped> .qwenpaw-container { width: 100%; height: 100vh; } </style>注意事项:
- 确保 QwenPaw 服务已启动(
qwenpaw app) - 跨域问题可通过配置 QwenPaw 的 CORS 或使用同源部署解决
- iframe 方式无法深度定制 UI 和交互逻辑
3.3 方案二:直接集成源码(深度定制)
将 QwenPaw 的console/目录作为子模块或直接复制到你的 Vue 3 项目中。
步骤 1:获取 QwenPaw 前端源码
# 克隆 QwenPaw 仓库gitclone https://github.com/agentscope-ai/QwenPaw.git# 前端控制台位于 console/ 目录cdQwenPaw/console步骤 2:安装依赖并开发
# 安装依赖pnpminstall# 启动开发服务器(需要先启动后端 qwenpaw app)npmrun dev步骤 3:可用的 npm 脚本
| 命令 | 说明 |
|---|---|
npm run dev | 启动 Vite 开发服务器 |
npm run build | 构建生产版本 |
npm run build:tauri-bootstrap | 构建 Tauri 版本 |
npm run lint | ESLint 检查 |
npm run format | Prettier 格式化 |
npm run test | 运行 Vitest 测试 |
步骤 4:集成到你的 Vue 3 项目
将console/src中的组件、路由、状态管理等按需引入你的项目。QwenPaw 前端通过 RESTful API 和 SSE 与后端通信,你可以复用其 API 调用逻辑。
3.4 方案三:通过 REST API 自定义前端(完全自主)
QwenPaw 后端提供完整的 RESTful API 接口,你可以完全自主开发 Vue 3 前端,直接调用后端 API。
核心 API 端点(示例)
| 端点 | 说明 |
|---|---|
POST /api/chat | 发送对话消息 |
GET /api/chat/stream | SSE 流式接收回复 |
GET /api/agents | 获取智能体列表 |
POST /api/agents | 创建智能体 |
GET /api/memory | 获取记忆内容 |
Vue 3 调用示例
// services/qwenpaw.tsimport{ref}from'vue'constBASE_URL=import.meta.env.VITE_QWENPAW_API||'http://127.0.0.1:8088'exportfunctionuseQwenPaw(){constloading=ref(false)constmessages=ref([])// 发送消息(SSE 流式)constsendMessage=async(message:string,onChunk:(chunk:string)=>void)=>{loading.value=truetry{constresponse=awaitfetch(`${BASE_URL}/api/chat/stream`,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({message})})constreader=response.body?.getReader()constdecoder=newTextDecoder()while(true){const{done,value}=awaitreader?.read()||{}if(done)breakconstchunk=decoder.decode(value)onChunk(chunk)}}finally{loading.value=false}}return{messages,loading,sendMessage}}Vue 3 组件使用
<template> <div class="chat-container"> <div v-for="msg in messages" :key="msg.id"> {{ msg.content }} </div> <input v-model="input" @keyup.enter="handleSend" /> </div> </template> <script setup lang="ts"> import { ref } from 'vue' import { useQwenPaw } from '@/services/qwenpaw' const input = ref('') const { messages, loading, sendMessage } = useQwenPaw() const handleSend = async () => { if (!input.value.trim()) return const msg = input.value input.value = '' await sendMessage(msg, (chunk) => { // 逐字追加到消息列表 const last = messages.value[messages.value.length - 1] if (last?.role === 'assistant') { last.content += chunk } else { messages.value.push({ role: 'assistant', content: chunk }) } }) } </script>四、总结
| 维度 | 说明 |
|---|---|
| 项目定位 | 个人 AI 助手,本地优先、数据自主 |
| 技术栈 | Python (FastAPI) + Vue 3 + Vite |
| 部署方式 | 一键脚本 / pip / Docker / 源码 |
| 默认端口 | 8088 |
| 前端集成方案 | iframe 嵌入 / 源码集成 / REST API 自定义 |
QwenPaw 作为一个开源的个人 AI 智能体框架,具备强大的可扩展性和灵活的部署选项。无论是作为独立应用运行,还是嵌入到现有的 Vue 3 项目中,都能提供完整的 AI 助手能力。建议从一键安装脚本开始快速体验,再根据实际需求选择合适的集成方案。