← 返回会话

task.txt

2.4 KB · 纯文本展示
你在改 Mac 本地项目:~/grok-cc-task/cc-live-monitor/

## 目标 Phase 8
用户抱怨:Muse / 别的 Agent / 控手机(截图里 MM 用 Claude Code + iPhone Use)调用了,但 cc-live 侧栏没有。

根因已确认:
- 监控只扫 `~/grok-cc-task/runs`(run.sh)
- `~/.iphone-use/agent-runs.jsonl` 只有统计(owner/次数/时间),**没有对话内容**
- 真正能跟聊的是 `~/.claude/projects/*/*.jsonl`(约 800+ 会话,含 sessionId、user/assistant)

## 按 Astra 方案做(最少改动能用)

1. **新增 `session_sources.py`**
   - `scan_runsh()`:现有 runs(保持)
   - `scan_claude_projects()`:扫 `~/.claude/projects`,增量索引(mtime/size),**不要每 4.5s 全量解析 800 个文件**
   - `scan_iphone_runs()`:读 agent-runs.jsonl,只补充 owner/活动,标「仅活动记录」若无 transcript
   - 汇总统一列表;同一 Claude sessionId 只显示一次(与 run.sh 去重:run.sh 优先,附加来源信息)

2. **RunInfo 扩展**:稳定 `id`、`source`、`owner`、`session_id`、`record_format`、`last_activity_at`;显示名与路由 ID 分离

3. **新增 `claude_session_parse.py`**:把 projects transcript 转现有 Event/Timeline;UUID 去重;内部噪声过滤;复用现有气泡渲染

4. **server/views/assets**
   - 按 record_format 选解析器;客户端只交 ID
   - 侧栏显示来源徽章,如 `Claude Code` / `run.sh` / `iPhone Use · MM`
   - 未知归属标「调用方未知」,**禁止凭时间猜成 Muse/MM**
   - projects 会话:跟随已落盘消息(不承诺逐 token 草稿);有 stream-json 的仍走原 SSE

5. **登记入口(轻量)**
   - 约定一个小 JSONL 或目录,供 Muse/其它包装器登记:`run_id/source/owner/session_id/pid/started_at/transcript_path` + 终态
   - 文档写清:包装器应怎么登记;本阶段至少把手动/现有 Claude projects 接上

6. **selftest + PROGRESS.md Phase 8 + 重启 8787**

## 不要做
- 不要每轮全量解析全部 projects jsonl
- 不要把 agent-runs 当成聊天源硬渲染空会话
- 不要开浏览器
- 不要改无关项目

## 验收
- selftest 全绿(含跨来源去重、未知归属、缺失 transcript、非法路径)
- `/api/sidebar?q=` 能搜到非 run.sh 的 Claude 会话
- 侧栏可见来源标签
- 点开 Claude projects 会话能看到对话(至少回放)
- 中文总结改动与如何验证

先读现有 runs_data/views/server/assets/PROGRESS,再动手。