@zhushanwen/pi-evolve-daily 0.1.9 → 0.1.10
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.
- package/analyzer/analyze.py +20 -6
- package/package.json +1 -1
package/analyzer/analyze.py
CHANGED
|
@@ -83,17 +83,31 @@ def _load_from_file(input_file: str) -> list[dict]:
|
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
def _load_session_file(file_path: Path) -> dict | None:
|
|
86
|
-
"""加载单个 JSONL session 文件。
|
|
86
|
+
"""加载单个 JSONL session 文件。
|
|
87
|
+
|
|
88
|
+
Pi 的 JSONL 格式中,工具调用结果嵌套在 message 类型事件里:
|
|
89
|
+
{"type": "message", "message": {"role": "toolResult", ...}}
|
|
90
|
+
extractor 需要直接访问 role/toolName 等字段,
|
|
91
|
+
所以这里将 message 类型事件的内层 message 展开。
|
|
92
|
+
"""
|
|
87
93
|
try:
|
|
88
94
|
messages = []
|
|
89
95
|
with open(file_path, "r", encoding="utf-8") as f:
|
|
90
96
|
for line in f:
|
|
91
97
|
line = line.strip()
|
|
92
|
-
if line:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
if not line:
|
|
99
|
+
continue
|
|
100
|
+
try:
|
|
101
|
+
entry = json.loads(line)
|
|
102
|
+
except json.JSONDecodeError:
|
|
103
|
+
continue
|
|
104
|
+
|
|
105
|
+
# 展开 message 类型:用内层 message 替代外层包装
|
|
106
|
+
# 这样 extractor 的 msg.get("role") 等可以正常工作
|
|
107
|
+
if entry.get("type") == "message" and "message" in entry:
|
|
108
|
+
messages.append(entry["message"])
|
|
109
|
+
else:
|
|
110
|
+
messages.append(entry)
|
|
97
111
|
|
|
98
112
|
if not messages:
|
|
99
113
|
return None
|