beswarm 0.1.75__tar.gz → 0.1.77__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 (142) hide show
  1. {beswarm-0.1.75 → beswarm-0.1.77}/PKG-INFO +1 -1
  2. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/setup.py +1 -1
  3. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/excute_command.py +1 -14
  4. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/write_file.py +1 -13
  5. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/utils/scripts.py +13 -0
  6. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/edit_file.py +21 -18
  7. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm.egg-info/PKG-INFO +1 -1
  8. {beswarm-0.1.75 → beswarm-0.1.77}/pyproject.toml +1 -1
  9. {beswarm-0.1.75 → beswarm-0.1.77}/MANIFEST.in +0 -0
  10. {beswarm-0.1.75 → beswarm-0.1.77}/README.md +0 -0
  11. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/__init__.py +0 -0
  12. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/main.py +0 -0
  13. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/__init__.py +0 -0
  14. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/__init__.py +0 -0
  15. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/log_config.py +0 -0
  16. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/models.py +0 -0
  17. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/request.py +0 -0
  18. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/response.py +0 -0
  19. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/test/test_base_api.py +0 -0
  20. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/test/test_geminimask.py +0 -0
  21. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/test/test_image.py +0 -0
  22. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/test/test_payload.py +0 -0
  23. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/core/utils.py +0 -0
  24. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/models/__init__.py +0 -0
  25. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/models/audio.py +0 -0
  26. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/models/base.py +0 -0
  27. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/models/chatgpt.py +0 -0
  28. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/models/claude.py +0 -0
  29. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/models/duckduckgo.py +0 -0
  30. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/models/gemini.py +0 -0
  31. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/models/groq.py +0 -0
  32. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/models/vertex.py +0 -0
  33. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/__init__.py +0 -0
  34. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/arXiv.py +0 -0
  35. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/config.py +0 -0
  36. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/get_time.py +0 -0
  37. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/image.py +0 -0
  38. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/list_directory.py +0 -0
  39. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/read_file.py +0 -0
  40. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/read_image.py +0 -0
  41. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/readonly.py +0 -0
  42. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/registry.py +0 -0
  43. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/run_python.py +0 -0
  44. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/plugins/websearch.py +0 -0
  45. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/prompt/__init__.py +0 -0
  46. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/prompt/agent.py +0 -0
  47. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/utils/__init__.py +0 -0
  48. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/src/aient/utils/prompt.py +0 -0
  49. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/chatgpt.py +0 -0
  50. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/claude.py +0 -0
  51. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test.py +0 -0
  52. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_API.py +0 -0
  53. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_Deepbricks.py +0 -0
  54. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_Web_crawler.py +0 -0
  55. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_aiwaves.py +0 -0
  56. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_aiwaves_arxiv.py +0 -0
  57. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_ask_gemini.py +0 -0
  58. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_class.py +0 -0
  59. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_claude.py +0 -0
  60. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_claude_zh_char.py +0 -0
  61. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_ddg_search.py +0 -0
  62. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_download_pdf.py +0 -0
  63. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_gemini.py +0 -0
  64. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_get_token_dict.py +0 -0
  65. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_google_search.py +0 -0
  66. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_jieba.py +0 -0
  67. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_json.py +0 -0
  68. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_logging.py +0 -0
  69. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_ollama.py +0 -0
  70. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_plugin.py +0 -0
  71. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_py_run.py +0 -0
  72. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_requests.py +0 -0
  73. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_search.py +0 -0
  74. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_tikitoken.py +0 -0
  75. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_token.py +0 -0
  76. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_url.py +0 -0
  77. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_whisper.py +0 -0
  78. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_wildcard.py +0 -0
  79. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/aient/test/test_yjh.py +0 -0
  80. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/README.md +0 -0
  81. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  82. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  83. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  84. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  85. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  86. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  87. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  88. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  89. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  90. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  91. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  92. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  93. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  94. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  95. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  96. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  97. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  98. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  99. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  100. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  101. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  102. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  103. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  104. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  105. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  106. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  107. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/README.md +0 -0
  108. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/c-tags.scm +0 -0
  109. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  110. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  111. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/dart-tags.scm +0 -0
  112. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  113. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  114. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/elm-tags.scm +0 -0
  115. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/go-tags.scm +0 -0
  116. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  117. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/java-tags.scm +0 -0
  118. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  119. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  120. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  121. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/php-tags.scm +0 -0
  122. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/python-tags.scm +0 -0
  123. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/ql-tags.scm +0 -0
  124. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  125. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/rust-tags.scm +0 -0
  126. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/scala-tags.scm +0 -0
  127. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  128. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/__init__.py +0 -0
  129. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/click.py +0 -0
  130. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/planner.py +0 -0
  131. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/repomap.py +0 -0
  132. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/screenshot.py +0 -0
  133. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/search_arxiv.py +0 -0
  134. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/search_web.py +0 -0
  135. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/think.py +0 -0
  136. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/tools/worker.py +0 -0
  137. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm/utils.py +0 -0
  138. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm.egg-info/SOURCES.txt +0 -0
  139. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm.egg-info/dependency_links.txt +0 -0
  140. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm.egg-info/requires.txt +0 -0
  141. {beswarm-0.1.75 → beswarm-0.1.77}/beswarm.egg-info/top_level.txt +0 -0
  142. {beswarm-0.1.75 → beswarm-0.1.77}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.1.75
3
+ Version: 0.1.77
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.26",
7
+ version="1.1.27",
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,10 +1,9 @@
1
1
  import subprocess
2
2
  from .registry import register_tool
3
- from ..utils.scripts import sandbox
3
+ from ..utils.scripts import sandbox, unescape_html
4
4
 
5
5
  import re
6
6
  import os
7
- import html
8
7
  import select
9
8
 
10
9
  # 检查是否在 Unix-like 系统上 (pty 模块主要用于 Unix)
@@ -39,18 +38,6 @@ def compare_line(line: str) -> bool:
39
38
  # print(f"similarity: {similarity}")
40
39
  return similarity > 0.89
41
40
 
42
- def unescape_html(input_string: str) -> str:
43
- """
44
- 将字符串中的 HTML 实体(例如 &)转换回其原始字符(例如 &)。
45
-
46
- Args:
47
- input_string: 包含 HTML 实体的输入字符串。
48
-
49
- Returns:
50
- 转换后的字符串。
51
- """
52
- return html.unescape(input_string)
53
-
54
41
  def get_python_executable(command: str) -> str:
55
42
  """
56
43
  获取 Python 可执行文件的路径。
@@ -1,19 +1,7 @@
1
1
  from .registry import register_tool
2
+ from ..utils.scripts import unescape_html
2
3
 
3
4
  import os
4
- import html
5
-
6
- def unescape_html(input_string: str) -> str:
7
- """
8
- 将字符串中的 HTML 实体(例如 &)转换回其原始字符(例如 &)。
9
-
10
- Args:
11
- input_string: 包含 HTML 实体的输入字符串。
12
-
13
- Returns:
14
- 转换后的字符串。
15
- """
16
- return html.unescape(input_string)
17
5
 
18
6
  @register_tool()
19
7
  def write_to_file(path, content, mode='w'):
@@ -202,6 +202,19 @@ def parse_tools_from_cursor_prompt(text):
202
202
  print(f"解析 JSON 时出错: {e}")
203
203
  return []
204
204
 
205
+ import html
206
+ def unescape_html(input_string: str) -> str:
207
+ """
208
+ 将字符串中的 HTML 实体(例如 &)转换回其原始字符(例如 &)。
209
+
210
+ Args:
211
+ input_string: 包含 HTML 实体的输入字符串。
212
+
213
+ Returns:
214
+ 转换后的字符串。
215
+ """
216
+ return html.unescape(input_string)
217
+
205
218
  import sys
206
219
  import shlex
207
220
  import builtins
@@ -1,9 +1,11 @@
1
1
  import os
2
2
  import re
3
+ import difflib
3
4
  from ..aient.src.aient.plugins import register_tool
5
+ from ..aient.src.aient.utils.scripts import unescape_html
4
6
 
5
7
  @register_tool()
6
- def edit_file(file_path, diff_content, match_precision=0.8):
8
+ def edit_file(file_path, diff_content, match_precision=0.9):
7
9
  """
8
10
  使用diff模式编辑代码文件。**重要:此函数每次调用只能对文件进行一处修改。**
9
11
 
@@ -22,7 +24,7 @@ def edit_file(file_path, diff_content, match_precision=0.8):
22
24
  参数:
23
25
  file_path: 要编辑的文件路径。
24
26
  diff_content: 包含单次修改信息的diff字符串,格式必须符合上述要求。
25
- match_precision: 匹配精度 (0.0-1.0),值越高要求匹配越精确,默认0.8。当完全精确匹配失败时,此参数生效。
27
+ match_precision: 匹配精度 (0.0-1.0),值越高要求匹配越精确,默认为0.9。当完全精确匹配失败时,此参数生效。
26
28
 
27
29
  返回:
28
30
  编辑结果的状态信息,包括成功或错误信息。
@@ -63,6 +65,8 @@ def edit_file(file_path, diff_content, match_precision=0.8):
63
65
  # 应用每个diff块
64
66
  new_content = content
65
67
  for search_block, replace_block in diff_blocks:
68
+ search_block = unescape_html(search_block)
69
+ replace_block = unescape_html(replace_block)
66
70
  # 检查搜索块是否为空
67
71
  if not search_block.strip():
68
72
  return f"错误: 搜索块不能为空"
@@ -93,27 +97,19 @@ def edit_file(file_path, diff_content, match_precision=0.8):
93
97
  for i in range(len(content_lines) - len(search_lines) + 1):
94
98
  # 计算当前位置的匹配分数
95
99
  match_score = 0
96
- total_chars = 0
100
+ lines_compared = 0
97
101
 
98
102
  for j in range(len(search_lines)):
99
103
  search_line = search_lines[j]
100
104
  content_line = content_lines[i + j]
101
105
 
102
- # 计算两行之间的相似度(使用更精确的算法)
103
- # 1. 字符级别的比较
104
- common_chars = sum(c1 == c2 for c1, c2 in zip(search_line, content_line))
105
- total_line_chars = max(len(search_line), len(content_line))
106
-
107
- if total_line_chars > 0:
108
- line_match = common_chars / total_line_chars
109
- match_score += line_match
110
- total_chars += 1
106
+ # 使用 difflib 计算行相似度,该算法对插入和删除更具鲁棒性
107
+ line_match = difflib.SequenceMatcher(None, search_line, content_line).ratio()
108
+ match_score += line_match
109
+ lines_compared += 1
111
110
 
112
111
  # 计算整体匹配分数
113
- if total_chars > 0:
114
- match_score = match_score / total_chars
115
- else:
116
- match_score = 0
112
+ match_score = match_score / lines_compared
117
113
 
118
114
  # 如果使用高精度匹配 (>0.95),我们需要更严格地检查匹配结果
119
115
  if match_precision > 0.95:
@@ -146,7 +142,14 @@ def edit_file(file_path, diff_content, match_precision=0.8):
146
142
  total_original_lines += original_lines
147
143
  total_new_lines += new_lines
148
144
  else:
149
- return f"错误: 在文件中未找到足够匹配的代码块,最佳匹配分数为 {best_match_score:.2f},但要求为 {match_precision:.2f}"
145
+ error_message = f"错误: 在文件中未找到足够匹配的代码块,最佳匹配分数为 {best_match_score:.2f},但要求为 {match_precision:.2f}"
146
+ if best_match_index != -1:
147
+ start_index = max(0, best_match_index - len(search_lines))
148
+ end_index = min(len(content_lines), best_match_index + 2 * len(search_lines))
149
+ context_lines = content_lines[start_index:end_index]
150
+ context_block = '\n'.join(context_lines)
151
+ error_message += f"\n\n文件的最佳匹配范围原文如下 (上下文已扩展):\n<real_file_content>\n{context_block}\n</real_file_content>"
152
+ return error_message
150
153
 
151
154
  # 如果没有进行任何编辑,返回错误
152
155
  if edits_count == 0:
@@ -173,7 +176,7 @@ def edit_file(file_path, diff_content, match_precision=0.8):
173
176
  if __name__ == "__main__":
174
177
  edit_str = """
175
178
  <<<<<<< SEARCH
176
- parser.add_argument('--dataset', type=str, default='cifar10', choices=['cifar10', 'cifar100', 'imagenet'], help="Dataset to use.")
179
+ parser.add_argument('--dataset',type=str,default='cifar10', choices=['cifar10', 'cifar100', 'imagenet'],help="Dataset to use.")
177
180
  =======
178
181
  parser.add_argument('--dataset', type=str, default='cifar10', choices=['cifar10', 'cifar100', 'imagenet', 'tinyimagenet'], help="Dataset to use.")
179
182
  >>>>>>> REPLACE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.1.75
3
+ Version: 0.1.77
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.75"
3
+ version = "0.1.77"
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
File without changes