[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80062":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},80062,"opal-bridge","1va7\u002Fopal-bridge","1va7","Cross-agent session translator (Claude Code \u003C-> Codex CLI)",null,"Python",75,6,62,0,7,13,21,58.34,false,"main",[],"2026-06-12 04:01:26","# opal-bridge\n\n> Part of [**OPAL**](https:\u002F\u002Fgithub.com\u002F1va7\u002Fopal) (**O**pen **P**ortable **A**ctivity **L**ayer) — the cross-agent CLI session translator subsystem.\n>\n> **main after v0.6.0** — title sync across CC↔Codex twins, Codex picker\u002Fsearch DB title fixes, no duplicate files on rename. See [CHANGELOG.md](CHANGELOG.md) for full version history.\n\n跨 agent 的 session 翻译与 resume 桥。\n\n## 要解决的问题\n\n不同 agent harness（Claude Code \u002F Codex \u002F Hermes \u002F 公司内部 agent）各自把 session 存成自己的 jsonl 格式，且 tool schema 互不兼容。导致一个项目在某一个 agent 里做到一半，无法在另一个 agent 里 `--resume` 接着干，只能把人工摘要重新粘进去。\n\n## 方案\n\n中间走 canonical session format，每个 agent 配一对 adapter：\n\n- `ingest`: 该 agent 的 session jsonl → canonical\n- `render`: canonical → 该 agent 可被 `--resume` 加载的 session 文件\n\n## Quick start\n\n```bash\n# 安装\npython3 -m venv .venv && .venv\u002Fbin\u002Fpip install -e .\n\n# 列出最近的 CC session\n.venv\u002Fbin\u002Fpython -m agent_bridge.cli list -n 10\n\n# 双向翻译 + 一键 smoke 验证\n# CC → Codex：\n.venv\u002Fbin\u002Fpython -m agent_bridge.cli smoke \\\n    ~\u002F.claude\u002Fprojects\u002F\u003Cencoded-cwd>\u002F\u003CUUIDv4>.jsonl \\\n    --prompt \"Reply with: WORKS\"\n# Codex → CC：\n.venv\u002Fbin\u002Fpython -m agent_bridge.cli smoke --from codex \\\n    ~\u002F.codex\u002Fsessions\u002FYYYY\u002FMM\u002FDD\u002Frollout-...UUIDv7.jsonl \\\n    --prompt \"Reply with: WORKS\"\n\n# 仅翻译（不 smoke），双向都支持：\n.venv\u002Fbin\u002Fpython -m agent_bridge.cli translate \\\n    --from claude-code --to codex \\\n    --subagent-strategy inline \\\n    ~\u002F.claude\u002Fprojects\u002F\u003Cencoded-cwd>\u002F\u003CUUIDv4>.jsonl\n\n.venv\u002Fbin\u002Fpython -m agent_bridge.cli translate \\\n    --from codex --to claude-code \\\n    ~\u002F.codex\u002Fsessions\u002FYYYY\u002FMM\u002FDD\u002Frollout-...UUIDv7.jsonl\n\n# 拿到结果后直接复制粘贴对应 resume 命令：\ncodex exec resume \u003CUUIDv7> \"你的新指令\"          # 翻成 Codex\nclaude --resume \u003CUUIDv4> -p \"你的新指令\"          # 翻成 CC（在原 cwd 下）\n\n# 历史补同步 \u002F 修复旧的短镜像：\n.venv\u002Fbin\u002Fpython -m agent_bridge.cli sync \\\n    --direction both --days 365 --include-active --force\n```\n\n## 当前能力（main after v0.6.0）\n\n✅ **双向翻译 + 自动镜像 + 共享标题** — 完整版本历史见 [CHANGELOG.md](CHANGELOG.md)\n\n- **双向 CC ↔ Codex**：live `claude --resume` \u002F `codex resume` 都验证通过\n- **共享标题**：在 CC 或 Codex 任一边重命名 session，对面 picker 自动跟进；CC `custom-title` \u002F `agent-name` 会成为 Codex picker 的可读名称；不再产生重复文件\n- **Codex 搜索标题修复**：强制重渲染时会把 `session_index.jsonl` 里的用户标题写回 `state_5.sqlite`，避免 session 仍在但搜索不到\n- **自动镜像**：CC `Stop` hook + Codex `notify` hook，每段对话结束自动同步到对面；或用 `agent-resume watch` 守护进程\n- **历史修复同步**：`sync --force --include-active --days 365` 可重渲染旧镜像，修复 hook 未运行期间留下的短 context\n- **空会话降噪**：没有 replayable context 的 Codex\u002FCC 源不会生成空镜像；已生成的空镜像会被移除\n- **MCP server**：`agent-resume mcp serve` 暴露 6 个工具给任意 MCP host（Claude Desktop \u002F Cursor \u002F Cline \u002F …）\n- **6 核心工具映射**：Bash \u002F Read \u002F Glob \u002F Grep \u002F WebSearch \u002F 大部分 metadata\n- **apply_patch 双向**：CC Edit\u002FWrite\u002FMultiEdit ↔ Codex apply_patch grammar，多 op envelope 自动拆为多个 canonical ToolCall\n- **subagent inline**：自动扫 `\u003Csess>\u002Fsubagents\u002F`，按 description 匹配后拼进主线\n- **compact_boundary 双向**：CC `compact_boundary + isCompactSummary user` ↔ canonical SummaryCompaction ↔ Codex `compacted \u002F context_compaction`\n- **shell 命令模式识别**：Codex 端的 `cat -n \u002F sed \u002F head \u002F tail \u002F rg --files` 反向回 canonical Read\u002FGlob，避免 round-trip 退化\n- **realpath + NFC**：CC encoded-cwd 与 `claude --resume` 行为一致\n- **正确的 picker 显示**：title \u002F mtime \u002F state DB `updated_at` \u002F 助手回复都对齐原始 session 活动时间\n- **覆盖保护**：反向渲染到 Claude Code 时，只允许覆盖 agent-bridge 生成的 `[from ...]` 文件，拒绝覆盖真实 CC session\n- attachment \u002F skill_listing \u002F nested_memory \u002F file → developer message\n- thinking blocks 自动剥离（signature\u002Fencrypted_content 跨 harness 不兼容）\n- **31 pytest** + live `codex exec resume` + live `claude --resume` 验证\n\n❌ 推迟（见 `specs\u002F`）：\n- DAG 多 leaf 选择\n- TaskCreate 完整 stateful diff（目前 1:1 映射）\n- Plan mode \u002F AskUserQuestion 完整翻译\n- Mode B \u002F C fidelity（LLM 摘要）\n- Hermes adapter\n- 与像素级蒸馏整合\n\n## 文档\n\n- [CHANGELOG.md](CHANGELOG.md) — 版本历史与变更记录\n- `docs\u002FARCHITECTURE.md` — canonical IR 与 src\u002F 设计\n- `docs\u002Ftool-mapping.md` — 字段级映射规范（翻译器实现的金本位）\n- `docs\u002Fclaude-code-harness.md` — CC 实证调研\n- `docs\u002Fcodex-harness.md` — Codex 实证调研\n- `docs\u002Fcodex-notify-research.md` — Codex notify hook 调研\n- `specs\u002F001-translator-mvp.md` — MVP 范围与验收\n- `specs\u002F002-completion.md` — apply_patch \u002F compact_boundary \u002F subagent\n- `specs\u002F003-bidirectional.md` — Codex → CC 反向\n- `specs\u002F004-mcp-and-hooks.md` — MCP server + 双向 hook\n- `data\u002Ffixture\u002FPoC_REPORT.md` — 端到端 PoC 验证结果\n\n## 与「像素级蒸馏」的关系\n\n长期方向：canonical store 复用像素级蒸馏的 `events.sqlite` + `thread`，把 tool_calls 作为新的 event 子类型落进去。详见 `docs\u002FARCHITECTURE.md` §9。MVP 阶段保持独立。\n\n## 阶段路线图\n\n1. **v0.1.0 MVP** ✅：CC → Codex 单向，6 核心工具\n2. **v0.2.0 spec 002** ✅：apply_patch、compact_boundary、subagent inline、CLI list\u002Fsmoke\n3. **v0.3.0 spec 003** ✅：反向 Codex → CC\n4. **v0.4.0 spec 004** ✅：sync\u002Fwatch\u002F双向 hook + MCP server\n5. **v0.5.0** ✅：picker 可见性、mtime、event_msg 镜像\n6. **v0.6.0** ✅：title sync、pair_map、dedupe，无重复\n7. **下一步**：Hermes adapter \u002F 与像素级蒸馏整合 \u002F Plan mode 完整支持\n","opal-bridge 是一个跨代理会话翻译工具，用于在不同代理（如Claude Code和Codex CLI）之间转换会话数据。它通过定义统一的会话格式，并为每个代理提供一对适配器来实现双向转换：`ingest` 从特定代理的会话JSONL文件转换为标准格式，而 `render` 则将标准格式转回目标代理可加载的会话文件。opal-bridge 支持自动同步会话标题、修复搜索功能、避免重复文件生成等功能，确保了跨平台的一致性和连续性。此工具特别适用于需要在多个AI开发环境中无缝切换工作流的研发团队或个人开发者，能够有效解决因工具链不兼容导致的工作中断问题。",2,"2026-06-11 03:59:04","CREATED_QUERY"]