Skip to content

Commit 6c5d98f

Browse files
authored
Merge branch 'newsnow' into main
2 parents 65b8dfa + 8ccddd9 commit 6c5d98f

File tree

131 files changed

+5548
-1763
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

131 files changed

+5548
-1763
lines changed

README.md

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,11 @@
144144
</a>
145145
</td>
146146
<td>
147+
<a href="https://www.bilibili.com/video/BV1ZQKUzYExM" target="_blank">
148+
<picture>
149+
<img alt="MCP接入点" src="docs/images/demo13.png" />
150+
</picture>
151+
</a>
147152
</td>
148153
<td>
149154
</td>
@@ -170,8 +175,8 @@
170175
#### 🚀 部署方式选择
171176
| 部署方式 | 特点 | 适用场景 | 部署文档 | 配置要求 | 视频教程 |
172177
|---------|------|---------|---------|---------|---------|
173-
| **最简化安装** | 智能对话、IOT、MCP、视觉感知,数据存储在配置文件 | 低配置环境,无需数据库 | [①Docker版](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%B8%80docker%E5%8F%AA%E8%BF%90%E8%A1%8Cserver) / [②源码部署](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E5%8F%AA%E8%BF%90%E8%A1%8Cserver)| 如果使用`FunASR`要2核4G,如果全API,要2核2G | - |
174-
| **全模块安装** | 智能对话、IOT、MCP、视觉感知、OTA、智控台,数据存储在数据库 | 完整功能体验 |[①Docker版](./docs/Deployment_all.md#%E6%96%B9%E5%BC%8F%E4%B8%80docker%E8%BF%90%E8%A1%8C%E5%85%A8%E6%A8%A1%E5%9D%97) / [②源码部署](./docs/Deployment_all.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E8%BF%90%E8%A1%8C%E5%85%A8%E6%A8%A1%E5%9D%97) / [③源码部署自动更新教程](./docs/dev-ops-integration.md) | 如果使用`FunASR`要4核8G,如果全API,要2核4G| [本地源码启动视频教程](https://www.bilibili.com/video/BV1wBJhz4Ewe) |
178+
| **最简化安装** | 智能对话、IOT、MCP、视觉感知 | 低配置环境,数据存储在配置文件,无需数据库 | [①Docker版](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%B8%80docker%E5%8F%AA%E8%BF%90%E8%A1%8Cserver) / [②源码部署](./docs/Deployment.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E5%8F%AA%E8%BF%90%E8%A1%8Cserver)| 如果使用`FunASR`要2核4G,如果全API,要2核2G | - |
179+
| **全模块安装** | 智能对话、IOT、MCP接入点、视觉感知、OTA、智控台 | 完整功能体验,数据存储在数据库 |[①Docker版](./docs/Deployment_all.md#%E6%96%B9%E5%BC%8F%E4%B8%80docker%E8%BF%90%E8%A1%8C%E5%85%A8%E6%A8%A1%E5%9D%97) / [②源码部署](./docs/Deployment_all.md#%E6%96%B9%E5%BC%8F%E4%BA%8C%E6%9C%AC%E5%9C%B0%E6%BA%90%E7%A0%81%E8%BF%90%E8%A1%8C%E5%85%A8%E6%A8%A1%E5%9D%97) / [③源码部署自动更新教程](./docs/dev-ops-integration.md) | 如果使用`FunASR`要4核8G,如果全API,要2核4G| [本地源码启动视频教程](https://www.bilibili.com/video/BV1wBJhz4Ewe) |
175180

176181

177182
> 💡 提示:以下是按最新代码部署后的测试平台,有需要可烧录测试,并发为6个,每天会清空数据
@@ -186,18 +191,22 @@ Websocket接口地址: wss://2662r3426b.vicp.fun/xiaozhi/v1/
186191

187192
#### 🚩 配置说明和推荐
188193
> [!Note]
189-
> 本项目默认的配置是`入门全免费`设置,如果想效果更优,推荐使用`流式配置`
194+
> 本项目提供两种配置方案:
195+
>
196+
> 1. `入门全免费`配置:适合个人家庭使用,所有组件均采用免费方案,无需额外付费。
197+
>
198+
> 2. `流式配置`:适合演示、培训、超过2个并发等场景,采用流式处理技术,响应速度更快,体验更佳。
190199
>
191-
> 本项目自`0.5.2`版本,已支持使用流式配置,相比`0.5`版本以前,响应速度提升约`2.5秒`
200+
> `0.5.2`版本起,项目支持流式配置,相比早期版本,响应速度提升约`2.5秒`,显著改善用户体验。
192201
193202
| 模块名称 | 入门全免费设置 | 流式配置 |
194203
|:---:|:---:|:---:|
195-
| ASR(语音识别) | FunASR(本地) | 👍DoubaoStreamASR(火山流式语音识别) |
204+
| ASR(语音识别) | FunASR(本地) | 👍FunASRServer 或 👍DoubaoStreamASR |
196205
| LLM(大模型) | ChatGLMLLM(智谱glm-4-flash) | 👍DoubaoLLM(火山doubao-1-5-pro-32k-250115) |
197206
| VLLM(视觉大模型) | ChatGLMVLLM(智谱glm-4v-flash) | 👍QwenVLVLLM(千问qwen2.5-vl-3b-instructh) |
198-
| TTS(语音合成) | 👍LinkeraiTTS(灵犀流式) | 👍HuoshanDoubleStreamTTS(火山双流式语音合成) |
199-
| Intent(意图识别) | function_call(函数调用) | function_call(函数调用) |
200-
| Memory(记忆功能) | mem_local_short(本地短期记忆) | mem_local_short(本地短期记忆) |
207+
| TTS(语音合成) | LinkeraiTTS(灵犀流式) | 👍HuoshanDoubleStreamTTS(火山双流式语音合成) |
208+
| Intent(意图识别) | function_call(函数调用) | function_call(函数调用) |
209+
| Memory(记忆功能) | mem_local_short(本地短期记忆) | mem_local_short(本地短期记忆) |
201210

202211
#### 🔧 测试工具
203212
本项目提供以下测试工具,帮助您验证系统和选择合适的模型:
@@ -222,7 +231,7 @@ Websocket接口地址: wss://2662r3426b.vicp.fun/xiaozhi/v1/
222231
| 视觉感知系统 | 支持多种VLLM(视觉大模型),实现多模态交互 |
223232
| 意图识别系统 | 支持LLM意图识别、Function Call函数调用,提供插件化意图处理机制 |
224233
| 记忆系统 | 支持本地短期记忆、mem0ai接口记忆,具备记忆总结功能 |
225-
| IOT/MCP控制协议 | 支持设备注册管理、智能控制接口,同时支持IOT、MCP控制协议 |
234+
| 工具调用 | 支持客户端IOT协议、客户MCP协议、服务端MCP协议、MCP接入点协议、自定义工具函数 |
226235
| 管理后台 | 提供Web管理界面,支持用户管理、系统配置和设备管理 |
227236
| 测试工具 | 提供性能测试工具、视觉模型测试工具和音频交互测试工具 |
228237
| 部署支持 | 支持Docker部署和本地部署,提供完整的配置文件管理 |

docs/homeassistant-integration.md

Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -89,55 +89,25 @@ http://homeassistant.local:8123
8989
公司,台灯,switch.iot_cn_831898993_socn1_on_p_2_1;
9090
```
9191

92-
这段字符,我们成为“设备清单字符”需要保存好,等一下有用。
93-
92+
这段字符,我们称为“设备清单字符”需要保存好,等一下有用。
9493

9594
#### 2. 登录`智控台`
9695

97-
使用管理员账号,登录`智控台`。点击顶部菜单`参数管理`,搜索`plugins.home_assistant.`,会有三条结果出来
98-
99-
编辑`plugins.home_assistant.devices`,把刚才整理的设备清单字符粘贴进去。
100-
101-
102-
编辑`plugins.home_assistant.base_url`,把你部署的`HomeAssistant`接口地址粘贴进去,我粘贴进去的地址是这样的
103-
104-
```
105-
http://192.168.4.7:8123
106-
```
107-
108-
编辑`plugins.home_assistant.api_key`,把你从`HomeAssistant`复制过来的密钥,粘贴进去
109-
110-
111-
#### 3. 设置`意图识别`函数
112-
113-
在智控台,点击顶部菜单“模型配置”,在左侧栏,找到“意图识别”,找到id为`Intent_function_call`的意图,点击编辑
114-
115-
然后在弹框中,在原来的基础上追加两个函数:“hass_get_state”和“hass_set_state”
116-
117-
修改前
118-
```
119-
change_role;get_weather;get_news;play_music
120-
```
121-
122-
修改后
123-
124-
```
125-
change_role;get_weather;get_news;play_music;hass_get_state;hass_set_state
126-
```
127-
128-
#### 4. 手动重启xiaozhi-server
96+
![image-20250504051716417](images/image-ha-integration-06.png)
12997

130-
重启xiaozhi-server程序
98+
使用管理员账号,登录`智控台`。在`智能体管理`,找到你的智能体,再点击`配置角色`
13199

100+
将意图识别设置成`函数调用``LLM意图识别`。这时你会看到右侧有一个`编辑功能`。点击`编辑功能`按钮,会弹出`功能管理`的框。
132101

133-
#### 5. 确认角色配置是否设置了函数意图识别
102+
`功能管理`的框里,你需要勾选`HomeAssistant设备状态查询``HomeAssistant设备状态修改`
134103

135-
在智控台,点击顶部菜单“智能体管理”,找到设备所在的智能体,点击“配置角色”
104+
勾选后,在`已选功能`点击`HomeAssistant设备状态查询`,然后在`参数配置`里配置你的`HomeAssistant`地址、密钥、设备清单字符。
136105

137-
确认意图识别(Intent),是否选择“函数调用意图识别”
106+
编辑好后,点击`保存配置`,这时`功能管理`的框会隐藏,这时你再点击保存智能体配置。
138107

108+
保存成功后,即可唤醒设备操作。
139109

140-
#### 6. 唤醒设别进行控制
110+
#### 3. 唤醒设别进行控制
141111

142112
尝试和esp32说,“打开XXX灯”
143113

docs/images/demo13.png

359 KB
Loading
260 KB
Loading

docs/mcp-endpoint-integration.md

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# MCP 接入点部署使用指南
2+
3+
本教程包含2个部分
4+
- 1、如何开启mcp接入点
5+
- 2、如何为智能体接入一个简单的mcp功能,如计算器功能
6+
7+
部署的前提条件:
8+
- 1、你已经部署了全模块,因为mcp接入点需要全模块中的智控台功能
9+
- 2、你想在不修改xiaozhi-server项目的前提下,扩展小智的功能
10+
11+
# 如何开启mcp接入点
12+
13+
## 第一步,下载mcp接入点项目源码
14+
15+
浏览器打开[mcp接入点项目地址](https://github.com/xinnan-tech/mcp-endpoint-server)
16+
17+
打开完,找到页面中一个绿色的按钮,写着`Code`的按钮,点开它,然后你就看到`Download ZIP`的按钮。
18+
19+
点击它,下载本项目源码压缩包。下载到你电脑后,解压它,此时它的名字可能叫`mcp-endpoint-server-main`
20+
你需要把它重命名成`mcp-endpoint-server`
21+
22+
## 第二步,启动程序
23+
这个项目是一个很简单的项目,建议使用docker运行。不过如果你不想使用docker运行,你可以参考[这个页面](https://github.com/xinnan-tech/mcp-endpoint-server/blob/main/README_dev.md)使用源码运行。以下是docker运行的方法
24+
25+
```
26+
# 进入本项目源码根目录
27+
cd mcp-endpoint-server
28+
29+
# 清除缓存
30+
docker compose -f docker-compose.yml down
31+
docker stop mcp-endpoint-server
32+
docker rm mcp-endpoint-server
33+
docker rmi ghcr.nju.edu.cn/xinnan-tech/mcp-endpoint-server:latest
34+
35+
# 启动docker容器
36+
docker compose -f docker-compose.yml up -d
37+
# 查看日志
38+
docker logs -f mcp-endpoint-server
39+
```
40+
41+
此时,日志里会输出类似以下的日志
42+
```
43+
======================================================
44+
接口地址: http://172.1.1.1:8004/mcp_endpoint/health?key=xxxx
45+
=======上面的地址是MCP接入点地址,请勿泄露给任何人============
46+
```
47+
48+
请你把接口地址复制出来:
49+
50+
由于你是docker部署,切不可直接使用上面的地址!
51+
52+
由于你是docker部署,切不可直接使用上面的地址!
53+
54+
由于你是docker部署,切不可直接使用上面的地址!
55+
56+
你先把地址复制出来,放在一个草稿里,你要知道你的电脑的局域网ip是什么,例如我的电脑局域网ip是`192.168.1.25`,那么
57+
原来我的接口地址
58+
```
59+
http://172.1.1.1:8004/mcp_endpoint/health?key=xxxx
60+
```
61+
就要改成
62+
```
63+
http://192.168.1.25:8004/mcp_endpoint/health?key=xxxx
64+
```
65+
66+
改好后,请使用浏览器直接访问这个接口。当浏览器出现类似这样的代码,说明是成功了。
67+
```
68+
{"result":{"status":"success","connections":{"tool_connections":0,"robot_connections":0,"total_connections":0}},"error":null,"id":null,"jsonrpc":"2.0"}
69+
```
70+
71+
请你保留好这个`接口地址`,下一步要用到。
72+
73+
## 第三步,配置智控台
74+
75+
使用管理员账号,登录智控台,点击顶部`参数字典`,选择`参数管理`功能。
76+
77+
然后搜索参数`server.mcp_endpoint`,此时,它的值应该是`null`值。
78+
点击修改按钮,把上一步得来的`接口地址`粘贴到`参数值`里。然后保存。
79+
80+
如果能保存成功,说明一切顺利,你可以去智能体查看效果了。如果不成功,说明智控台无法访问mcp接入点,很大概率是网络防火墙,或者没有填写正确的局域网ip。
81+
82+
# 如何为智能体接入一个简单的mcp功能,如计算器功能
83+
84+
如果以上步骤顺利,你可以进入智能体管理,点击`配置角色`,在`意图识别`的右边,有一个`编辑功能`的按钮。
85+
86+
点击这个按钮。在弹出的页面里,位于底部,会有`MCP接入点`,正常来说,会显示这个智能体的`MCP接入点地址`,接下来,我们来给这个智能体扩展一个基于MCP技术的计算器的功能。
87+
88+
这个`MCP接入点地址`很重要,你等一下会用到。
89+
90+
## 第一步 下载虾哥MCP计算器项目代码
91+
92+
浏览器打开虾哥写的[计算器项目](https://github.com/78/mcp-calculator)
93+
94+
打开完,找到页面中一个绿色的按钮,写着`Code`的按钮,点开它,然后你就看到`Download ZIP`的按钮。
95+
96+
点击它,下载本项目源码压缩包。下载到你电脑后,解压它,此时它的名字可能叫`mcp-calculatorr-main`
97+
你需要把它重命名成`mcp-calculator`。接下来,我们用命令行进入项目目录即安装依赖
98+
99+
100+
```bash
101+
# 进入项目目录
102+
cd mcp-calculator
103+
104+
conda remove -n mcp-calculator --all -y
105+
conda create -n mcp-calculator python=3.10 -y
106+
conda activate mcp-calculator
107+
108+
pip install -r requirements.txt
109+
```
110+
111+
## 第二步 启动
112+
113+
启动前,先从你的智控台的智能体里,复制到了MCP接入点的地址。
114+
115+
例如我的智能体的mcp地址是
116+
```
117+
ws://192.168.4.7:8004/mcp_endpoint/mcp/?token=abc
118+
```
119+
120+
开始输入命令
121+
122+
```bash
123+
export MCP_ENDPOINT=ws://192.168.4.7:8004/mcp_endpoint/mcp/?token=abc
124+
```
125+
126+
输入完后,启动程序
127+
128+
```bash
129+
python mcp_pipe.py calculator.py
130+
```
131+
132+
133+
启动完后,你再进入智控台,点击刷新MCP的接入状态,就会看到你扩展的功能列表了。
134+

docs/newsnow_plugin_config.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# get_news_from_newsnow 插件新闻源配置指南
2+
3+
## 概述
4+
5+
`get_news_from_newsnow` 插件现在支持通过Web管理界面动态配置新闻源,不再需要修改代码。用户可以在智控台中为每个智能体配置不同的新闻源。
6+
7+
## 配置方式
8+
9+
### 1. 通过Web管理界面配置(推荐)
10+
11+
1. 登录智控台
12+
2. 进入"角色配置"页面
13+
3. 选择要配置的智能体
14+
4. 点击"编辑功能"按钮
15+
5. 在右侧参数配置区域找到"newsnow新闻聚合"插件
16+
6. 在"新闻源配置"字段中输入JSON格式的新闻源配置
17+
18+
### 2. 配置文件方式
19+
20+
`config.yaml` 中配置:
21+
22+
```yaml
23+
plugins:
24+
get_news_from_newsnow:
25+
url: "https://newsnow.busiyi.world/api/s?id="
26+
news_sources:
27+
thepaper: "澎湃新闻"
28+
baidu: "百度热搜"
29+
cls-depth: "财联社"
30+
# 可以添加更多新闻源
31+
weibo: "微博头条"
32+
douyin: "抖音热搜"
33+
solidot: "奇客Solidot"
34+
```
35+
36+
## 新闻源配置格式
37+
38+
新闻源配置使用JSON格式,格式为:
39+
40+
```json
41+
{
42+
"source_id": "显示名称",
43+
"source_id2": "显示名称2"
44+
}
45+
```
46+
47+
### 配置示例
48+
49+
```json
50+
{
51+
"thepaper": "澎湃新闻",
52+
"baidu": "百度热搜",
53+
"cls-depth": "财联社",
54+
"weibo": "微博头条",
55+
"douyin": "抖音热搜",
56+
"solidot": "奇客Solidot"
57+
}
58+
```
59+
60+
## 默认配置
61+
62+
如果未配置新闻源,插件将使用以下默认配置:
63+
64+
```json
65+
{
66+
"thepaper": "澎湃新闻",
67+
"baidu": "百度热搜",
68+
"cls-depth": "财联社"
69+
}
70+
```
71+
72+
## 使用说明
73+
74+
1. **配置新闻源**:在Web界面或配置文件中设置新闻源
75+
2. **调用插件**:用户可以说"播报新闻"或"获取新闻"
76+
3. **指定新闻源**:用户可以说"播报澎湃新闻"或"获取百度热搜"
77+
4. **获取详情**:用户可以说"详细介绍这条新闻"
78+
79+
## 注意事项
80+
81+
1. 新闻源的 `source_id` 必须与API接口支持的ID一致
82+
2. 配置更改后需要重启服务或重新加载配置
83+
3. 如果配置的新闻源无效,插件会自动使用默认新闻源
84+
4. JSON格式必须正确,否则会使用默认配置

main/manager-api/src/main/java/xiaozhi/common/constant/Constant.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ public interface Constant {
111111
*/
112112
String FILE_EXTENSION_SEG = ".";
113113

114+
/**
115+
* mcp接入点路径
116+
*/
117+
String SERVER_MCP_ENDPOINT = "server.mcp_endpoint";
118+
114119
/**
115120
* 无记忆
116121
*/
@@ -227,7 +232,7 @@ enum ChatHistoryConfEnum {
227232
/**
228233
* 版本号
229234
*/
230-
public static final String VERSION = "0.5.5";
235+
public static final String VERSION = "0.6.1";
231236

232237
/**
233238
* 无效固件URL

0 commit comments

Comments
 (0)