jarvis-ai-assistant 0.1.72__py3-none-any.whl → 0.1.73__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.

Potentially problematic release.


This version of jarvis-ai-assistant might be problematic. Click here for more details.

jarvis/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """Jarvis AI Assistant"""
2
2
 
3
- __version__ = "0.1.72"
3
+ __version__ = "0.1.73"
@@ -377,10 +377,12 @@ class CodeBase:
377
377
  try:
378
378
  file_path, score_str = line.split(':', 1)
379
379
  file_path = file_path.strip()
380
- score = float(score_str.strip())
381
- # 找到对应的原始描述
382
- desc = next((desc for p, _, desc in initial_results if p == file_path), "")
383
- scored_results.append((file_path, score/100.0, desc))
380
+ score = float(score_str.strip()) / 100.0 # 转换为0-1范围
381
+ # 只保留相关度大于等于0.7的结果
382
+ if score >= 0.7:
383
+ # 找到对应的原始描述
384
+ desc = next((desc for p, _, desc in initial_results if p == file_path), "")
385
+ scored_results.append((file_path, score, desc))
384
386
  except:
385
387
  continue
386
388
 
@@ -413,8 +415,6 @@ class CodeBase:
413
415
  PrettyOutput.print(f"查询: {query}", output_type=OutputType.INFO)
414
416
 
415
417
  # 为每个查询获取相似文件
416
- all_results = {} # 文件路径 -> (总分数, 出现次数, 描述)
417
-
418
418
  q_vector = self.get_embedding(query)
419
419
  q_vector = q_vector.reshape(1, -1)
420
420
 
@@ -429,12 +429,18 @@ class CodeBase:
429
429
  continue
430
430
 
431
431
  similarity = 1.0 / (1.0 + float(distance))
432
- PrettyOutput.print(f" {self.file_paths[i]} : 距离 {distance:.3f}, 相似度 {similarity:.3f}",
433
- output_type=OutputType.INFO)
432
+ # 只保留相似度大于等于0.5的结果
433
+ if similarity >= 0.5:
434
+ PrettyOutput.print(f" {self.file_paths[i]} : 距离 {distance:.3f}, 相似度 {similarity:.3f}",
435
+ output_type=OutputType.INFO)
434
436
 
435
- file_path = self.file_paths[i]
436
- data = self.vector_cache[file_path]
437
- initial_results.append((file_path, similarity, data["description"]))
437
+ file_path = self.file_paths[i]
438
+ data = self.vector_cache[file_path]
439
+ initial_results.append((file_path, similarity, data["description"]))
440
+
441
+ if not initial_results:
442
+ PrettyOutput.print("没有找到相似度大于0.5的文件", output_type=OutputType.WARNING)
443
+ return []
438
444
 
439
445
  # 使用大模型重新排序
440
446
  PrettyOutput.print("使用大模型重新排序...", output_type=OutputType.INFO)
@@ -483,21 +489,25 @@ class CodeBase:
483
489
  model.delete_chat()
484
490
 
485
491
 
492
+
486
493
  def main():
487
494
  parser = argparse.ArgumentParser(description='Codebase management and search tool')
488
495
  parser.add_argument('--search', type=str, help='Search query to find similar code files')
489
496
  parser.add_argument('--top-k', type=int, default=20, help='Number of results to return (default: 20)')
490
497
  parser.add_argument('--ask', type=str, help='Ask a question about the codebase')
498
+ parser.add_argument('--generate', action='store_true', help='Generate codebase index')
491
499
  args = parser.parse_args()
492
500
 
493
501
  current_dir = find_git_root()
494
502
  codebase = CodeBase(current_dir)
495
503
 
496
- try:
497
- codebase.generate_codebase()
498
- PrettyOutput.print("\nCodebase generation completed", output_type=OutputType.SUCCESS)
499
- except Exception as e:
500
- PrettyOutput.print(f"Error during codebase generation: {str(e)}", output_type=OutputType.ERROR)
504
+
505
+ if args.generate:
506
+ try:
507
+ codebase.generate_codebase()
508
+ PrettyOutput.print("\nCodebase generation completed", output_type=OutputType.SUCCESS)
509
+ except Exception as e:
510
+ PrettyOutput.print(f"Error during codebase generation: {str(e)}", output_type=OutputType.ERROR)
501
511
 
502
512
  if args.search:
503
513
  results = codebase.search_similar(args.search, args.top_k)
@@ -308,14 +308,34 @@ class JarvisCoder:
308
308
 
309
309
 
310
310
 
311
+
311
312
  def _prepare_execution(self) -> None:
312
313
  """准备执行环境"""
313
314
  self.main_model = self._new_model()
314
- self._codebase.generate_codebase()
315
+
316
+
317
+ # 询问用户是否更新索引数据库
318
+ while True:
319
+ answer = get_multiline_input("是否要更新代码库索引数据库?(y/n)").strip().lower()
320
+ if answer == 'y':
321
+ PrettyOutput.print("正在更新代码库索引数据库...", OutputType.PROGRESS)
322
+ self._codebase.generate_codebase()
323
+ break
324
+ elif answer == 'n' or not answer:
325
+ PrettyOutput.print("跳过代码库索引数据库更新", OutputType.INFO)
326
+ break
327
+ else:
328
+ PrettyOutput.print("请输入 y 或 n", OutputType.WARNING)
329
+
315
330
 
316
331
  def _load_related_files(self, feature: str) -> List[Dict]:
317
332
  """加载相关文件内容"""
318
333
  ret = []
334
+ # 确保索引数据库已生成
335
+ if not self._codebase.is_index_generated():
336
+ PrettyOutput.print("检测到索引数据库未生成,正在生成...", OutputType.WARNING)
337
+ self._codebase.generate_codebase()
338
+
319
339
  related_files = self._codebase.search_similar(feature)
320
340
  for file, score, _ in related_files:
321
341
  PrettyOutput.print(f"相关文件: {file} 相关度: {score:.3f}", OutputType.SUCCESS)
@@ -45,8 +45,11 @@ class CodebaseQATool:
45
45
  "stderr": "错误:当前目录不在Git仓库中",
46
46
  "error": "NotInGitRepository"
47
47
  }
48
+
48
49
  os.chdir(root_dir)
49
50
  codebase = CodeBase(root_dir)
51
+ # 生成索引
52
+ codebase.generate_codebase()
50
53
  # 执行问答
51
54
  response = codebase.ask_codebase(question, top_k)
52
55
  os.chdir(current_dir)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.72
3
+ Version: 0.1.73
4
4
  Summary: Jarvis: An AI assistant that uses tools to interact with the system
5
5
  Home-page: https://github.com/skyfireitdiy/Jarvis
6
6
  Author: skyfire
@@ -1,11 +1,11 @@
1
- jarvis/__init__.py,sha256=MyFCehMdftT6QiIVeyWoT3cnA4reDk6ObCHGRDEr7JY,50
1
+ jarvis/__init__.py,sha256=cOQGkKfetErqIGax4StIXz4nEwj37NA4SG09WyDuwtU,50
2
2
  jarvis/agent.py,sha256=kl6pwNrluzb-9eZKgwmsk5Jh4CpWi4F8B3RvEQNvc5U,14921
3
3
  jarvis/main.py,sha256=7EcSlxa5JFFXBujzKDWdNtwX6axLhFFdJMc2GxTjfdk,6295
4
4
  jarvis/utils.py,sha256=vZV8sHj0ggZy4Rb8RxIujQhRWgeNEomhqVl4WXmpq7c,7498
5
5
  jarvis/jarvis_codebase/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- jarvis/jarvis_codebase/main.py,sha256=A-KY9WzAIsCF0QPndm4b8-rAKEz4nLlm4NkfUMpnQUM,21965
6
+ jarvis/jarvis_codebase/main.py,sha256=X8Z0axQLA0-yC8AthvjthxM_ufr-GFek8rBFGMgkzAU,22420
7
7
  jarvis/jarvis_coder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- jarvis/jarvis_coder/main.py,sha256=uQ7aQ3hmnxecacjLSBOV0rSLkacExGLgQRc9zD1ar1E,22085
8
+ jarvis/jarvis_coder/main.py,sha256=EuKRCa6wiOj7Rjeyh-ewATZY2aGWzbvaqFQXNy2B8_M,22947
9
9
  jarvis/models/__init__.py,sha256=mrOt67nselz_H1gX9wdAO4y2DY5WPXzABqJbr5Des8k,63
10
10
  jarvis/models/ai8.py,sha256=vgy-r_3HHxGMAalZrA65VWHC1PuwBTYgtprSgHkCbrk,12557
11
11
  jarvis/models/base.py,sha256=ShV1H8Unee4RMaiFO4idROQA0Hc6wu4dyeRPX5fcszk,1433
@@ -15,7 +15,7 @@ jarvis/models/oyi.py,sha256=X2c5SWDIuQDCCFBcEKbzIWEz3I34eOAi0d1XAFgxlpw,15001
15
15
  jarvis/models/registry.py,sha256=YpooKSpk5pSWfb5cBDz5wRfPK-abb9uuUZr4WBejqwI,7762
16
16
  jarvis/tools/__init__.py,sha256=7Rqyj5hBAv5cWDVr5T9ZTZASO7ssBHeQNm2_4ZARdkA,72
17
17
  jarvis/tools/base.py,sha256=EGRGbdfbLXDLwtyoWdvp9rlxNX7bzc20t0Vc2VkwIEY,652
18
- jarvis/tools/codebase_qa.py,sha256=AEpusYxyWtALVVwPk1DMUH9cVI73mE1e3WFHJXDpXto,2333
18
+ jarvis/tools/codebase_qa.py,sha256=0r3SnLtJXm2NgIPCVkKnyfLKxk0RGvODpv7cBfwerKo,2402
19
19
  jarvis/tools/coder.py,sha256=ZJfPInKms4Hj3-eQlBwamVsvZ-2nlZ-4jsqJ-tJc6mg,2040
20
20
  jarvis/tools/file_ops.py,sha256=h8g0eT9UvlJf4kt0DLXvdSsjcPj7x19lxWdDApeDfpg,3842
21
21
  jarvis/tools/generator.py,sha256=vVP3eN5cCDpRXf_fn0skETkPXAW1XZFWx9pt2_ahK48,5999
@@ -25,9 +25,9 @@ jarvis/tools/search.py,sha256=1EqOVvLhg2Csh-i03-XeCrusbyfmH69FZ8khwZt8Tow,6131
25
25
  jarvis/tools/shell.py,sha256=UPKshPyOaUwTngresUw-ot1jHjQIb4wCY5nkJqa38lU,2520
26
26
  jarvis/tools/sub_agent.py,sha256=rEtAmSVY2ZjFOZEKr5m5wpACOQIiM9Zr_3dT92FhXYU,2621
27
27
  jarvis/tools/webpage.py,sha256=d3w3Jcjcu1ESciezTkz3n3Zf-rp_l91PrVoDEZnckOo,2391
28
- jarvis_ai_assistant-0.1.72.dist-info/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
29
- jarvis_ai_assistant-0.1.72.dist-info/METADATA,sha256=4YOsbaLCJw40e43wAL34myfveTRLOmC-MIpBrkrt2zs,12399
30
- jarvis_ai_assistant-0.1.72.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
31
- jarvis_ai_assistant-0.1.72.dist-info/entry_points.txt,sha256=QNUeqmUJd7nHufel2FO7cRttS1uKFfnbIyObv8eVyOY,140
32
- jarvis_ai_assistant-0.1.72.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
33
- jarvis_ai_assistant-0.1.72.dist-info/RECORD,,
28
+ jarvis_ai_assistant-0.1.73.dist-info/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
29
+ jarvis_ai_assistant-0.1.73.dist-info/METADATA,sha256=u_IoU6F2lDynOwzedwiB52WNnOgSPuUiDa9Ahz5o2jE,12399
30
+ jarvis_ai_assistant-0.1.73.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
31
+ jarvis_ai_assistant-0.1.73.dist-info/entry_points.txt,sha256=QNUeqmUJd7nHufel2FO7cRttS1uKFfnbIyObv8eVyOY,140
32
+ jarvis_ai_assistant-0.1.73.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
33
+ jarvis_ai_assistant-0.1.73.dist-info/RECORD,,