Skip to content

Commit 1c3b269

Browse files
authored
Merge pull request #129 from heshengtao/dev
Dev
2 parents 12e446b + af3867c commit 1c3b269

File tree

12 files changed

+169
-41
lines changed

12 files changed

+169
-41
lines changed

config/settings_template.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
"extra_params":[],
1515
"systemSettings": {
1616
"language": "zh-CN",
17-
"theme": "light"
17+
"theme": "light",
18+
"network":"local",
19+
"proxy": ""
1820
},
1921
"mainAgent":"super-model",
2022
"mcpServers": {},
@@ -38,7 +40,7 @@
3840
"enabled": false
3941
},
4042
"toolMemorandum": {
41-
"enabled": false
43+
"enabled": true
4244
},
4345
"getFile": {
4446
"enabled": false

main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -541,8 +541,8 @@ app.whenReady().then(async () => {
541541
vrmWindow = new BrowserWindow({
542542
width: windowWidth,
543543
height: windowHeight,
544-
x: 0,
545-
y: 0,
544+
x: width-windowWidth-40,
545+
y: height-windowHeight-40,
546546
transparent: true,
547547
frame: false,
548548
resizable: false,

package-lock.json

Lines changed: 4 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139
"cli-progress": "^3.12.0",
140140
"electron-updater": "^6.6.2",
141141
"element-plus": "^2.10.3",
142+
"form-data": "^4.0.4",
142143
"markdown-it": "^14.1.0",
143144
"three": "^0.178.0",
144145
"vue": "^3.5.17"

py/qq_bot_manager.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from PIL import Image
1818
import io
1919
import base64
20-
from py.get_setting import get_port
20+
from py.get_setting import get_port,load_settings
2121
from py.image_host import upload_image_host
2222

2323
class QQBotManager:
@@ -301,6 +301,7 @@ def __init__(self, *args, **kwargs):
301301
self.memoryLimit = 10
302302
self.memoryList = {}
303303
self.asyncToolsID = {}
304+
self.fileLinks = {}
304305
self.separators = ['。', '\n', '?', '!']
305306
self.reasoningVisible = False
306307
self.quickRestart = True
@@ -352,7 +353,7 @@ async def wait_for_ready(self, timeout=30):
352353
async def on_c2c_message_create(self, message: C2CMessage):
353354
if not self.is_running:
354355
return
355-
356+
settings = await load_settings()
356357
client = AsyncOpenAI(
357358
api_key="super-secret-key",
358359
base_url=f"http://127.0.0.1:{self.port}/v1"
@@ -441,13 +442,18 @@ async def on_c2c_message_create(self, message: C2CMessage):
441442
asyncToolsID = self.asyncToolsID[c_id]
442443
else:
443444
self.asyncToolsID[c_id] = []
445+
if c_id in self.fileLinks:
446+
fileLinks = self.fileLinks[c_id]
447+
else:
448+
fileLinks = []
444449
# 流式调用API
445450
stream = await client.chat.completions.create(
446451
model=self.QQAgent,
447452
messages=self.memoryList[c_id],
448453
stream=True,
449454
extra_body={
450455
"asyncToolsID": asyncToolsID,
456+
"fileLinks": fileLinks,
451457
}
452458
)
453459

@@ -462,6 +468,13 @@ async def on_c2c_message_create(self, message: C2CMessage):
462468
reasoning_content = delta.get("reasoning_content", "")
463469
tool_content = delta.get("tool_content", "")
464470
async_tool_id = delta.get("async_tool_id", "")
471+
tool_link = delta.get("tool_link", "")
472+
473+
if tool_link and settings["tools"]["toolMemorandum"]["enabled"]:
474+
if c_id not in self.fileLinks:
475+
self.fileLinks[c_id] = []
476+
self.fileLinks[c_id].append(tool_link)
477+
465478
if async_tool_id:
466479
# 判断async_tool_id在不在self.asyncToolsID[c_id]中
467480
if async_tool_id not in self.asyncToolsID[c_id]:
@@ -610,6 +623,7 @@ def _clean_text(self, text):
610623
async def on_group_at_message_create(self, message: GroupMessage):
611624
if not self.is_running:
612625
return
626+
settings = await load_settings()
613627
client = AsyncOpenAI(
614628
api_key="super-secret-key",
615629
base_url=f"http://127.0.0.1:{self.port}/v1"
@@ -688,14 +702,18 @@ async def on_group_at_message_create(self, message: GroupMessage):
688702
asyncToolsID = self.asyncToolsID[g_id]
689703
else:
690704
self.asyncToolsID[g_id] = []
691-
705+
if g_id in self.fileLinks:
706+
fileLinks = self.fileLinks[g_id]
707+
else:
708+
fileLinks = []
692709
# 流式API调用
693710
stream = await client.chat.completions.create(
694711
model=self.QQAgent,
695712
messages=self.memoryList[g_id],
696713
stream=True,
697714
extra_body={
698715
"asyncToolsID": asyncToolsID,
716+
"fileLinks": fileLinks,
699717
}
700718
)
701719

@@ -710,6 +728,11 @@ async def on_group_at_message_create(self, message: GroupMessage):
710728
reasoning_content = delta.get("reasoning_content", "")
711729
tool_content = delta.get("tool_content", "")
712730
async_tool_id = delta.get("async_tool_id", "")
731+
tool_link = delta.get("tool_link", "")
732+
if tool_link and settings["tools"]["toolMemorandum"]["enabled"]:
733+
if g_id not in self.fileLinks:
734+
self.fileLinks[g_id] = []
735+
self.fileLinks[g_id].append(tool_link)
713736
if async_tool_id:
714737
# 判断async_tool_id在不在self.asyncToolsID[g_id]中
715738
if async_tool_id not in self.asyncToolsID[g_id]:

py/wx_bot_manager.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import pyperclip
1717
import asyncio
1818
from openai import AsyncOpenAI
19-
from py.get_setting import get_port,UPLOAD_FILES_DIR
19+
from py.get_setting import get_port,UPLOAD_FILES_DIR,load_settings
2020
class WXBotManager:
2121
def __init__(self):
2222
self.bot_thread: Optional[threading.Thread] = None
@@ -249,6 +249,7 @@ def __init__(self):
249249
self.memoryLimit = 10
250250
self.memoryList = {}
251251
self.asyncToolsID = {}
252+
self.fileLinks = {}
252253
self.separators = ['。', '\n', '?', '!']
253254
self.reasoningVisible = False
254255
self.quickRestart = True
@@ -301,6 +302,7 @@ def _run_async_message_handler(self, msg, chat):
301302

302303
async def _handle_message_async(self, msg, chat):
303304
"""异步处理消息的实际逻辑"""
305+
settings = await load_settings()
304306
c_id = msg.sender
305307
c_name = msg.sender
306308
chat_info = msg.chat_info()
@@ -363,13 +365,17 @@ async def _handle_message_async(self, msg, chat):
363365
asyncToolsID = self.asyncToolsID[c_id]
364366
else:
365367
self.asyncToolsID[c_id] = []
366-
368+
if c_id in self.fileLinks:
369+
fileLinks = self.fileLinks[c_id]
370+
else:
371+
fileLinks = []
367372
stream = await self.client.chat.completions.create(
368373
model=self.WXAgent,
369374
messages=self.memoryList[c_id],
370375
stream=True,
371376
extra_body={
372377
"asyncToolsID": asyncToolsID,
378+
"fileLinks": fileLinks
373379
}
374380
)
375381

@@ -386,6 +392,13 @@ async def _handle_message_async(self, msg, chat):
386392
reasoning_content = delta.get("reasoning_content", "")
387393
tool_content = delta.get("tool_content", "")
388394
async_tool_id = delta.get("async_tool_id", "")
395+
tool_link = delta.get("tool_link", "")
396+
397+
if tool_link and settings["tools"]["toolMemorandum"]["enabled"]:
398+
if c_id not in self.fileLinks:
399+
self.fileLinks[c_id] = []
400+
self.fileLinks[c_id].append(tool_link)
401+
389402
if async_tool_id:
390403
# 判断async_tool_id在不在self.asyncToolsID[c_id]中
391404
if async_tool_id not in self.asyncToolsID[c_id]:

0 commit comments

Comments
 (0)