jarvis-ai-assistant 0.1.72__tar.gz → 0.1.73__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.
Potentially problematic release.
This version of jarvis-ai-assistant might be problematic. Click here for more details.
- {jarvis_ai_assistant-0.1.72/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.73}/PKG-INFO +1 -1
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/pyproject.toml +1 -1
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/setup.py +1 -1
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/__init__.py +1 -1
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/jarvis_codebase/main.py +26 -16
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/jarvis_coder/main.py +21 -1
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/codebase_qa.py +3 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/MANIFEST.in +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/README.md +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/agent.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/jarvis_codebase/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/jarvis_coder/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/main.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/models/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/models/ai8.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/models/base.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/models/kimi.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/models/openai.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/models/oyi.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/models/registry.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/base.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/coder.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/file_ops.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/generator.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/methodology.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/registry.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/search.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/shell.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/sub_agent.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/tools/webpage.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/utils.py +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
- {jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "jarvis-ai-assistant"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.73"
|
|
8
8
|
description = "Jarvis: An AI assistant that uses tools to interact with the system"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "Your Name", email = "your.email@example.com" }]
|
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name="jarvis-ai-assistant",
|
|
5
|
-
version="0.1.
|
|
5
|
+
version="0.1.73",
|
|
6
6
|
author="skyfire",
|
|
7
7
|
author_email="skyfireitdiy@hotmail.com",
|
|
8
8
|
description="An AI assistant that uses various tools to interact with the system",
|
{jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/jarvis_codebase/main.py
RENAMED
|
@@ -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
|
-
|
|
383
|
-
|
|
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
|
-
|
|
433
|
-
|
|
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
|
-
|
|
436
|
-
|
|
437
|
-
|
|
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
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
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
|
-
|
|
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)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/jarvis_codebase/__init__.py
RENAMED
|
File without changes
|
{jarvis_ai_assistant-0.1.72 → jarvis_ai_assistant-0.1.73}/src/jarvis/jarvis_coder/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|