Skip to content

Releases: leeguooooo/open-cross-session

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 00:26
feat(names): 会话可起 ocs 名字,名字和不变短 id 都能寻址,发 0.5.0

- `ocs rename <name> [--force] | --clear`:给当前 Claude/Codex/Pi 会话起名,落 ~/.ocs/names/。
  被别的身份占着时拒绝(--force 接管),与别的活 Claude 精确名撞车拒绝,地址语法是保留字。
  Claude 名字按 sessionId 绑定,/clear 后按 pid+procStart 跟着窗口走
- Claude 会话新增不变短 id `claude-<8hex>`;解析顺序:活会话精确名 > ocs 名字 > 短 id > 工作区别名,
  精确名与 ocs 名字指向不同会话时拒绝任选
- `@名字` / `@claude-|codex-|pi-<8hex>` 在 send 里归一后分流,名字可以指向 Codex / Pi
- Claude→Claude DM 的 Reply 行优先用发送方的 ocs 名字;被别人名字遮蔽的工作区别名不再宣告
- `ocs who` 并排显示名字和 id;`ocs whoami --json [--session <id>]` 给状态栏等工具的稳定接口

Claude-Session: https://claude.ai/code/session_01H3BQFmPJdTnH4L8xS3qk6E

v0.4.10

Choose a tag to compare

@github-actions github-actions released this 07 Sep 08:49
perf(codex): who/dm 的进程表只解一次,判活和宿主共用

判活现在要看进程表(校验持有者身份),宿主解析本来也要——不共用等于给 who 和
每条 dm 各加一次 `ps -A` 全表扫描。表由调用方解一次往下传,省掉重复的那次。

顺带把 OCS_VERSION 同步到 0.4.10(version.test.ts 钉着 package.json)。

真机验证(本机 codex 全在跑):终端 TUI(Terminal / cmux 里的 `codex`,npm 包最终
exec 的是 vendor/<triple>/bin/codex,basename 正是 codex)和 Desktop 托管的 task
(持有者挂在 ChatGPT.app 树下)都仍列为 reachable,没有被新的身份校验误杀。

Claude-Session: https://claude.ai/code/session_012S34e6cev7qQCDFngyP7Lm

v0.4.9

Choose a tag to compare

@github-actions github-actions released this 07 Sep 04:07
perf(codex): 砍掉热路径上的三处浪费,发 0.4.9

实测(本机 2513 个 rollout)先量后改:

  codexQueueAvailable  489ms → 0ms   起 `codex queue --help` 只为回答「通道在不在」,
                                      改成 PATH 可执行位检查(纯 stat)。shell 别名/
                                      函数照样判 false——那正是要拦的情况;「装了但太老」
                                      交给真实调用报错(owner 已定不考虑老版本)。
                                      doctor 另留 codexQueueSupported 做完整探测,
                                      诊断愿意为准确性付那半秒,热路径不该付。
  投后复查              349ms → ~0ms  复查只需回答「刚才那个持有者还活着吗」,不必再扫
                                      全机进程表;改用 kill(pid, 0)。EPERM 算活着,
                                      只有 ESRCH 才是真没了。
  codexThreadLivePids  270ms → 172ms  批量探测里每个 id 都重走一遍 sessions 目录树,
                                      改成整批只走一次。

一次 codex 投递的固定开销约 1.36s → 0.85s;`ocs who` 1.13s → 1.00s(剩下的在 lsof
与 ps 两次 spawn 上,各约 170ms)。

Claude-Session: https://claude.ai/code/session_01LnaJjCP5xmpqmHnRQLQpjZ

v0.4.8

Choose a tag to compare

@github-actions github-actions released this 07 Sep 03:32
fix(codex): 收窄 queue 的活性竞态窗口,who 点破 codex 不在 PATH 的静默降级,发 0.4.8

两个已知但没处理的口子:

1. 活性是投递前的快照——检查到 spawn 返回之间目标可能已经退出,那条消息就静静躺在
   thread store 里没人读。投完复查一次 rollout 持有者:不是同一个 pid(消失或换人)
   一律按 unknown-outcome 报,绝不当成功、也绝不重放(铁律 5)。判定抽成
   classifyQueueOutcome 纯函数,测试钉住三种归宿。

2. `codex` 是 shell 别名/函数时探测判不可用,于是静默降级回 IPC/cmux——而这两条都够
   不着终端里的 codex。`ocs who` 在「有活着的非 Desktop 目标 + queue 不可用」时直接说
   出来,不让用户对着一列看得见却叫不醒的会话猜原因。

Claude-Session: https://claude.ai/code/session_01LnaJjCP5xmpqmHnRQLQpjZ

v0.4.7

Choose a tag to compare

@github-actions github-actions released this 07 Sep 03:26
fix(codex): 载体按宿主选,Desktop 任务改回 IPC 优先,发 0.4.7

0.4.4 把 codex 目标一律改走 `codex queue`,对 Desktop 托管的 task 是退步。实测比对
同一个 Desktop task 的 rollout 记录:

  IPC   → FunctionCallOutput / send_message_to_thread + <codex_delegation>
          <source_thread_id>…  原生来源信封
  queue → item: {"type": "UserMessage"}   呈现成用户自己敲的

两条都能送达并触发新 turn,差别在归属。把别的 agent 发来的消息显示成用户输入,等于
抹掉「这是跨会话数据不是用户指令」这层标记——Claude 侧专门用原生 "Message from X"
包装就是这个理由,Desktop 上不该拿它换便利。

改为按宿主选载体:宿主是 ChatGPT(Desktop 托管)先走 IPC,其它宿主(终端 TUI,IPC
根本够不着)走 queue。Desktop 上 IPC 投不进时 queue 仍是最后一级兜底——丢掉来源信封
好过完全投不到,正文里本来就带着 `[ocs wake] X mentioned you`。

新增回归测试:活着且非 Desktop 托管的目标必须走 queue 且不触碰 IPC。

Claude-Session: https://claude.ai/code/session_01LnaJjCP5xmpqmHnRQLQpjZ

v0.4.6

Choose a tag to compare

@github-actions github-actions released this 07 Sep 03:15
fix(codex): 补上自我唤醒防回环,发 0.4.6

Claude(findSelfClaudePid)和 Pi(piWakeSelfSkipped)两条唤醒路径都有自我防护,
codex 一直缺。以前 Desktop IPC 的前置条件多(要 renderer 认领、要同 renderer 的
source),不易触发;`codex queue` 稳定投递之后,一个 @ 到自己的会话会把自己反复
唤醒。

target 与 CODEX_THREAD_ID 相同时跳过唤醒,消息照常落盘——发送方本来就在读它。

Claude-Session: https://claude.ai/code/session_01LnaJjCP5xmpqmHnRQLQpjZ

v0.4.5

Choose a tag to compare

@github-actions github-actions released this 07 Sep 03:10
feat(who): codex 活会话显示 tty 与宿主应用,并发 0.4.5

实测发现 agent 说不清自己跑在哪:一个明明在 Terminal.app 里的 codex 会话,被问到
宿主时自称「不挂在 iTerm、Terminal.app 或 VS Code 终端上」。诊断可达性只能看进程
事实,不能问 agent,所以把事实直接摆进 `ocs who`。

`codexHosts()` 一次 `ps -A` 解出所有活会话的控制终端,并沿祖先链找第一个 .app 包
作为宿主应用(取路径里最先出现的 .app,VS Code 这类嵌套 helper 包才不会显示成
"Code Helper")。输出形如:

  codex-01a079d3  open-cross-session  [queue pid 63804 · Terminal ttys002]
  codex-01a079b5  w-2                 [queue pid 19364 · ChatGPT]
  codex-01a0797e  piggo               [queue pid 15408 · cmux ttys009]

Terminal.app / ChatGPT Desktop / cmux 三种宿主一眼分得清。SKILL.md 里明说:这一行
比会话自述可信。

Claude-Session: https://claude.ai/code/session_01LnaJjCP5xmpqmHnRQLQpjZ

v0.4.4

Choose a tag to compare

@github-actions github-actions released this 07 Sep 03:04
chore(release): 0.4.4

codex 目标首选官方 `codex queue --thread`,终端里裸跑的 codex TUI 无需 cmux 或
ChatGPT Desktop 即可被唤醒;`ocs who` 与 doctor 同步反映新的可达性判据。

Claude-Session: https://claude.ai/code/session_01LnaJjCP5xmpqmHnRQLQpjZ

v0.4.3

Choose a tag to compare

@github-actions github-actions released this 05 Sep 06:58
229c5e1
v0.4.3: ocs upgrade 真升级、doctor 版本检查、Codex 建连预算修复(#28)、cmux 降级唤醒(#30)

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 04 Sep 09:45
81b5aee
v0.4.2