beswarm 0.1.83__tar.gz → 0.1.85__tar.gz

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.
Files changed (141) hide show
  1. {beswarm-0.1.83 → beswarm-0.1.85}/PKG-INFO +1 -1
  2. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/setup.py +1 -1
  3. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/models.py +1 -0
  4. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/websearch.py +2 -0
  5. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/prompt.py +23 -8
  6. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/worker.py +18 -5
  7. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/utils.py +22 -0
  8. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm.egg-info/PKG-INFO +1 -1
  9. {beswarm-0.1.83 → beswarm-0.1.85}/pyproject.toml +1 -1
  10. {beswarm-0.1.83 → beswarm-0.1.85}/MANIFEST.in +0 -0
  11. {beswarm-0.1.83 → beswarm-0.1.85}/README.md +0 -0
  12. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/__init__.py +0 -0
  13. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/main.py +0 -0
  14. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/__init__.py +0 -0
  15. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/__init__.py +0 -0
  16. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/log_config.py +0 -0
  17. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/request.py +0 -0
  18. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/response.py +0 -0
  19. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/test/test_base_api.py +0 -0
  20. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/test/test_geminimask.py +0 -0
  21. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/test/test_image.py +0 -0
  22. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/test/test_payload.py +0 -0
  23. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/core/utils.py +0 -0
  24. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/models/__init__.py +0 -0
  25. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/models/audio.py +0 -0
  26. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/models/base.py +0 -0
  27. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/models/chatgpt.py +0 -0
  28. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/models/claude.py +0 -0
  29. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/models/duckduckgo.py +0 -0
  30. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/models/gemini.py +0 -0
  31. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/models/groq.py +0 -0
  32. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/models/vertex.py +0 -0
  33. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/__init__.py +0 -0
  34. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/arXiv.py +0 -0
  35. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/config.py +0 -0
  36. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/excute_command.py +0 -0
  37. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/get_time.py +0 -0
  38. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/image.py +0 -0
  39. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/list_directory.py +0 -0
  40. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/read_file.py +0 -0
  41. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/read_image.py +0 -0
  42. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/readonly.py +0 -0
  43. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/registry.py +0 -0
  44. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/run_python.py +0 -0
  45. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/plugins/write_file.py +0 -0
  46. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/utils/__init__.py +0 -0
  47. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/utils/prompt.py +0 -0
  48. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/src/aient/utils/scripts.py +0 -0
  49. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/chatgpt.py +0 -0
  50. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/claude.py +0 -0
  51. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test.py +0 -0
  52. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_API.py +0 -0
  53. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_Deepbricks.py +0 -0
  54. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_Web_crawler.py +0 -0
  55. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_aiwaves.py +0 -0
  56. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_aiwaves_arxiv.py +0 -0
  57. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_ask_gemini.py +0 -0
  58. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_class.py +0 -0
  59. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_claude.py +0 -0
  60. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_claude_zh_char.py +0 -0
  61. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_ddg_search.py +0 -0
  62. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_download_pdf.py +0 -0
  63. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_gemini.py +0 -0
  64. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_get_token_dict.py +0 -0
  65. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_google_search.py +0 -0
  66. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_jieba.py +0 -0
  67. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_json.py +0 -0
  68. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_logging.py +0 -0
  69. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_ollama.py +0 -0
  70. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_plugin.py +0 -0
  71. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_py_run.py +0 -0
  72. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_requests.py +0 -0
  73. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_search.py +0 -0
  74. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_tikitoken.py +0 -0
  75. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_token.py +0 -0
  76. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_url.py +0 -0
  77. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_whisper.py +0 -0
  78. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_wildcard.py +0 -0
  79. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/aient/test/test_yjh.py +0 -0
  80. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/README.md +0 -0
  81. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  82. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  83. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  84. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  85. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  86. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  87. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  88. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  89. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  90. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  91. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  92. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  93. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  94. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  95. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  96. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  97. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  98. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  99. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  100. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  101. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  102. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  103. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  104. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  105. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  106. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  107. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/README.md +0 -0
  108. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/c-tags.scm +0 -0
  109. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  110. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  111. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/dart-tags.scm +0 -0
  112. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  113. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  114. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/elm-tags.scm +0 -0
  115. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/go-tags.scm +0 -0
  116. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  117. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/java-tags.scm +0 -0
  118. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  119. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  120. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  121. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/php-tags.scm +0 -0
  122. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/python-tags.scm +0 -0
  123. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/ql-tags.scm +0 -0
  124. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  125. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/rust-tags.scm +0 -0
  126. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/scala-tags.scm +0 -0
  127. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  128. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/__init__.py +0 -0
  129. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/click.py +0 -0
  130. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/edit_file.py +0 -0
  131. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/planner.py +0 -0
  132. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/repomap.py +0 -0
  133. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/screenshot.py +0 -0
  134. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/search_arxiv.py +0 -0
  135. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/search_web.py +0 -0
  136. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm/tools/think.py +0 -0
  137. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm.egg-info/SOURCES.txt +0 -0
  138. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm.egg-info/dependency_links.txt +0 -0
  139. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm.egg-info/requires.txt +0 -0
  140. {beswarm-0.1.83 → beswarm-0.1.85}/beswarm.egg-info/top_level.txt +0 -0
  141. {beswarm-0.1.83 → beswarm-0.1.85}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.1.83
3
+ Version: 0.1.85
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
 
5
5
  setup(
6
6
  name="aient",
7
- version="1.1.31",
7
+ version="1.1.32",
8
8
  description="Aient: The Awakening of Agent.",
9
9
  long_description=Path.open(Path("README.md"), encoding="utf-8").read(),
10
10
  long_description_content_type="text/markdown",
@@ -1,3 +1,4 @@
1
+ import json
1
2
  from io import IOBase
2
3
  from pydantic import BaseModel, Field, model_validator, ConfigDict
3
4
  from typing import List, Dict, Optional, Union, Tuple, Literal, Any
@@ -341,6 +341,8 @@ async def get_search_results(query):
341
341
 
342
342
  if __name__ == "__main__":
343
343
  os.system("clear")
344
+ # python -m beswarm.aient.src.aient.plugins.websearch
345
+ print(get_url_content(""))
344
346
  # from aient.models import chatgpt
345
347
  # print(get_search_results("今天的微博热搜有哪些?", chatgpt.chatgpt_api_url.v1_url))
346
348
 
@@ -105,10 +105,25 @@ instruction_system_prompt = """
105
105
  - 根据任务目标和当前进度,分析还需要哪些步骤。明确最终目标与当前状态之间的差距。
106
106
 
107
107
  2. **推理 (Reasoning):**
108
- - **自我批判与修正:** 检查工作智能体是否陷入困境或偏离轨道。如果你的上一条指令效果不佳/非预期,分析原因并调整策略,思考可能的原因和解决方案。
109
- - **规划:** 构思一个或多个能够完成任务的行动序列(即指令序列)。
110
- - **假设生成与检验:** 评估每个规划的潜在结果和可行性。如果主要方案存在风险,请准备备选方案。
111
- - **工具调用:** 检查工作智能体可以使用哪些工具,然后确定需要调用哪些工具。请明确要求工作智能体使用特定工具。如果工作智能体不清楚工具的参数,请直接告诉它。
108
+ - **任务规划 (Task Planning):** 基于"回顾与分析"的结果,规划出最直接、最逻辑的下一步行动,以缩小当前状态与最终目标的差距。思考:"现在最应该做什么来推进任务?"
109
+
110
+ - **策略选择 (Strategy Selection):**
111
+ - **探索 (Exploration):** 当对代码实现、文件位置、API用法等存在不确定性时,优先选择探索策略。探索的目的是收集信息,消除未知。
112
+ - **执行 (Execution):** 当路径清晰、信息充足时,构思一个或多个能够完成任务的行动序列(即指令序列),评估每个规划的潜在结果和可行性。如果主要方案存在风险,请准备备选方案,最后选择执行策略。执行的目的是实际地推进任务。
113
+
114
+ - **困境检测与策略调整 (Critical Check):** 这是每个推理周期都**必须执行**的关键检查环节。
115
+ - **检测信号:** 工作智能体是否连续2次或以上在同一个问题上失败?是否反复报告同类错误(如 `TypeError`, `IndexError`)?
116
+ - **触发调整:** 一旦检测到困境信号,**必须放弃当前的"执行"策略**,并立即切换到"诊断"策略。
117
+ - **诊断策略 (Diagnosis Strategy):** 一旦激活,你必须遵循以下科学调试方法,而非盲目猜测:
118
+ 1. **假设 (Hypothesize):** 基于错误信息和现有代码,提出一个关于根本原因的具体、可测试的假设。
119
+ 2. **实验 (Experiment):** 设计一个最小化的实验来验证你的假设。这包括两种主要方法:
120
+ - **静态分析 (Static Analysis):** 指令工作智能体使用**文件阅读**等功能的工具,去阅读相关的库代码、函数定义或配置文件,以获取确凿的证据。
121
+ - **动态探测 (Dynamic Probing):** 指令工作智能体使用**代码编辑**功能的工具向代码中临时插入调试语句(如 `print()`、日志记录),然后用**命令执行**功能的工具运行,以观察运行时的变量状态。
122
+ 3. **观察与分析 (Observe & Analyze):** 仔细分析实验结果(如文件内容或命令输出)。结果是证实了还是证伪了你的假设?
123
+ 4. **迭代 (Iterate):** 基于新的发现,更新你的假设并设计下一个实验。重复这个循环,逐步缩小问题范围,直到定位根本原因。
124
+ 5. **严禁盲目修补:** 在这个诊断循环中,**严禁**让工作智能体进行任何非调试目的的、永久性的代码修改。所有调试代码在问题解决后都应被移除。
125
+
126
+ - **工具调用规划:** 检查工作智能体可以使用哪些工具。根据最终确定的策略(探索、执行或诊断),选择最合适的工具,并明确其使用方法。
112
127
 
113
128
  3. **生成指令 (Generate Instructions):**
114
129
  - 基于以上推理,选择最优的行动方案,并将其转化为对工作智能体清晰、明确、可执行的指令。
@@ -119,10 +134,10 @@ instruction_system_prompt = """
119
134
  {{1. 回顾与分析}}
120
135
 
121
136
  {{2. 推理过程
122
- - 自我批判与修正: ...
123
- - 规划: ...
124
- - 假设生成与检验: ...
125
- - 工具调用: ...
137
+ - 任务规划: ...
138
+ - 策略选择: ...
139
+ - 困境检测与策略调整: ...
140
+ - 工具调用规划: ...
126
141
  }}
127
142
 
128
143
  <instructions>
@@ -3,12 +3,13 @@ import re
3
3
  import copy
4
4
  import json
5
5
  import platform
6
+ from pathlib import Path
6
7
  from datetime import datetime
7
8
 
8
9
  from ..aient.src.aient.models import chatgpt
9
10
  from ..aient.src.aient.plugins import register_tool, get_function_call_list
10
11
  from ..prompt import worker_system_prompt, instruction_system_prompt
11
- from ..utils import extract_xml_content, get_current_screen_image_message
12
+ from ..utils import extract_xml_content, get_current_screen_image_message, replace_xml_content
12
13
 
13
14
  @register_tool()
14
15
  async def worker(goal, tools, work_dir, cache_messages=None):
@@ -48,7 +49,13 @@ async def worker(goal, tools, work_dir, cache_messages=None):
48
49
  "function_call_max_loop": 100,
49
50
  }
50
51
  if cache_messages:
51
- work_agent_config["cache_messages"] = cache_messages
52
+ if isinstance(cache_messages, bool) and cache_messages == True:
53
+ cache_file_path = Path(work_dir) / ".beswarm" / "work_agent_conversation_history.json"
54
+ if cache_file_path.exists():
55
+ with cache_file_path.open("r", encoding="utf-8") as f:
56
+ cache_messages = json.load(f)
57
+ first_user_message = replace_xml_content(cache_messages[1]["content"], "goal", goal)
58
+ work_agent_config["cache_messages"] = cache_messages[0:1] + [{"role": "user", "content": first_user_message}] + cache_messages[2:]
52
59
 
53
60
  instruction_agent_config = {
54
61
  "api_key": os.getenv("API_KEY"),
@@ -131,7 +138,7 @@ async def worker(goal, tools, work_dir, cache_messages=None):
131
138
  if conversation_history == []:
132
139
  next_instruction = (
133
140
  "任务描述:\n"
134
- f"{goal}\n\n"
141
+ f"<goal>{goal}</goal>\n\n"
135
142
  "现在开始执行第一步:\n"
136
143
  f"{next_instruction}"
137
144
  )
@@ -186,7 +193,13 @@ async def worker_gen(goal, tools, work_dir, cache_messages=None):
186
193
  "function_call_max_loop": 100,
187
194
  }
188
195
  if cache_messages:
189
- work_agent_config["cache_messages"] = cache_messages
196
+ if isinstance(cache_messages, bool) and cache_messages == True:
197
+ cache_file_path = Path(work_dir) / ".beswarm" / "work_agent_conversation_history.json"
198
+ if cache_file_path.exists():
199
+ with cache_file_path.open("r", encoding="utf-8") as f:
200
+ cache_messages = json.load(f)
201
+ first_user_message = replace_xml_content(cache_messages[1]["content"], "goal", goal)
202
+ work_agent_config["cache_messages"] = cache_messages[0:1] + [{"role": "user", "content": first_user_message}] + cache_messages[2:]
190
203
 
191
204
  instruction_agent_config = {
192
205
  "api_key": os.getenv("API_KEY"),
@@ -270,7 +283,7 @@ async def worker_gen(goal, tools, work_dir, cache_messages=None):
270
283
  if conversation_history == []:
271
284
  next_instruction = (
272
285
  "任务描述:\n"
273
- f"{goal}\n\n"
286
+ f"<goal>{goal}</goal>\n\n"
274
287
  "现在开始执行第一步:\n"
275
288
  f"{next_instruction}"
276
289
  )
@@ -10,6 +10,28 @@ def extract_xml_content(text, xml_tag):
10
10
  return ''
11
11
  return result
12
12
 
13
+ def replace_xml_content(original_string: str, tag_name: str, replacement_content: str) -> str:
14
+ """
15
+ 将指定XML标签内的内容替换为新内容。
16
+
17
+ 此函数使用正则表达式查找所有匹配的XML标签对(例如 `<tag>...</tag>`),
18
+ 并将其中的内容替换为 `replacement_content`。
19
+
20
+ Args:
21
+ original_string (str): 包含XML标记的原始字符串。
22
+ tag_name (str): 要定位的XML标签的名称(不带尖括号)。
23
+ replacement_content (str): 用于替换标签内部内容的新字符串。
24
+
25
+ Returns:
26
+ str: 返回内容已被替换的新字符串。如果未找到匹配的标签,则返回原始字符串。
27
+ """
28
+ pattern = f"<{tag_name}>.*?<\\/{tag_name}>"
29
+ replacement = f"<{tag_name}>{replacement_content}</{tag_name}>"
30
+
31
+ new_string = re.sub(pattern, replacement, original_string, flags=re.DOTALL)
32
+
33
+ return new_string
34
+
13
35
  import io
14
36
  import base64
15
37
  from .aient.src.aient.core.utils import get_image_message, get_text_message
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.1.83
3
+ Version: 0.1.85
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beswarm"
3
- version = "0.1.83"
3
+ version = "0.1.85"
4
4
  description = "MAS"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
File without changes
File without changes
File without changes
File without changes
File without changes