This commit is contained in:
2026-03-12 12:10:11 +08:00
commit ce2e1b94e7
54 changed files with 5164 additions and 0 deletions

167
README.md Normal file
View File

@@ -0,0 +1,167 @@
# Qwen3.5-9B ToolHub 增强版 (Enhanced Edition)
> **版本标识**:原版基础功能 + 本地写作/记忆 + 混合云智能路由
> **作者**: 老王 (Lao Wang) & AI 协作伙伴
> **最后更新**: 2026-03-12
## 🚀 项目简介
本项目是基于 **Qwen3.5-9B** 多模态模型的本地一体化部署方案。它不仅具备原版的联网搜索、看图读图能力,更通过深度二次开发实现了从“只能看”到"**能写、能记、能感知**"的质变,并引入了混合云架构以应对复杂任务。
-**原生能力**:本地 GPU 推理、OpenAI 兼容 API、多模态输入。
-**核心增强**:原子化文件写入、持久化记忆注入、实时环境感知。
-**智能扩展**:混合云路由(本地+DeepSeek/GPT、粘性会话切换。
---
## 🆚 版本差异对比 (原版 vs 增强版)
| 功能模块 | 原版 (Original) | 增强版 (Enhanced v2.0+) |
| :--- | :--- | :--- |
| **模型推理** | 仅本地 Qwen3.5-9B | **本地 + 云端(DeepSeek/GPT) 混合路由** |
| **文件操作** | 🔒 只读浏览 | ✏️ **原子化写入 (白名单沙盒)** |
| **记忆系统** | ❌ 无长期记忆 | 🧠 **JSON 持久化偏好库 (热加载)** |
| **网络抓取** | 普通请求 | 🛡️ **反爬优化 (User-Agent + 重试机制)** |
| **环境感知** | 静态上下文 | ⏰ **动态注入时间/日期/星期** |
| **适用场景** | 简单问答、分析 | **代码编写、长程规划、隐私数据分析** |
---
## 🛠️ 快速开始 (Quick Start)
### 1. 环境要求
- **操作系统**: Windows 10 / 11
- **硬件**: NVIDIA 显卡 (显存 ≥ 8GB, 推荐 ≥ 12GB)
- **软件**: Python 3.10+, Git, Docker (可选)
### 2. 安装与启动
#### 首次安装 (下载约 6GB 模型)
*方法 A: 标准版 (推荐)*
```bat
# 双击运行
bootstrap.bat
```
*方法 B: Q8 量化版 (显存 ≥ 12GB占用约 10.2GB)*
```bat
# 双击运行
bootstrap_q8.bat
```
#### 启动服务
```bat
# 启动服务 (端口 8080)
.\start_8080_toolhub_stack.cmd start
# 停止服务
.\start_8080_toolhub_stack.cmd stop
```
#### 访问界面
打开浏览器访问:**http://127.0.0.1:8080**
*(注:首次启动需等待 30~60 秒加载模型)*
---
## ⚙️ 增强配置详解 (.env)
在启动前,请编辑项目根目录下的 `.env` 文件,根据需求开启增强功能。**注意路径不要带末尾斜杠**。
```ini
# ==========================================
# 🚀 核心运行模式
# ==========================================
# local = 仅使用本地 Qwen3.5-9B
# cloud = 仅使用云端模型 (需配置下方密钥)
MODEL_MODE=local
# ==========================================
# ☁️ 云端大脑配置 (DeepSeek / OpenAI 兼容)
# ==========================================
# 默认云端模型 ID (例如: deepseek-chat, gpt-4o-mini)
CLOUD_MODEL_ID=deepseek-chat
# 云端 API Base URL
CLOUD_BASE_URL=https://api.deepseek.com/v1
# 云端 API Key (请勿泄露)
CLOUD_API_KEY=sk-your-key-here
# ==========================================
# 🛠️ 文件系统增强 (写入功能)
# ==========================================
# [True/False] 是否允许 AI 物理写入本地文件
ENABLE_FILE_WRITE=True
# 📂 安全沙盒:只允许在此目录下写入 (支持多个路径用分号隔开)
# 示例: E:\AI_Workspace;D:\Projects\Temp
WRITEABLE_FS_ROOTS=E:\AI_Workspace
# ==========================================
# 🧠 持久记忆系统
# ==========================================
# 记忆文件绝对或相对路径 (必须确保目录存在)
MEMORY_FILE_PATH=./.tmp/super_agent_data/memory.json
```
---
## 🧠 核心高级功能说明
### 1. 混合云智能路由 (Hybrid Cloud Routing)
系统不再是非黑即白的单模型选择,而是基于**语义意图**和**手动指令**的智能切换:
- **自动分流**:
- **高频/隐私任务** -> 自动路由至本地 `Qwen3.5-9B` (零成本,高速度)。
- **复杂逻辑/大规模编程** -> 自动路由至云端 `DeepSeek/GPT` (强逻辑,长文本)。
- **手动干预 (粘性切换)**:
- 输入 `/cloud ...`: 强制当前及后续对话切换到云端,直到再次切换。
- 输入 `/local ...`: 强制切回本地模型。
- *特性*: 系统会记住您最近的切换指令,保持上下文一致性。
### 2. 原子化物理写入 (Atomic Write Engine)
赋予模型真正的“动手能力”,但处于严格保护中:
- **安全机制**: 只有 `WRITEABLE_FS_ROOTS` 指定的目录内的文件可被修改/创建。
- **应用场景**: 自动生成代码文件、整理日志、构建文档。
- **警告**: 严禁将 `SYSTEM``Program Files` 等系统目录加入白名单。
### 3. 持久化记忆热注入 (Persistent Memory)
- **原理**: 每次对话开始时,系统会自动读取 `memory.json` 中的内容,并将其作为 System Prompt 的一部分注入给 AI。
- **用途**: 记住您的昵称如“老王”、工作习惯如“代码必须加注释”、“Markdown 格式”)、偏好设置。
- **数据格式**: 支持纯列表 `["item1"]` 或对象包装 `{"items": [...]}`,系统自动容错。
### 4. 反侦察网页抓取
针对 GitHub、Google Scholar 等高防御网站进行了优化:
- 内置主流浏览器 User-Agent 伪装。
- 集成指数退避重试策略,自动处理 HTTP 429 (Too Many Requests) 错误。
---
## 🐞 故障排查 (Troubleshooting)
| 现象 | 可能原因 | 解决方案 |
| :--- | :--- | :--- |
| **Network Error** | 网关未注册 Write 工具 | 检查 `toolhub_gateway_agent.py` 是否包含 `import agent_runtime.write_tools` |
| **AI "失忆"** | `memory.json` 格式错误 | 检查 JSON 是否有**末尾逗号**;运行诊断脚本 `python diagnose_memory.py` |
| **无法写入文件** | 路径不在白名单 | 确认写入路径是否在 `WRITEABLE_FS_ROOTS` 列表中,且目录已存在 |
| **云端切换无效** | 指令格式错误 | 确保 `/cloud` 后紧跟一个空格再写内容,如 `/cloud 帮我写个算法` |
| **HTTP 429 报错** | 频繁刷新网页 | 等待几秒重试,新版已自动处理此类重试逻辑 |
---
## 📁 常用操作指令速查
| 指令类型 | 用法示例 | 作用 |
| :--- | :--- | :--- |
| **正常对话** | `(直接输入)` | 遵循 `.env` 默认路由模式 |
| **强制云端** | `/cloud 分析一下这个复杂的架构` | 立即切换至云端大模型 |
| **强制本地** | `/local 看看我的本地日志 file.log` | 立即切换回本地小模型,节省 Token |
| **查看状态** | `(询问系统信息)` | AI 会汇报当前时间、模型负载及路由状态 |
---
## 📝 开发者笔记
- **记忆文件格式**: 建议由用户手动维护或使用官方导出工具生成,避免手滑产生非法 JSON 字符。
- **日志查看**: Windows 下直接运行批处理脚本时,命令行窗口即为实时日志终端。
- **数据安全**: 所有的模型权重、记忆文件和日志均存储在本地 (`E:\Qwen3.5...`),不上传任何私有数据至公有云(除非明确使用 `/cloud` 处理非敏感数据)。
---
*祝你调试愉快!如有问题,请查阅 logs 文件或联系老王团队。*