Conversation
bea9e93 to
ea38068
Compare
ea38068 to
acc45eb
Compare
|
Actual historical Cursor Agent JSONL comparison, not a synthetic fixture: I copied one 55-record historical session into a temporary Cursor input root and ran
The 85-byte reduction is one real user runtime envelope: After preparation, the generated transcript contains only |
|
实际历史数据核查后的结论:Cursor 的情况与 Claude Code / Codex / OpenClaw / Hermes 不同。 当前 adapter 的兼容边界是 Cursor 导出的 这些字段确实存在于 本 PR 最终能在真实 JSONL 中处理的只有 user text 外层的: 我以一个真实的 55-record 历史 session 分别在 因此准备关闭本 PR,不合入当前实现。后续原则是:继续以 |
|
基于上述真实历史 Cursor JSONL 的核查结论关闭此 PR:当前导出 transcript 已足够干净,尚无值得维护的 delete-only 私有字段过滤目标。 |
📝 Pull Request Summary
Strip Cursor Agent's runtime prompt envelope from prepared transcripts while preserving the user's actual prompt, conversation/tool content, and other tags.
✅ What does this PR do?
<timestamp>…</timestamp><user_query>…</user_query>🤔 Why is this change needed?
Historical Cursor Agent JSONL sessions put runtime time metadata and a transport wrapper around every user prompt. These fields are not authored user content and introduce unnecessary scheduling/runtime noise into memory and skill mining.
The implementation and output comparison use an actual historical Cursor Agent session, not a synthetic fixture. That session is copied to a temporary input root and processed with
mainand this branch; the raw source is never modified.🔍 Type of Change
Please check what applies:
✅ PR Quality Checklist
feat:,fix:,docs:,memory base:)Validation:
uv run python -m pytest tests/test_host_sessions.py tests/test_cursor_self_sessions.py—58 passeduv run ruff check src/memu/hosts/cursor/sessions.py tests/test_host_sessions.pyuv run ruff format --check src/memu/hosts/cursor/sessions.py tests/test_host_sessions.pyuv run mypy src/memu/hosts/cursor/sessions.py tests/test_host_sessions.pymainand this branch; both emitted the same rows, with the PR removing only the runtime wrapper bytes.📌 Optional