Paw 是一个基于 Electron 的使用TypeScript+Python打造的桌面级桌面 AI Agent 应用平台,支持文件操作、终端控制、Web 搜索等丰富的工具链,并具备会话管理、记忆系统和 Skill 扩展能力。。
- Electron 桌面应用:原生桌面体验,自动管理 Python 后端,内置虚拟环境
- 丰富的工具链:
- 文件操作:读取、创建、编辑、删除文件
- 目录搜索:按名称搜索、grep 内容搜索
- 异步终端:run_command 执行命令,支持中断
- Web 搜索:DuckDuckGo 搜索 + Jina Reader 网页阅读
- 会话管理:自动保存对话历史,支持多会话切换
- Skill 系统:用户可在
~/.paw/skills/自定义扩展能力 - 上下文管理:智能管理 64K+ tokens 大窗口上下文
- 记忆系统(可选):基于 RAG 的对话记忆检索
# 1. 创建 Python 虚拟环境
python -m venv paw_env
# 激活虚拟环境
# Windows:
paw_env\Scripts\activate
# macOS/Linux:
# source paw_env/bin/activate
# 2. 安装 Python 依赖
pip install -r requirements.txt
# 3. 安装 Node 依赖并启动
npm install
npm start打包后的应用内置 Python 虚拟环境,用户无需安装 Python 即可使用。
# Windows
npm run build:win
# macOS
npm run build:mac
# Linux
npm run build:linux安装包输出到 dist-build/ 目录,约 150-200MB。
| 指令 | 说明 |
|---|---|
/new |
开始新对话 |
/sessions |
显示会话列表 |
/load <id> |
恢复指定会话 |
/delete-session <id> |
删除会话 |
/model |
重新选择模型 |
/clear |
清空对话历史 |
/edit |
进入对话编辑模式 |
/memory |
查看记忆状态 |
/ctx |
手动触发上下文优化 |
/stop |
停止当前生成 |
Paw/
├── src/ # 所有源代码
│ ├── main/ # Electron 主进程
│ │ ├── main.ts # 主进程入口
│ │ └── preload.ts # 预加载脚本
│ │
│ ├── renderer/ # 前端渲染进程
│ │ ├── app.ts # 前端主逻辑
│ │ ├── modules/ # 功能模块
│ │ └── types/ # TypeScript 类型定义
│ │
│ └── backend/ # Python 后端
│ ├── paw.py # 主程序入口
│ ├── config.yaml # 配置文件
│ ├── tools.py # 基础工具(文件/终端/Web)
│ ├── tool_definitions.py # 工具 Schema 定义
│ ├── tool_registry.py # 工具注册中心
│ ├── chunk_system.py # 上下文管理
│ ├── context_branch.py # 上下文分支编辑
│ ├── branch_executor.py # 分支执行器
│ ├── memory.py # 记忆系统
│ ├── session_manager.py # 会话管理
│ ├── prompts.py # 提示词配置
│ ├── call.py # LLM API 客户端
│ ├── ui_web.py # Web UI 服务
│ └── terminal.py # 异步终端管理
│
├── resources/ # 资源文件
│ ├── icons/ # 应用图标
│ └── templates/ # HTML 模板
│
├── static/ # 静态资源
│ ├── css/ # 样式文件
│ └── fonts/ # 字体文件
│
├── dist/ # TypeScript 编译输出
├── dist-build/ # 应用打包输出
├── paw_env/ # Python 虚拟环境
├── package.json # Node.js 配置
├── tsconfig.json # TypeScript 配置
└── requirements.txt # Python 依赖
Python 依赖 (requirements.txt):
- pyyaml, colorama, requests
- fastapi, uvicorn, websockets, aiohttp
- duckduckgo-search (DuckDuckGo 搜索)
- beautifulsoup4, html2text
- llama-cpp-python, chromadb (记忆系统)
Node.js 依赖 (package.json):
- electron, electron-builder
- js-yaml, typescript
Paw 采用了一种创新的记忆意图判断机制,这种机制能在 RAG 检索前先以几乎无成本的方式判断用户问题是否需要记忆系统参与历史回忆。有效地规避了原native RAG机制响应延迟大、过度检索导致的信息冗余、记忆注入破坏对话连贯性等问题。
Paw的记忆系统会预计算一个"回忆意图锚点向量 B",描述"回忆型问题"的语义特征:
用户输入 → 计算 embedding → 与 B 比较相似度
↓
相似度 < 阈值 → 跳过记忆系统的回忆阶段(如"今天天气怎么样")
相似度 ≥ 阈值 → 触发 RAG 检索(如"之前说的那个函数")
MIT License