beswarm 0.2.78__py3-none-any.whl → 0.2.79__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- beswarm/core.py +1 -0
- beswarm/tools/search_web.py +44 -7
- beswarm/tools/worker.py +2 -1
- {beswarm-0.2.78.dist-info → beswarm-0.2.79.dist-info}/METADATA +1 -1
- {beswarm-0.2.78.dist-info → beswarm-0.2.79.dist-info}/RECORD +7 -7
- {beswarm-0.2.78.dist-info → beswarm-0.2.79.dist-info}/WHEEL +0 -0
- {beswarm-0.2.78.dist-info → beswarm-0.2.79.dist-info}/top_level.txt +0 -0
beswarm/core.py
CHANGED
@@ -12,6 +12,7 @@ broker = MessageBroker()
|
|
12
12
|
mcp_manager = MCPManager()
|
13
13
|
kgm = KnowledgeGraphManager(broker=broker)
|
14
14
|
current_task_manager = contextvars.ContextVar('current_task_manager')
|
15
|
+
current_work_dir = contextvars.ContextVar('current_work_dir', default=None)
|
15
16
|
|
16
17
|
def get_task_manager():
|
17
18
|
"""Creates a new, isolated TaskManager instance."""
|
beswarm/tools/search_web.py
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
import re
|
2
2
|
import os
|
3
|
+
import csv
|
4
|
+
import time
|
3
5
|
import json
|
4
6
|
import httpx
|
5
7
|
import threading
|
8
|
+
from pathlib import Path
|
6
9
|
|
7
10
|
from ..aient.aient.plugins import register_tool, get_url_content # Assuming a similar plugin structure
|
11
|
+
from ..core import current_work_dir
|
8
12
|
|
9
13
|
class ThreadWithReturnValue(threading.Thread):
|
10
14
|
def run(self):
|
@@ -19,6 +23,7 @@ class ThreadWithReturnValue(threading.Thread):
|
|
19
23
|
async def search_web(query: str):
|
20
24
|
"""
|
21
25
|
获取 Google 搜索结果。
|
26
|
+
搜索结果将保存在 csv 文件到 .beswarm/cache 目录下
|
22
27
|
|
23
28
|
参数:
|
24
29
|
query (str): 要在 Google 上搜索的查询字符串。
|
@@ -289,13 +294,45 @@ async def search_web(query: str):
|
|
289
294
|
# with open(output_filename, "w", encoding="utf-8") as f:
|
290
295
|
# json.dump(final_web_content, f, indent=2, ensure_ascii=False)
|
291
296
|
# print(f"Filtered web content saved to {output_filename}")
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
297
|
+
|
298
|
+
if final_web_content:
|
299
|
+
work_dir = current_work_dir.get()
|
300
|
+
if work_dir:
|
301
|
+
output_path = Path(work_dir) / ".beswarm" / "cache"
|
302
|
+
else:
|
303
|
+
output_path = Path(".")
|
304
|
+
|
305
|
+
output_path.mkdir(parents=True, exist_ok=True)
|
306
|
+
|
307
|
+
# 使用时间戳生成唯一的文件名
|
308
|
+
timestamp = time.strftime("%Y%m%d-%H%M%S")
|
309
|
+
csv_filename = f"web_content_{timestamp}.csv"
|
310
|
+
csv_filepath = output_path / csv_filename
|
311
|
+
|
312
|
+
with open(csv_filepath, "w", newline="", encoding="utf-8") as csvfile:
|
313
|
+
# 根据字典中的键定义字段名
|
314
|
+
fieldnames = ["query", "url", "content"]
|
315
|
+
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
|
316
|
+
|
317
|
+
# 写入标题行
|
318
|
+
writer.writeheader()
|
319
|
+
|
320
|
+
# 写入数据行
|
321
|
+
for item in final_web_content:
|
322
|
+
item['query'] = query
|
323
|
+
if 'content' in item and isinstance(item['content'], str):
|
324
|
+
item['content'] = item['content'].encode('unicode_escape').decode('utf-8')
|
325
|
+
writer.writerow(item)
|
326
|
+
return f"已将筛选后的网页内容保存到 {csv_filepath.absolute()}"
|
327
|
+
return "No web content"
|
328
|
+
|
329
|
+
|
330
|
+
# for item in final_web_content:
|
331
|
+
# final_result += item["content"]
|
332
|
+
# final_result += "\n\n"
|
333
|
+
# if not final_result:
|
334
|
+
# return "No web content"
|
335
|
+
# return final_result
|
299
336
|
|
300
337
|
import difflib
|
301
338
|
|
beswarm/tools/worker.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
from datetime import datetime
|
2
2
|
from typing import List, Dict, Union
|
3
3
|
|
4
|
-
from ..core import mcp_manager, broker, kgm, get_task_manager, current_task_manager
|
4
|
+
from ..core import mcp_manager, broker, kgm, get_task_manager, current_task_manager, current_work_dir
|
5
5
|
from ..agents.planact import BrokerWorker
|
6
6
|
from ..agents.chatgroup import ChatGroupWorker
|
7
7
|
from ..aient.aient.plugins import register_tool
|
@@ -12,6 +12,7 @@ async def worker(goal: str, tools: List[Union[str, Dict]], work_dir: str, cache_
|
|
12
12
|
start_time = datetime.now()
|
13
13
|
task_manager = get_task_manager()
|
14
14
|
current_task_manager.set(task_manager)
|
15
|
+
current_work_dir.set(work_dir)
|
15
16
|
worker_instance = BrokerWorker(goal, tools, work_dir, cache_messages, broker, mcp_manager, task_manager, kgm)
|
16
17
|
result = await worker_instance.run()
|
17
18
|
end_time = datetime.now()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
beswarm/__init__.py,sha256=HZjUOJtZR5QhMuDbq-wukQQn1VrBusNWai_ysGo-VVI,20
|
2
2
|
beswarm/broker.py,sha256=64Y-djrKYaZfBQ8obwHOmr921QgZeu9BtScZWaYLfDo,9887
|
3
|
-
beswarm/core.py,sha256=
|
3
|
+
beswarm/core.py,sha256=jKStpTTOu6Ojond_i-okTZLrvSAJ4yUoTZwtDfFTiRs,553
|
4
4
|
beswarm/knowledge_graph.py,sha256=oiOMknAJzGrOHc2AyQgvrCcZAkGLhFnsnvSBdfFBWMw,14831
|
5
5
|
beswarm/prompt.py,sha256=qlH-yYCGv9j9-5grnMXl0B53CDZgfTpe4ncwBwgWg7o,32816
|
6
6
|
beswarm/taskmanager.py,sha256=vMmcoZ4FlNvjEliRkv3AniPji50NcY4Q1_2HETzR0DU,12226
|
@@ -112,11 +112,11 @@ beswarm/tools/repomap.py,sha256=w98aHmjNjtvcUVc5maWORqzKqDy2KVGLooOe__uJVCU,4523
|
|
112
112
|
beswarm/tools/request_input.py,sha256=3n2UW8m8Q7dxGhd7L7hzSJ1kk4ekMbtdtNZZT3dJf20,938
|
113
113
|
beswarm/tools/screenshot.py,sha256=hyL6F8_k9Y03Nb_X18cY-klCpWWdkqyC-iGXfKX-7jc,1007
|
114
114
|
beswarm/tools/search_arxiv.py,sha256=NLiJV1B7Um6EuZXLxnL950d837_he2LGG7qaGACSgwg,10750
|
115
|
-
beswarm/tools/search_web.py,sha256=
|
115
|
+
beswarm/tools/search_web.py,sha256=juFbife765vRZXpTHOV_6ki4h6NpSmZbBcWJ8Fp-uiE,17497
|
116
116
|
beswarm/tools/subtasks.py,sha256=UI9QznALmZNbNOSoR_2AdlnDAkZBuKMq0GifnBCgpLo,10458
|
117
|
-
beswarm/tools/worker.py,sha256=
|
117
|
+
beswarm/tools/worker.py,sha256=mQ1qdrQ8MgL99byAbTvxfEByFFGN9mty3UHqHjARMQ8,2331
|
118
118
|
beswarm/tools/write_csv.py,sha256=u0Hq18Ksfheb52MVtyLNCnSDHibITpsYBPs2ub7USYA,1466
|
119
|
-
beswarm-0.2.
|
120
|
-
beswarm-0.2.
|
121
|
-
beswarm-0.2.
|
122
|
-
beswarm-0.2.
|
119
|
+
beswarm-0.2.79.dist-info/METADATA,sha256=owpFd3kO5L7n5-r1RpUs25emR-2kpRJ4SIasXxExmbQ,3878
|
120
|
+
beswarm-0.2.79.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
121
|
+
beswarm-0.2.79.dist-info/top_level.txt,sha256=pJw4O87wvt5882smuSO6DfByJz7FJ8SxxT8h9fHCmpo,8
|
122
|
+
beswarm-0.2.79.dist-info/RECORD,,
|
File without changes
|
File without changes
|