# Code Funhouse Mirror-sl
**Repository Path**: mr-song-sl/Code-Funhouse-Mirror
## Basic Information
- **Project Name**: Code Funhouse Mirror-sl
- **Description**: 代码哈哈镜是一个开源的个人 AI 助手平台,支持本地或云端部署。它能够通过多种渠道(钉钉、飞书、微信、Discord 等)与你交互,执行定时任务,处理文档,管理信息流。
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-05-20
- **Last Updated**: 2026-09-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 代码哈哈镜 (Code Funhouse Mirror)
**一个可扩展的 AI 助手平台 - 本地部署,数据自主,能力无限**
[](https://www.python.org/downloads/)
[](LICENSE)
---
## 项目简介
**代码哈哈镜**是一个开源的个人 AI 助手平台,支持本地或云端部署。它能够通过多种渠道(钉钉、飞书、微信、Discord 等)与你交互,执行定时任务,处理文档,管理信息流。
### 核心特点
- **🏠 本地优先** - 数据完全掌控,可本地部署或自有服务器部署
- **🔌 能力扩展** - 通过 Skills 插件系统扩展功能,内置文档处理、定时任务、新闻摘要等
- **🤖 多智能体** - 支持创建多个独立 Agent,各司其职,协同工作
- **🔒 安全防护** - 多层安全机制:工具守卫、文件访问控制、技能安全扫描
- **💬 多渠道接入** - 支持钉钉、飞书、微信企业版、QQ、Discord、Telegram 等
- **🧠 记忆系统** - 长期记忆能力,从交互中学习,主动服务
---
## 技术架构
### 后端技术栈
- **语言**: Python 3.10-3.13
- **Web 框架**: FastAPI + Uvicorn
- **Agent 框架**: AgentScope + AgentScope Runtime
- **任务调度**: APScheduler
- **LLM 接入**: OpenAI SDK、Google GenAI、DashScope、Transformers
- **记忆系统**: reme-ai
- **安全**: cryptography + keyring
### 前端技术栈
- **框架**: React 18 + TypeScript 5.8
- **构建工具**: Vite 6
- **UI 组件**: Ant Design 5
- **状态管理**: Zustand 5
- **路由**: react-router-dom v7
- **国际化**: i18next
### 架构图
```
┌─────────────────────────────────────────────┐
│ 浏览器 (Web Console) │
│ http://127.0.0.1:8088/ │
└──────────────────┬──────────────────────────┘
│ HTTP / SSE
┌──────────────────▼──────────────────────────┐
│ Python 后端 (FastAPI) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ REST API │ │ SSE 推送 │ │ 静态托管 │ │
│ └────┬─────┘ └─────┬────┘ └──────────┘ │
│ └──────────────┼───────────── │
│ ┌───────────────────▼──────────────────┐ │
│ │ Agent 核心层 (AgentScope) │ │
│ │ ┌────────┐ ┌────────┐ ┌─────────┐ │ │
│ │ │ ReAct │ │ Memory │ │ Skills │ │ │
│ │ │ Agent │ │ System │ │ System │ │ │
│ │ └────────┘ └────────┘ └─────────┘ │ │
│ └──────────────────────────────────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 模型路由 │ │ 任务调度 │ │ MCP 客户 │ │
│ └─────┬────┘ └──────────┘ └──────────┘ │
└────────┼─────────────────────────────────────┘
│
┌────▼────────────────────────────┐
│ LLM 提供商 │
│ OpenAI / Gemini / Ollama / ... │
└─────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ 多渠道接入层(并行运行) │
│ 钉钉 飞书 微信 QQ Discord Telegram ... │
└─────────────────────────────────────────────┘
```
---
## 快速开始
### 方式一:Python 安装
```bash
# 安装依赖
pip install -e .
# 构建前端(首次运行必须)
cd console && npm ci && npm run build
cd ..
# 复制前端构建产物
mkdir -p src/qwenpaw/console
cp -R console/dist/. src/qwenpaw/console/
# 初始化配置
python -m qwenpaw.cli.main init --defaults
# 启动服务
python -m qwenpaw.cli.main app
```
然后打开浏览器访问 **http://127.0.0.1:8088/**
### 方式二:Docker Compose 部署
```bash
# 构建并启动
docker-compose up -d
# 查看日志
docker-compose logs -f
```
服务端口:
- 前端: http://127.0.0.1:18081
- 后端: http://127.0.0.1:18444
### 方式三:Docker 单容器部署
```bash
# 构建镜像
docker build -f deploy/Dockerfile -t code-funhouse-mirror:latest .
# 运行容器
docker run -p 127.0.0.1:8088:8088 \
-v mirror-data:/app/working \
-v mirror-secrets:/app/working.secret \
-v mirror-backups:/app/working.backups \
code-funhouse-mirror:latest
```
---
## 模型配置
### 支持的模型提供商
| 提供商 | 类型 | 说明 |
|--------|------|------|
| OpenAI | 云端 API | GPT-4o、GPT-4-turbo 等 |
| Google Gemini | 云端 API | Gemini Pro、Gemini Ultra |
| 阿里云 DashScope | 云端 API | 通义千问系列 |
| Ollama | 本地部署 | 需先安装 Ollama 服务 |
| LM Studio | 本地部署 | 需先安装 LM Studio 应用 |
| llama.cpp | 本地部署 | 内置支持,无需额外安装 |
### 配置方式
1. **Web Console 配置(推荐)**
- 启动服务后访问 http://127.0.0.1:8088/
- 进入 **设置 → 模型**
- 选择提供商,输入 API Key,启用模型
2. **环境变量配置**
- 创建 `.env` 文件或设置环境变量
- 例如:`DASHSCOPE_API_KEY=your_api_key`
3. **本地模型(无需 API Key)**
- 使用 Ollama、LM Studio 或 llama.cpp
- 在 Web Console 中配置本地服务地址
---
## 目录结构
```
.
├── console/ # 前端代码 (React + TypeScript)
│ ├── src/ # 源代码
│ ├── public/ # 静态资源
│ └── dist/ # 构建产物
├── src/qwenpaw/ # 后端代码 (Python)
│ ├── agents/ # Agent 核心逻辑
│ ├── api/ # FastAPI 路由
│ ├── cli/ # 命令行工具
│ ├── config/ # 配置管理
│ ├── providers/ # 模型提供商
│ ├── security/ # 安全模块
│ └── channels/ # 消息渠道
├── deploy/ # 部署相关
│ ├── Dockerfile # Docker 构建文件
│ └── config/ # 部署配置
├── tests/ # 测试代码
├── scripts/ # 工具脚本
├── pyproject.toml # Python 项目配置
├── docker-compose.yml # Docker Compose 配置
└── README.md # 本文件
```
---
## 配置文件位置
### 工作目录
默认配置存储在用户目录下:
**Linux/macOS:**
```
~/.qwenpaw/ # 工作目录
~/.qwenpaw.secret/ # 敏感数据(API Keys)
```
**Windows:**
```
C:\Users\<用户名>\.qwenpaw\
C:\Users\<用户名>\.qwenpaw.secret\
```
### 目录结构
```
~/.qwenpaw/
├── config.json # 全局配置
└── working/
└── /
├── agent.json # Agent 配置
├── memory/ # 记忆数据
└── skills/ # 自定义技能
~/.qwenpaw.secret/
└── providers/
├── builtin/ # 内置提供商配置(含加密 API Key)
├── custom/ # 自定义提供商
└── plugin/ # 插件提供商
```
### 环境变量
| 变量名 | 默认值 | 说明 |
|--------|--------|------|
| `QWENPAW_WORKING_DIR` | `~/.qwenpaw` | 工作目录 |
| `QWENPAW_SECRET_DIR` | `~/.qwenpaw.secret` | 敏感数据目录 |
| `QWENPAW_AUTH_ENABLED` | `false` | 是否启用 Web 认证 |
| `QWENPAW_AUTH_USERNAME` | - | Web 登录用户名 |
| `QWENPAW_AUTH_PASSWORD` | - | Web 登录密码 |
---
## 安全特性
### 多层防护机制
1. **工具守卫 (Tool Guard)**
- 自动拦截危险的 Shell 命令
- 防止 `rm -rf /`、fork 炸弹、反向 Shell 等
2. **文件访问控制**
- 限制访问敏感路径(`~/.ssh`、系统目录等)
- 沙箱化文件操作
3. **技能安全扫描**
- 安装前自动扫描技能代码
- 检测提示注入、命令注入、硬编码密钥等风险
4. **数据加密存储**
- API Key 使用 cryptography 加密存储
- 敏感配置独立存储在 `.secret` 目录
5. **Web 认证(可选)**
- 支持为 Web Console 添加登录保护
- 通过环境变量启用
---
## 开发指南
### 环境准备
```bash
# 安装开发依赖
pip install -e ".[dev,full]"
# 安装前端依赖
cd console && npm ci
# 安装 pre-commit hooks
pre-commit install
```
### 运行测试
```bash
# 运行所有测试
pytest
# 运行单元测试
pytest tests/unit
# 运行集成测试
pytest tests/integration
# 生成覆盖率报告
pytest --cov=src/qwenpaw --cov-report=html
```
### 代码规范
```bash
# Python 代码格式化
black src/ tests/
# Python 代码检查
flake8 src/ tests/
pylint src/
# 前端代码格式化
cd console && npm run format
# 前端代码检查
cd console && npm run lint
```
### 前端开发
```bash
cd console
# 启动开发服务器(需要后端同时运行)
npm run dev
# 构建生产版本
npm run build
```
---
## 扩展能力
### Skills 系统
通过 Skills 扩展 Agent 能力,内置技能包括:
- **文档处理**: PDF、Office 文档读取和摘要
- **定时任务**: Cron 定时执行任务
- **新闻摘要**: 定时推送热点新闻
- **文件管理**: 本地文件组织和搜索
- **网页操作**: 网页截图、内容提取
### 自定义 Skills
在 `~/.qwenpaw/working//skills/` 目录下添加自定义技能:
```python
# my_skill.py
def my_function(arg1, arg2):
"""技能描述"""
# 实现逻辑
return result
```
Agent 启动时会自动加载。
### MCP 协议
支持 Model Context Protocol,可接入外部工具和服务。
---
## 多渠道接入
支持的消息平台:
- 钉钉 (DingTalk)
- 飞书 (Lark/Feishu)
- 微信企业版 (WeCom)
- QQ
- Discord
- Telegram
- Twilio (SMS)
- Matrix
- MQTT
配置方式:在 Web Console 的 **设置 → 渠道** 中配置各平台的 Token 和 Webhook。
---
## 常见问题
### 1. 如何更换模型?
在 Web Console 的 **设置 → 模型** 中切换活动模型。
### 2. 如何备份数据?
数据存储在 `~/.qwenpaw` 和 `~/.qwenpaw.secret`,直接备份这两个目录即可。
Docker 部署的数据在 volumes 中:`qwenpaw-data`、`qwenpaw-secrets`、`qwenpaw-backups`。
### 3. 如何升级版本?
```bash
# Python 安装
pip install -e . --upgrade
# Docker 部署
docker-compose pull
docker-compose up -d
```
### 4. 忘记 Web 登录密码?
如果启用了 Web 认证,可通过环境变量重置:
```bash
export QWENPAW_AUTH_PASSWORD=new_password
python -m qwenpaw.cli.main app
```
或删除配置文件重新初始化:
```bash
rm ~/.qwenpaw/config.json
python -m qwenpaw.cli.main init
```
---
## 贡献指南
欢迎贡献代码、报告问题或提出建议!
### 如何贡献
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
### 开发规范
- 遵循 PEP 8 Python 代码规范
- 遵循 ESLint 前端代码规范
- 为新功能添加测试
- 更新相关文档
---
## 许可证
本项目基于 [Apache License 2.0](LICENSE) 开源协议。
---
## 致谢
本项目基于以下优秀的开源项目构建:
- [AgentScope](https://github.com/agentscope-ai/agentscope) - 多智能体框架
- [FastAPI](https://fastapi.tiangolo.com/) - 现代 Python Web 框架
- [React](https://react.dev/) - 用户界面库
- [Ant Design](https://ant.design/) - 企业级 UI 设计语言
---
## 联系方式
如有问题或建议,欢迎提交 Issue 或 Pull Request。
---
**代码哈哈镜** - 让 AI 助手像哈哈镜一样,映射出你的需求,扭曲现实的限制,创造无限可能。