jarvis-ai-assistant 0.3.4__py3-none-any.whl → 0.3.5__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.
jarvis/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """Jarvis AI Assistant"""
3
3
 
4
- __version__ = "0.3.4"
4
+ __version__ = "0.3.5"
@@ -278,8 +278,23 @@ tags:
278
278
  # 从高重叠度开始处理
279
279
  max_tags = max(len(m.get("tags", [])) for m in memories)
280
280
 
281
+ # 创建一个标记已删除记忆的集合
282
+ deleted_indices = set()
283
+
281
284
  for overlap_count in range(min(max_tags, 5), min_overlap - 1, -1):
282
- overlap_groups = self._find_overlapping_memories(memories, overlap_count)
285
+ # 过滤掉已删除的记忆
286
+ active_memories = [
287
+ (i, mem) for i, mem in enumerate(memories) if i not in deleted_indices
288
+ ]
289
+ if not active_memories:
290
+ break
291
+
292
+ # 创建索引映射:原始索引 -> 活跃索引
293
+ active_memory_list = [mem for _, mem in active_memories]
294
+
295
+ overlap_groups = self._find_overlapping_memories(
296
+ active_memory_list, overlap_count
297
+ )
283
298
 
284
299
  if overlap_count in overlap_groups:
285
300
  groups = overlap_groups[overlap_count]
@@ -289,7 +304,13 @@ tags:
289
304
  )
290
305
 
291
306
  for group in groups:
292
- group_memories = [memories[i] for i in group]
307
+ # 将活跃索引转换回原始索引
308
+ original_indices = set()
309
+ for active_idx in group:
310
+ original_idx = active_memories[active_idx][0]
311
+ original_indices.add(original_idx)
312
+
313
+ group_memories = [memories[i] for i in original_indices]
293
314
 
294
315
  # 显示将要合并的记忆
295
316
  PrettyOutput.print(
@@ -315,16 +336,17 @@ tags:
315
336
 
316
337
  # 保存新记忆
317
338
  self._save_merged_memory(
318
- merged_memory, memory_type, [memories[i] for i in group]
339
+ merged_memory,
340
+ memory_type,
341
+ [memories[i] for i in original_indices],
319
342
  )
320
343
 
321
344
  stats["processed_groups"] += 1
322
- stats["merged_memories"] += len(group)
345
+ stats["merged_memories"] += len(original_indices)
323
346
  stats["created_memories"] += 1
324
347
 
325
- # 从列表中移除已合并的记忆
326
- for i in sorted(group, reverse=True):
327
- del memories[i]
348
+ # 标记这些记忆已被删除
349
+ deleted_indices.update(original_indices)
328
350
  else:
329
351
  PrettyOutput.print(" [模拟运行] 跳过实际合并", OutputType.INFO)
330
352
 
@@ -376,11 +398,18 @@ tags:
376
398
  for orig_memory in original_memories:
377
399
  if "file_path" in orig_memory:
378
400
  try:
379
- Path(orig_memory["file_path"]).unlink()
380
- PrettyOutput.print(
381
- f"删除原始记忆: {orig_memory.get('id', '未知')}",
382
- OutputType.INFO,
383
- )
401
+ file_path = Path(orig_memory["file_path"])
402
+ if file_path.exists():
403
+ file_path.unlink()
404
+ PrettyOutput.print(
405
+ f"删除原始记忆: {orig_memory.get('id', '未知')}",
406
+ OutputType.INFO,
407
+ )
408
+ else:
409
+ PrettyOutput.print(
410
+ f"原始记忆文件已不存在,跳过删除: {orig_memory.get('id', '未知')}",
411
+ OutputType.INFO,
412
+ )
384
413
  except Exception as e:
385
414
  PrettyOutput.print(
386
415
  f"删除记忆文件失败 {orig_memory['file_path']}: {str(e)}",
@@ -607,6 +636,9 @@ def organize(
607
636
  else:
608
637
  raise typer.Exit(0) # 即使没有处理也是正常退出
609
638
 
639
+ except typer.Exit:
640
+ # typer.Exit 是正常的退出方式,直接传播
641
+ raise
610
642
  except Exception as e:
611
643
  PrettyOutput.print(f"记忆整理失败: {str(e)}", OutputType.ERROR)
612
644
  raise typer.Exit(1)
@@ -142,20 +142,9 @@ class BasePlatform(ABC):
142
142
  live.update(panel)
143
143
  end_time = time.time()
144
144
  duration = end_time - start_time
145
- char_count = len(response)
146
- # Calculate token count and tokens per second
147
- try:
148
- token_count = get_context_token_count(response)
149
- tokens_per_second = (
150
- token_count / duration if duration > 0 else 0
151
- )
152
- except Exception as e:
153
- PrettyOutput.print(
154
- f"Tokenization failed: {str(e)}", OutputType.WARNING
155
- )
156
- token_count = 0
157
- tokens_per_second = 0
158
- panel.subtitle = f"[bold green]✓ 对话完成耗时: {duration:.2f}秒, 输入字符数: {len(message)}, 输入Token数量: {input_token_count}, 输出字符数: {char_count}, 输出Token数量: {token_count}, 每秒Token数量: {tokens_per_second:.2f}[/bold green]"
145
+ panel.subtitle = (
146
+ f"[bold green]✓ 对话完成耗时: {duration:.2f}秒[/bold green]"
147
+ )
159
148
  live.update(panel)
160
149
  else:
161
150
  for s in self.chat(message):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.3.4
3
+ Version: 0.3.5
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,4 +1,4 @@
1
- jarvis/__init__.py,sha256=OeCDz6Z11rF2cp6sXEe7CwvIdTZ_EPzUJwW35kFF6BY,73
1
+ jarvis/__init__.py,sha256=5B9of1iEWKvaVehbBnQ5TL1suNg5eIi6Tq4dzGIrIow,73
2
2
  jarvis/jarvis_agent/__init__.py,sha256=NF_eUF85RRplGJyLmInIsTn-09aEPtjj4utYvEALvJw,31802
3
3
  jarvis/jarvis_agent/agent_manager.py,sha256=YzpMiF0H2-eyk2kn2o24Bkj3bXsQx7Pv2vfD4gWepo0,2893
4
4
  jarvis/jarvis_agent/builtin_input_handler.py,sha256=Qs4LAr4xdKLBJpQE81YP4CkucAop86ms0iVoKa1nnso,2468
@@ -54,13 +54,13 @@ jarvis/jarvis_mcp/sse_mcp_client.py,sha256=neKrgFxwLDPWjVrl9uDt1ricNwbLZbv1ZEFh0
54
54
  jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=APYUksYKlMx7AVNODKOLrTkKZPnp4kqTQIYIuNDDKko,11286
55
55
  jarvis/jarvis_mcp/streamable_mcp_client.py,sha256=sP0KEsxVcXGht0eA7a_m-ECtZAk39s4PL9OUdm35x2Y,14467
56
56
  jarvis/jarvis_memory_organizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- jarvis/jarvis_memory_organizer/memory_organizer.py,sha256=TP-h3CCoQh9E3kdCDbrKORKneRZYnoaWm-JOZqDY1B0,25178
57
+ jarvis/jarvis_memory_organizer/memory_organizer.py,sha256=RWjl6PAFwfiC0Io2dUFk0jAp69ySRr7Pz-gf-0hXfgI,26451
58
58
  jarvis/jarvis_methodology/main.py,sha256=6QF8hH3vB6rfxim0fPR34uVPf41zVpb4ZLqrFN2qONg,10983
59
59
  jarvis/jarvis_multi_agent/__init__.py,sha256=kCgtAX7VvliyEOQxIj2DvNjRAuh6bpNaOtDn60nzph4,6089
60
60
  jarvis/jarvis_multi_agent/main.py,sha256=Wbarez48QxXexlKEOcRsoMbcQEOP5rv_DzGkNk0SfpY,1779
61
61
  jarvis/jarvis_platform/__init__.py,sha256=WLQHSiE87PPket2M50_hHzjdMIgPIBx2VF8JfB_NNRk,105
62
62
  jarvis/jarvis_platform/ai8.py,sha256=W3947AGMpk3RRBfsfZmf222sEP0VIGoSU0vPkgiVnl0,11683
63
- jarvis/jarvis_platform/base.py,sha256=XfazAKRE9HnLCqoYaRG38HlEkCWHRWGcAftHsaMN-Tc,10179
63
+ jarvis/jarvis_platform/base.py,sha256=VyZhXgtGbUTrhXaDwA3kYUo03mfM-nNCYaTGgpY_TZQ,9365
64
64
  jarvis/jarvis_platform/human.py,sha256=jWjW8prEag79e6ddqTPV4nz_Gz6zFBfO4a1EbvP8QWA,4908
65
65
  jarvis/jarvis_platform/kimi.py,sha256=imbH575fazyDai5pxB6zbHmzwzS4Ig0RP7WVpni-ooI,15175
66
66
  jarvis/jarvis_platform/openai.py,sha256=0YSeDGHRSPQP2haEzFARx_aZH_d_UZ-HSCsJLh2hW5k,8037
@@ -119,9 +119,9 @@ jarvis/jarvis_utils/methodology.py,sha256=IIMU17WVSunsWXsnXROd4G77LxgYs4xEC_xm_0
119
119
  jarvis/jarvis_utils/output.py,sha256=QRLlKObQKT0KuRSeZRqYb7NlTQvsd1oZXZ41WxeWEuU,10894
120
120
  jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
121
121
  jarvis/jarvis_utils/utils.py,sha256=ZyLL-X0EGi8fnofAdP5Qd99lYlP5U5qGY50elR4uS08,44291
122
- jarvis_ai_assistant-0.3.4.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
123
- jarvis_ai_assistant-0.3.4.dist-info/METADATA,sha256=rgbEn1DYq_u7mcMyId7rgP4s3oJJwdCc0IQdppTU2_4,18184
124
- jarvis_ai_assistant-0.3.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
125
- jarvis_ai_assistant-0.3.4.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
126
- jarvis_ai_assistant-0.3.4.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
127
- jarvis_ai_assistant-0.3.4.dist-info/RECORD,,
122
+ jarvis_ai_assistant-0.3.5.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
123
+ jarvis_ai_assistant-0.3.5.dist-info/METADATA,sha256=ehsG-Ba9N9CuwKwiGKQguiPDoL_fJwYxE2bqdGYCREU,18184
124
+ jarvis_ai_assistant-0.3.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
125
+ jarvis_ai_assistant-0.3.5.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
126
+ jarvis_ai_assistant-0.3.5.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
127
+ jarvis_ai_assistant-0.3.5.dist-info/RECORD,,