Files
workphone-sdk/开发文档/10、项目管理/scripts/run_workphone_conversation_analysis.sh

53 lines
1.8 KiB
Bash
Executable File

#!/bin/zsh
set -euo pipefail
PROJECT_ROOT="/Users/karuo/Documents/开发/2、私域银行/工作手机"
SESSION_ROOT="$HOME/.codex/sessions"
ARCHIVE_ROOT="$HOME/.codex/archived_sessions"
OUTPUT_DIR="${1:-$PROJECT_ROOT/开发文档/10、项目管理/02、专项调研/20260728_项目效率优化}"
SESSION_LIST="$(mktemp)"
EVENTS_FILE="$(mktemp)"
trap 'rm -f "$SESSION_LIST" "$EVENTS_FILE"' EXIT
python3 - "$PROJECT_ROOT" "$SESSION_ROOT" "$ARCHIVE_ROOT" > "$SESSION_LIST" <<'PY'
import json
import sys
from pathlib import Path
project = Path(sys.argv[1]).resolve()
roots = [Path(item) for item in sys.argv[2:]]
for root in roots:
if not root.exists():
continue
for path in root.rglob("*.jsonl"):
if ".bak." in path.name:
continue
meta = {}
try:
with path.open("r", encoding="utf-8", errors="replace") as handle:
for _ in range(20):
line = handle.readline()
if not line:
break
record = json.loads(line)
if record.get("type") == "session_meta":
meta = record.get("payload") or {}
break
cwd = Path(str(meta.get("cwd") or "")).resolve()
except (OSError, ValueError, json.JSONDecodeError):
continue
if cwd == project or project in cwd.parents:
print(path)
PY
sort -o "$SESSION_LIST" "$SESSION_LIST"
: > "$EVENTS_FILE"
while IFS= read -r session; do
rg -a -N -H \
'"type":"event_msg","payload":\{"type":"(user_message|task_complete)"' \
"$session" >> "$EVENTS_FILE" || true
done < "$SESSION_LIST"
python3 "$PROJECT_ROOT/开发文档/10、项目管理/scripts/analyze_workphone_conversations.py" \
--events "$EVENTS_FILE" \
--output-dir "$OUTPUT_DIR"