WINDOWS LOCAL TASK · INTERACTIVE SELECTION

右侧完成选择,
左侧继续润色。

这次 Windows 本地会话中,用户在 Codex 右侧选择“生动有画面”。 选择提交后,当前会话直接生成标题和润色结果,用户没有再补发消息。

一次完整操作已经完成

右侧选择页由当前任务打开,选择结果也回到同一个任务。

1
个 Windows 本地任务
0
条后续用户消息
B
生动有画面
120s
无操作时采用推荐项
选择前 · 当前任务已打开右侧页面,默认选中 B“生动有画面”。

01 / ORIGINAL CODEX SESSION

会话记录:从打开选择页到返回润色结果。

以下内容取自最新一次 Windows 本地会话。消息按发生顺序排列, 三次关键调用可按需展开。

Windows Codex Desktop · Accepted Run 互动式短文润色助手
可读 JSON
Session
019fa251-53a7-7ff2-b758-6caa5bc3b599
Run
run-ms2v4f4b
环境
Windows Local · PowerShell 7.6.3
状态
完整闭环
用户

请使用互动式短文润色助手帮我润色下面这篇短文,并在需要时让我选择润色方向。

傍晚我从地铁站出来,天空还留着一点蓝。卖花的阿姨把最后几束向日葵摆得整整齐齐…… 风吹过街角,花瓣轻轻发亮,我忽然觉得忙乱的一天也慢了下来。
Codex

我将使用你指定的互动式短文润色助手,并打开右侧选择面板,让你从三种润色方向中选择。

为这篇短文准备选择页 创建独立运行编号,启动本机选择服务 PowerShell 7 · Python 3.13

本次处理使用独立的运行编号和状态目录。服务准备完成后, 当前任务再打开右侧页面,避免页面先于服务出现。

launch_browser_choice.py → browser_choice_ready
打开 Codex 右侧选择页 显示右侧面板,创建标签页并载入本机页面 Internal Browser

当前任务先显示 Codex 右侧面板,再创建标签页并载入选择地址。 用户看到的是 Codex 内部页面,不需要另开浏览器。

visibility.set(true) → tabs.new() → goto(choice URL)
Codex

我为这篇短文准备了三种润色方向,请在右侧选择;如果暂不操作,我会采用推荐方向继续。

等待本次选择结果 当前回合继续运行,不要求用户补发消息 最长 300 秒

用户确认后,选择写入本次运行的状态文件。等待脚本读取到结果后, 把它返回当前回合;若 120 秒内没有操作,页面提交默认的 B 方向。

wait_browser_choice.py → browser_choice_selected
选择

B · 生动有画面 手动确认,选择已回到当前任务。

Codex

已按你选择的“生动有画面”方向继续润色。

《把太阳带回家》

傍晚走出地铁站时,天空还留着一抹淡淡的蓝。街角的花摊前, 卖花阿姨正把最后几束向日葵摆得整整齐齐,金黄的花盘在暮色里格外醒目。 一个小女孩拉着爸爸停下来,仰起脸,小声说:“我想把太阳带回家。” 爸爸买下一枝,她便一路高高举着,像捧住了一束光。晚风掠过街角, 花瓣轻轻闪亮。我忽然发现,忙乱了一整天的城市,也在这一刻慢了下来。

采用方向:生动有画面。

02 / HOW IT WORKS

一次选择如何返回当前会话。

用户看到的是四步操作;页面、等待和结果回传都在本机完成。

  1. 01

    接住内容

    助手读取文章,并准备三个润色方向。

  2. 02

    右侧选择

    当前任务打开右侧页面,默认推荐“生动有画面”。

  3. 03

    选择回流

    确认结果返回当前任务,左侧不需要再次输入。

  4. 04

    继续完成

    当前任务按所选方向拟标题并润色正文。

Internal Browser 如何打开

选择页准备好以后,当前任务直接打开 Codex 右侧面板。

启动脚本先在本机生成一个只供本次任务使用的页面地址。 Codex 收到“页面已准备好”后,再调用 Internal Browser 的三个动作。

  1. 01 显示右侧面板 visibility.set(true)
  2. 02 创建新标签页 tabs.new()
  3. 03 载入本机页面 goto(local URL)
这里确实有一个本地服务。

它临时监听 127.0.0.1 的随机端口,只负责提供选择页和接收选择结果。 用户提交或等待结束后,服务随本次运行关闭;不需要部署云端后端。

会话为什么没有中断

当前回合保留一次最长五分钟的等待。

打开选择页后,Codex 启动一次等待命令。脚本每 0.25 秒检查本次运行的状态;未收到选择时继续等待, 收到后把结果作为这次命令的输出返回。

当前回合 一次长等待 每 0.25 秒检查 收到后继续

如果 120 秒内没有操作,右侧页面会提交默认的 B 方向。 这项默认规则避免会话一直停在选择步骤。

右侧如何联动左侧

选择先写入本机状态,再由当前回合读取。

右侧 HTML 点击确认后,通过 POST /select 把方向交给 本机服务。服务校验选项,将结果与本次 run_id 绑定, 再写入 selection.json。等待脚本只读取相同 run_id 的结果。

HTML 确认 POST /select 本机状态文件 Codex 继续

这条链路只使用 127.0.0.1。文章和选择不会为此过程发到 额外的云端服务;独立的 run_id 用于区分并行任务。

03 / SKILL RUNTIME

五个文件,分别在什么时候工作。

安装目录回答“交付了什么”;下面的技术流程回答“它们如何接力完成一次选择”。

安装目录

一个 Skill,五个交付文件。

rewrite-short-essay-internal-browser-poc/
├── SKILL.md
├── agents/
│   └── openai.yaml
└── scripts/
    ├── browser_choice.py
    ├── launch_browser_choice.py
    └── wait_browser_choice.py
SKILL.md流程规则
说明何时打开选择页、如何等待,以及收到方向后怎样继续润色。
agents/openai.yaml入口信息
提供 Skill 的显示名称、简短说明和默认使用提示。
launch_browser_choice.py启动
为本次任务创建独立目录,启动本地服务,并返回可打开的页面地址。
browser_choice.py页面与回写
提供三种方向的 HTML 页面,接收选择并写入本次运行状态。
wait_browser_choice.py续跑
等待本次选择出现,把方向返回仍在运行的当前 Codex 回合。

技术流程

从识别 Skill 到同一回合继续。

五个交付文件按顺序参与;Internal Browser 和 selection.json 是它们之间的连接点。

  1. 01 agents/openai.yaml 显示入口

    让 Codex 识别名称、说明和默认使用提示。

  2. 02 SKILL.md 加载流程规则

    确定三种方向、打开顺序、等待方式和最终输出。

  3. 03 launch_browser_choice.py 启动本次运行

    创建独立目录,拉起本地服务,等待页面地址就绪。

  4. 04 browser_choice.py 提供 HTML

    监听本机随机端口,返回选择页和默认方向。

  5. 05 Internal Browser 打开右侧页面

    显示面板、新建标签页,并载入本机地址。

  6. 06 wait_browser_choice.py 保持当前回合

    等待选择;与此同时,页面把结果写入 selection.json

  7. 07 SKILL.md 继续完成润色

    等待脚本返回方向,当前回合据此生成标题和正文。