codex-task 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-task",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "description": "Delegate multimodal text, image, and workspace tasks to CodexTask",
5
5
  "author": {
6
6
  "name": "wang121ye",
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # CodexTask
2
2
 
3
- > 把文本、图片和项目任务交给另一个 Codex worker,拿回结构化文本、生成图片或已经完成的工作区变更。
3
+ > Agent 和自动化脚本用的 Codex 任务运行器:输入文本、图片或项目目录,拿回文本、生成图片或工作区改动。
4
4
 
5
- [English](./README_EN.md) · [产品需求文档](./docs/PRD.md) · [常用命令](./docs/常用命令.txt) · [Companion Skill](./skills/codex-task/SKILL.md)
5
+ [English](./README_EN.md) · [产品需求文档](./docs/PRD.md) · [远程部署与手机调用](./docs/knowhow/20260811_远程服务部署与移动端调用.md) · [常用命令](./docs/常用命令.txt) · [Companion Skill](./skills/codex-task/SKILL.md)
6
6
 
7
- CodexTask 是一个轻量、可组合的跨 Agent 多模态任务运行器。它提供一个 CLI、一个 TypeScript API 和一个可安装给其他 Agent Skill;没有 daemon,没有托管服务,也不需要额外 API key。
7
+ CodexTask Codex、Claude Code、Gemini CLI 或你自己的程序把任务交给独立的 Codex worker。它提供 CLI、TypeScript API、Companion Skill 和可选的自托管 HTTP 服务,复用现有 Codex 登录,不需要另配 API key。
8
8
 
9
- 你只需要按“想拿回什么”选择命令:
9
+ 先按期望结果选命令:
10
10
 
11
11
  | 期望结果 | 命令 | 可组合输入 | 典型任务 |
12
12
  | --- | --- | --- | --- |
@@ -27,53 +27,75 @@ npm install -g codex-task
27
27
  codex-task doctor
28
28
  ```
29
29
 
30
- 下面用一次“健身营养餐”任务串起四种输出。
30
+ 下面用一份“健身营养餐”演示文生图、图生文、图生图、工作区任务和恢复。图片与 JSON 都来自真实模型请求;生成模型有随机性,重新执行会得到同类但不同的结果。
31
31
 
32
32
  ### 1. 生成图片:一份健身营养餐
33
33
 
34
34
  ```bash
35
- codex-task image "生成一份写实、干净的健身营养餐:香煎鸡胸肉、糙米、西兰花、牛油果,俯拍,食材边界清晰"
35
+ codex-task image "生成一份写实、干净的健身营养餐:香煎鸡胸肉、糙米、西兰花、牛油果;四种食物分区摆放,俯拍,完整餐盘,食材边界清晰;浅灰桌面,柔和自然光;不要文字、水印、餐具和其他食物。" -o ./docs/assets/fitness-meal.png --size 1024x1024 --quality high
36
36
  ```
37
37
 
38
- 不传 `--output` 时,最终图片默认保存在当前目录,而不是临时目录:
38
+ 这里用 `--output` 把图片保存到 README 资产目录。省略该参数时,图片默认保存在当前目录:
39
39
 
40
40
  ```json
41
41
  {
42
42
  "status": "completed",
43
- "taskId": "a1b2c3d4-...",
43
+ "taskId": "78cda394-e16f-4cac-9d0f-9b8a010e3879",
44
44
  "backend": "direct",
45
45
  "text": "Generated 1 image(s).",
46
46
  "effectiveModel": "gpt-5.5",
47
47
  "artifacts": [
48
- { "path": "/your/project/image-a1b2c3d4.png", "kind": "image", "mimeType": "image/png" }
48
+ { "path": "/your/project/docs/assets/fitness-meal.png", "kind": "image", "mimeType": "image/png" }
49
49
  ]
50
50
  }
51
51
  ```
52
52
 
53
+ 真实生成结果:
54
+
55
+ ![CodexTask 文生图生成的健身营养餐](./docs/assets/fitness-meal.png)
56
+
53
57
  ### 2. 图片 + prompt → JSON 营养分析
54
58
 
55
59
  ```bash
56
- codex-task text "识别图中的食物,估算每项热量和总热量,只返回 JSON" -i ./image-a1b2c3d4.png
60
+ codex-task text "识别图片中的全部食物,估算每项可食部分重量和热量。重量和热量必须是数字;热量为基于视觉份量的近似值;note 用中文说明估算存在误差。" -i ./docs/assets/fitness-meal.png --schema ./docs/examples/nutrition.schema.json --model gpt-5.6-sol --reasoning medium
57
61
  ```
58
62
 
59
- `text` 不只是文生文,也支持图生文和图文生文:
63
+ 图生文输入就是上一步的真实图片:
64
+
65
+ <img src="./docs/assets/fitness-meal.png" alt="CodexTask 图生文输入图片" width="520">
66
+
67
+ `text` 支持文生文、图生文和图文生文。下面是该命令返回的结构化内容,原始文件见 [`fitness-meal-analysis.json`](./docs/examples/fitness-meal-analysis.json):
60
68
 
61
69
  ```json
62
70
  {
63
- "status": "completed",
64
- "taskId": "b2c3d4e5-...",
65
- "backend": "direct",
66
- "text": "{\"foods\":[{\"name\":\"鸡胸肉\",\"calories\":248},{\"name\":\"糙米\",\"calories\":216},{\"name\":\"西兰花\",\"calories\":55},{\"name\":\"牛油果\",\"calories\":160}],\"totalCalories\":679}",
67
- "artifacts": []
71
+ "foods": [
72
+ { "name": "煎烤鸡胸肉", "estimatedGrams": 220, "calories": 380 },
73
+ { "name": "熟糙米饭", "estimatedGrams": 250, "calories": 280 },
74
+ { "name": "西兰花", "estimatedGrams": 170, "calories": 60 },
75
+ { "name": "牛油果", "estimatedGrams": 100, "calories": 160 }
76
+ ],
77
+ "totalCalories": 880,
78
+ "note": "以上重量和热量根据图片中的视觉份量估算,实际数值会因食材品种、烹饪用油及熟制程度而存在误差。"
68
79
  }
69
80
  ```
70
81
 
71
- 需要严格 JSON Schema 时可传 `--schema ./nutrition.schema.json`。
82
+ 这只是视觉估算,不应替代称重或专业营养建议。
72
83
 
73
- ### 3. 多份要求 + 参考图完成项目
84
+ ### 3. 图片 + prompt高蛋白版本图片
74
85
 
75
86
  ```bash
76
- codex-task task "实现一个健身营养餐详情页,并运行相关测试" -f ./requirements.md -f ./api-contract.md -i ./image-a1b2c3d4.png --cwd ./meal-app
87
+ codex-task image "把这份餐食调整成高蛋白低碳版本:增加约 50% 的鸡胸肉,糙米减少约一半;只改变鸡胸肉和糙米的份量,保持餐盘、俯拍机位、光线、牛油果、西兰花和写实摄影风格不变;不要增加其他食物、文字或水印。" -i ./docs/assets/fitness-meal.png -o ./docs/assets/fitness-meal-high-protein.png --size 1024x1024 --quality high
88
+ ```
89
+
90
+ | 图生图输入 | 真实图生图输出 |
91
+ | --- | --- |
92
+ | <img src="./docs/assets/fitness-meal.png" alt="原始健身营养餐" width="420"> | <img src="./docs/assets/fitness-meal-high-protein.png" alt="高蛋白低碳版本健身营养餐" width="420"> |
93
+ | 原始份量 | 增加鸡胸肉、减少糙米 |
94
+
95
+ ### 4. 多份要求 + 参考图 → 完成项目
96
+
97
+ ```bash
98
+ codex-task task "实现一个健身营养餐详情页,并运行相关测试" -f ./requirements.md -f ./api-contract.md -i ./docs/assets/fitness-meal.png --cwd ./meal-app
77
99
  ```
78
100
 
79
101
  `task` 固定使用官方 Codex SDK,不需要再写 `--backend sdk`。`--cwd ./meal-app` 表示:把该目录作为 worker 的当前项目;Codex 会从这里读取代码、项目规则与 skills,并在授权范围内修改文件、执行命令。
@@ -91,7 +113,7 @@ codex-task task "实现一个健身营养餐详情页,并运行相关测试" -
91
113
  }
92
114
  ```
93
115
 
94
- ### 4. 回答追问并继续
116
+ ### 5. 回答追问并继续
95
117
 
96
118
  如果任务存在关键歧义,`task` 可能返回:
97
119
 
@@ -121,7 +143,7 @@ codex-task resume 7dd7a7d7-... "按单人份展示" -f ./copy-guidelines.md -i .
121
143
  }
122
144
  ```
123
145
 
124
- ## 组合输入,而不是四选一
146
+ ## 组合输入
125
147
 
126
148
  位置 prompt、重复的 `-f/--prompt-file`、非空 stdin 和重复的 `-i/--image` 可以同时出现:
127
149
 
@@ -129,7 +151,7 @@ codex-task resume 7dd7a7d7-... "按单人份展示" -f ./copy-guidelines.md -i .
129
151
  printf '%s' "总热量控制在 700 kcal 内" | codex-task text "制定调整建议" -f ./training-goal.md -f ./allergies.md -i ./meal-front.png -i ./meal-side.png
130
152
  ```
131
153
 
132
- CodexTask 按固定顺序组合输入:位置 prompt → prompt 文件(按命令行顺序)→ stdin;图片保持 `-i` 的顺序。文件内容会带绝对路径边界标记,避免多份长 prompt 混在一起。每张图片不超过 20 MiB,总和不超过 50 MiB。
154
+ 输入顺序固定为:位置 prompt → prompt 文件(按命令行顺序)→ stdin;图片保持 `-i` 的顺序。每份文件都带绝对路径边界标记,避免多份长 prompt 混在一起。每张图片不超过 20 MiB,总和不超过 50 MiB。
133
155
 
134
156
  ## 两种后端
135
157
 
@@ -153,7 +175,7 @@ approval: never
153
175
  network: true
154
176
  ```
155
177
 
156
- 这意味着 worker 可以访问工作区外路径、执行命令并联网,而且不会等待权限确认。只委派可信 prompt 和可信项目;需要收窄时显式传 `--sandbox workspace-write` 或 `--no-network`。
178
+ 默认配置下,worker 可以访问工作区外路径、执行命令并联网,而且不会等待权限确认。只委派可信 prompt 和可信项目;需要限制范围时传 `--sandbox workspace-write` 或 `--no-network`。
157
179
 
158
180
  ## 图片输出与临时文件
159
181
 
@@ -172,9 +194,9 @@ codex-task gc
172
194
 
173
195
  ## 安装给其他 Agent
174
196
 
175
- 仓库内置 [`skills/codex-task/SKILL.md`](./skills/codex-task/SKILL.md)。它教调用方 Agent 何时运行 `text`、`image`、`task` 或 `resume`;它不是注入底层 Codex worker 的 skill。
197
+ 仓库内置 [`skills/codex-task/SKILL.md`](./skills/codex-task/SKILL.md)。这个 Skill 供调用方 Agent 使用,教它何时运行 `text`、`image`、`task` 或 `resume`。底层 Codex worker 不会加载它。
176
198
 
177
- Skill 和 CLI 是两件事:SkillTruck 负责安装 Skill,npm 负责安装可执行命令。安装 Skill 不会自动全局安装 npm 包。
199
+ SkillTruck 负责安装 Skill,npm 负责安装可执行命令。安装 Skill 不会自动全局安装 npm 包。
178
200
 
179
201
  ```bash
180
202
  npm install -g skilltruck codex-task
@@ -183,6 +205,52 @@ skilltruck install https://github.com/wangyendt/codex-task --global
183
205
 
184
206
  如果不想全局安装 CLI,Agent 可回退到 `npx --yes codex-task@latest`。也可以运行 `codex-task skill path` 查看 npm 包内 Skill 的位置。
185
207
 
208
+ ## 手机远程调用与开机自启
209
+
210
+ `codex-task serve` 把四类任务开放为带 Bearer Token 的异步 HTTP API。服务收到任务后立即返回 `jobId`,手机再轮询状态,不需要维持一个可能持续数分钟的请求。
211
+
212
+ | 目标 | 接口 |
213
+ | --- | --- |
214
+ | 文本结果 | `POST /v1/text` |
215
+ | 图片结果 | `POST /v1/image` |
216
+ | 工作区变更 | `POST /v1/task` |
217
+ | 回答追问 | `POST /v1/tasks/:taskId/resume` |
218
+ | 查询进度 | `GET /v1/jobs/:jobId` |
219
+ | 下载产物 | `GET /v1/jobs/:jobId/artifacts/:index` |
220
+
221
+ 开机服务使用 `npm install -g codex-task@latest`。这样启动时不依赖 npm 网络,执行文件路径也不会变化。三平台脚本会安装或升级全局包、生成随机 token、创建用户级自启动项并立即启动服务。
222
+
223
+ ```bash
224
+ # Ubuntu/Linux 或 macOS:自动识别 systemd user / LaunchAgent
225
+ bash ./scripts/service/install.sh
226
+
227
+ # Windows PowerShell:Scheduled Task
228
+ powershell -ExecutionPolicy Bypass -File .\scripts\service\Install-Windows.ps1
229
+ ```
230
+
231
+ 卸载自启动服务但保留全局 npm 包、Codex 登录和任务数据:
232
+
233
+ ```bash
234
+ # Ubuntu/Linux 或 macOS
235
+ bash ./scripts/service/uninstall.sh
236
+
237
+ # Windows PowerShell
238
+ powershell -ExecutionPolicy Bypass -File .\scripts\service\Uninstall-Windows.ps1
239
+ ```
240
+
241
+ 默认监听 `0.0.0.0:7777` 以便手机访问,安装完成会打印 token。手机地址应填写电脑的局域网/VPN 地址,例如 `http://192.168.1.50:7777`,不能填写 `0.0.0.0`。
242
+
243
+ ```bash
244
+ curl -sS http://127.0.0.1:7777/healthz
245
+ curl -sS -X POST http://127.0.0.1:7777/v1/text -H "Authorization: Bearer $CODEX_TASK_TOKEN" -H 'Content-Type: application/json' -d '{"prompt":"把这段需求整理成三条要点"}'
246
+ curl -sS http://127.0.0.1:7777/v1/jobs/替换为jobId -H "Authorization: Bearer $CODEX_TASK_TOKEN"
247
+ ```
248
+
249
+ > [!CAUTION]
250
+ > 服务不内置 TLS,不能直接暴露到公网。建议只在可信局域网、Tailscale/WireGuard 或 HTTPS 反向代理后使用。Token 持有者实际上拥有该电脑上 CodexTask 的执行权;远程 `task` 默认仍是 `danger-full-access`、可联网、`approval: never`。服务重启会丢失内存中的远程 job 查询记录,终态 job 和下载链接默认保留 24 小时;已返回的 SDK `taskId` 仍可按 CodexTask 自身状态恢复。
251
+
252
+ Android Kotlin 与 iOS Swift 示例见 [`examples/mobile`](./examples/mobile/README.md):先调用 `image` 生成营养餐,下载图片后调用 `text` 做图生文,再用 `task` 修改服务器上的项目;如果 worker 追问,就用 `resume` 回答。部署、升级、卸载、JSON 字段和安全说明见[远程服务部署与移动端调用](./docs/knowhow/20260811_远程服务部署与移动端调用.md)。
253
+
186
254
  ## TypeScript API
187
255
 
188
256
  ```ts
@@ -227,7 +295,7 @@ stdout 默认只有一个 JSON 结果;`--stream` 时为 JSONL。诊断写 stde
227
295
 
228
296
  SDK 默认不覆写 model/reasoning,继续读取正常的 Codex 用户与项目配置。
229
297
 
230
- Direct 按显式参数 → Codex `config.toml` → `models_cache.json` 首选模型 → 兼容 fallback 的顺序选择模型。当前文本可使用 `gpt-5.6-sol + medium/high`;私有 Responses Lite 路由不暴露托管 `image_generation`,所以 Direct 图片会在请求前选择兼容的 classic `gpt-5.5`。这不代表 `gpt-5.6-sol` 没有视觉能力,只是这条非官方 Direct 生图协议不兼容。最终 JSON 始终返回真实的 `effectiveModel` 和 `reasoningEffort`。
298
+ Direct 按显式参数 → Codex `config.toml` → `models_cache.json` 首选模型 → 兼容 fallback 的顺序选择模型。当前文本可使用 `gpt-5.6-sol + medium/high`;私有 Responses Lite 路由不暴露托管 `image_generation`,所以 Direct 图片会在请求前选择兼容的 classic `gpt-5.5`。`gpt-5.6-sol` 仍有视觉能力,限制来自这条非官方 Direct 生图协议。JSON 会写入实际使用的 `effectiveModel` 和 `reasoningEffort`。
231
299
 
232
300
  运行 `codex-task doctor` 可查看本机 Direct transport、OAuth、模型解析、Codex CLI/SDK 与真实数据路径,不会发送模型请求。
233
301
 
package/README_EN.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # CodexTask
2
2
 
3
- > Delegate text, images, and project work to another Codex worker; get back structured text, generated images, or completed workspace changes.
3
+ > A Codex task runner for agents and automation scripts. Send text, images, or a project directory; receive text, generated images, or workspace changes.
4
4
 
5
- [中文](./README.md) · [Product requirements](./docs/PRD.md) · [Common commands](./docs/常用命令.txt) · [Companion skill](./skills/codex-task/SKILL.md)
5
+ [中文](./README.md) · [Product requirements](./docs/PRD.md) · [Remote deployment](./docs/knowhow/20260811_远程服务部署与移动端调用.md) · [Common commands](./docs/常用命令.txt) · [Companion skill](./skills/codex-task/SKILL.md)
6
6
 
7
- CodexTask is a lightweight, composable multimodal task runner for agent-to-agent delegation. It ships one CLI, one TypeScript API, and one installable companion skill—without a daemon, hosted service, or extra API key.
7
+ CodexTask lets Codex, Claude Code, Gemini CLI, or your own program hand work to an independent Codex worker. It includes a CLI, a TypeScript API, a companion skill, and an optional self-hosted HTTP service. It reuses your existing Codex login, so there is no separate API key to configure.
8
8
 
9
- Choose a command by the result you want:
9
+ Pick the command that matches the result you need:
10
10
 
11
11
  | Result | Command | Composable inputs |
12
12
  | --- | --- | --- |
@@ -18,7 +18,7 @@ Choose a command by the result you want:
18
18
  > [!IMPORTANT]
19
19
  > CodexTask is an independent, unofficial open-source project. It is not affiliated with, endorsed by, or sponsored by OpenAI. Codex and OpenAI are trademarks of OpenAI.
20
20
 
21
- ## Quick start: one fitness-meal workflow
21
+ ## Quick start: one real fitness-meal workflow
22
22
 
23
23
  Requirements: Node.js 20+ and an existing Codex login (`codex login`).
24
24
 
@@ -27,42 +27,62 @@ npm install -g codex-task
27
27
  codex-task doctor
28
28
  ```
29
29
 
30
- Generate a fitness meal image. With no `--output`, the durable final image is written to the current directory:
30
+ The images and nutrition JSON below came from real CodexTask model requests. Generative results vary between runs.
31
+
32
+ Generate a fitness meal image:
31
33
 
32
34
  ```bash
33
- codex-task image "A clean top-down fitness meal with grilled chicken, brown rice, broccoli, and avocado"
35
+ codex-task image "A clean top-down fitness meal with grilled chicken, brown rice, broccoli, and avocado; four separate sections; full plate; soft natural light; no text, watermark, utensils, or extra food" -o ./docs/assets/fitness-meal.png --size 1024x1024 --quality high
34
36
  ```
35
37
 
36
38
  ```json
37
39
  {
38
40
  "status": "completed",
39
- "taskId": "a1b2c3d4-...",
41
+ "taskId": "78cda394-e16f-4cac-9d0f-9b8a010e3879",
40
42
  "backend": "direct",
41
43
  "effectiveModel": "gpt-5.5",
42
- "artifacts": [{ "path": "/your/project/image-a1b2c3d4.png", "kind": "image" }]
44
+ "artifacts": [{ "path": "/your/project/docs/assets/fitness-meal.png", "kind": "image" }]
43
45
  }
44
46
  ```
45
47
 
48
+ ![Fitness meal generated by CodexTask](./docs/assets/fitness-meal.png)
49
+
46
50
  Turn that image plus a prompt into nutrition JSON:
47
51
 
48
52
  ```bash
49
- codex-task text "Identify the foods, estimate each item's calories and the total, and return JSON only" -i ./image-a1b2c3d4.png
53
+ codex-task text "Identify every food and estimate edible weight and calories; return structured JSON" -i ./docs/assets/fitness-meal.png --schema ./docs/examples/nutrition.schema.json --model gpt-5.6-sol --reasoning medium
50
54
  ```
51
55
 
56
+ English translation of the real model response:
57
+
52
58
  ```json
53
59
  {
54
- "status": "completed",
55
- "taskId": "b2c3d4e5-...",
56
- "backend": "direct",
57
- "text": "{\"foods\":[{\"name\":\"chicken breast\",\"calories\":248}],\"totalCalories\":679}",
58
- "artifacts": []
60
+ "foods": [
61
+ { "name": "grilled chicken breast", "estimatedGrams": 220, "calories": 380 },
62
+ { "name": "cooked brown rice", "estimatedGrams": 250, "calories": 280 },
63
+ { "name": "broccoli", "estimatedGrams": 170, "calories": 60 },
64
+ { "name": "avocado", "estimatedGrams": 100, "calories": 160 }
65
+ ],
66
+ "totalCalories": 880
59
67
  }
60
68
  ```
61
69
 
70
+ The saved [analysis JSON](./docs/examples/fitness-meal-analysis.json) is the exact Chinese structured response. Visual calorie estimates are illustrative, not professional nutrition advice.
71
+
72
+ Edit the same image into a higher-protein, lower-carbohydrate version:
73
+
74
+ ```bash
75
+ codex-task image "Increase the chicken by about 50% and reduce the brown rice by about half; preserve the plate, camera, lighting, avocado, broccoli, and photorealistic style" -i ./docs/assets/fitness-meal.png -o ./docs/assets/fitness-meal-high-protein.png --size 1024x1024 --quality high
76
+ ```
77
+
78
+ | Image-to-image input | Real image-to-image output |
79
+ | --- | --- |
80
+ | <img src="./docs/assets/fitness-meal.png" alt="Original fitness meal" width="420"> | <img src="./docs/assets/fitness-meal-high-protein.png" alt="Higher-protein fitness meal" width="420"> |
81
+
62
82
  Delegate project work with multiple specifications and the generated image:
63
83
 
64
84
  ```bash
65
- codex-task task "Build the fitness-meal detail page and run focused tests" -f ./requirements.md -f ./api-contract.md -i ./image-a1b2c3d4.png --cwd ./meal-app
85
+ codex-task task "Build the fitness-meal detail page and run focused tests" -f ./requirements.md -f ./api-contract.md -i ./docs/assets/fitness-meal.png --cwd ./meal-app
66
86
  ```
67
87
 
68
88
  `task` always uses the official Codex SDK; `--backend sdk` is unnecessary. `--cwd` is the worker's current project—the directory whose code, project instructions, and skills Codex reads and where it runs commands.
@@ -73,7 +93,7 @@ If the result is `needs_input`, answer and resume the same Codex task:
73
93
  codex-task resume 7dd7a7d7-... "Use a single serving" -f ./copy-guidelines.md -i ./expected-layout.png
74
94
  ```
75
95
 
76
- ## Composable multimodal input
96
+ ## Combine text, files, and images
77
97
 
78
98
  The positional prompt, repeated `-f/--prompt-file`, non-empty stdin, and repeated `-i/--image` may be combined:
79
99
 
@@ -85,7 +105,7 @@ Text is composed in a stable order: positional prompt, prompt files in command-l
85
105
 
86
106
  ## Direct and SDK backends
87
107
 
88
- `text` and `image` default to Direct and may explicitly select `--backend sdk`. `task` and `resume` are SDK-only. CodexTask never guesses the backend.
108
+ `text` and `image` default to Direct and may select `--backend sdk`. `task` and `resume` are SDK-only. CodexTask uses the backend you select; it does not guess.
89
109
 
90
110
  | Capability | `direct` | `sdk` |
91
111
  | --- | --- | --- |
@@ -97,7 +117,7 @@ Text is composed in a stable order: positional prompt, prompt files in command-l
97
117
 
98
118
  Direct reuses `$CODEX_HOME/auth.json`, Codex installation metadata, TLS impersonation, and the private ChatGPT Codex Responses endpoint. Inputs are still sent to ChatGPT, and the interface may change without notice. Direct cannot read a repository, run local tools, call local MCP, or use worker skills.
99
119
 
100
- SDK tasks default to `sandbox=danger-full-access`, `approval=never`, and `network=true`. This is intentionally powerful. Delegate only trusted prompts and projects; use `--sandbox workspace-write` or `--no-network` when needed.
120
+ SDK tasks default to `sandbox=danger-full-access`, `approval=never`, and `network=true`. With these settings, the worker can access paths outside the workspace, run commands, and use the network without waiting for approval. Delegate only trusted prompts and projects; use `--sandbox workspace-write` or `--no-network` when needed.
101
121
 
102
122
  ## Image output
103
123
 
@@ -110,7 +130,7 @@ Image controls: `size=auto|WIDTHxHEIGHT` (longest edge ≤ 3840), `quality=auto|
110
130
 
111
131
  ## Companion skill
112
132
 
113
- [`skills/codex-task/SKILL.md`](./skills/codex-task/SKILL.md) teaches a calling agent how to use CodexTask. It is not injected into the underlying Codex worker. The skill and executable are separate: SkillTruck installs the skill; npm installs the CLI.
133
+ [`skills/codex-task/SKILL.md`](./skills/codex-task/SKILL.md) teaches the calling agent how to use CodexTask. The underlying Codex worker does not load it. SkillTruck installs the skill; npm installs the CLI.
114
134
 
115
135
  ```bash
116
136
  npm install -g skilltruck codex-task
@@ -140,9 +160,27 @@ const work = await runTask({
140
160
 
141
161
  Default stdout is one JSON result; `--stream` produces JSONL item/task progress. Exit codes are 0 for `completed`/`needs_input`, 1 for execution failure, 2 for invalid input, and 130 for cancellation/timeout.
142
162
 
163
+ ## Self-hosted service and mobile clients
164
+
165
+ `codex-task serve` exposes text, image, workspace, and resume work as authenticated asynchronous HTTP jobs. A boot service uses `npm install -g codex-task@latest` so startup does not depend on registry access and the executable path stays fixed.
166
+
167
+ | Platform | Installer | Startup mechanism |
168
+ | --- | --- | --- |
169
+ | Ubuntu/Linux | `bash ./scripts/service/install.sh` | systemd user service |
170
+ | macOS | `bash ./scripts/service/install.sh` | LaunchAgent at login |
171
+ | Windows | `powershell -ExecutionPolicy Bypass -File .\scripts\service\Install-Windows.ps1` | Scheduled Task at login |
172
+
173
+ The installers bind to `0.0.0.0:7777`, generate a protected Service Token, and print both. A phone must use the computer's reachable LAN or VPN address, not `0.0.0.0`. The API provides `POST /v1/text`, `/v1/image`, `/v1/task`, `/v1/tasks/:taskId/resume`, plus job polling and authenticated artifact downloads.
174
+
175
+ Uninstall auto-start while preserving the global npm package and Codex data with `bash ./scripts/service/uninstall.sh` on Ubuntu/Linux/macOS, or `powershell -ExecutionPolicy Bypass -File .\scripts\service\Uninstall-Windows.ps1` on Windows.
176
+
177
+ The service has no built-in TLS and must not be exposed directly to the public internet. Use a trusted LAN, Tailscale/WireGuard, or an HTTPS reverse proxy. Treat the token as equivalent to the local user's CodexTask authority; remote workspace tasks still default to `danger-full-access`, network enabled, and approval `never`. Remote job polling state is in memory and is lost on service restart; terminal jobs and download URLs expire after 24 hours by default.
178
+
179
+ See the [deployment and API guide](./docs/knowhow/20260811_远程服务部署与移动端调用.md) and the [Android Kotlin and iOS Swift examples](./examples/mobile/README.md). The sample generates an image, analyzes it as text, changes a server-side project, and resumes after a question.
180
+
143
181
  ## Models
144
182
 
145
- SDK mode inherits normal Codex model and reasoning configuration unless overridden. Direct resolves explicit options, Codex config, the model cache, then a compatibility fallback. Current Direct text can use `gpt-5.6-sol` with medium or high reasoning. The private Responses Lite route does not expose hosted `image_generation`, so Direct image requests preflight to the compatible classic `gpt-5.5`. This is a limitation of the unofficial Direct image protocol, not a claim that `gpt-5.6-sol` lacks vision capability.
183
+ SDK mode inherits the normal Codex model and reasoning configuration unless overridden. Direct checks explicit options, Codex config, the model cache, then a compatibility fallback. Direct text can use `gpt-5.6-sol` with medium or high reasoning. The private Responses Lite route does not expose hosted `image_generation`, so Direct image requests use the compatible classic `gpt-5.5`. `gpt-5.6-sol` still supports vision; the incompatibility is limited to this unofficial Direct image protocol.
146
184
 
147
185
  ## Development and releases
148
186
 
package/dist/cli.js CHANGED
@@ -5,6 +5,7 @@ import { dispatch, streamTaskEvents } from "./api.js";
5
5
  import { runDoctor } from "./doctor.js";
6
6
  import { asCodexTaskError, usageError } from "./errors.js";
7
7
  import { resolveTaskInput } from "./inputs.js";
8
+ import { startCodexTaskServer } from "./server.js";
8
9
  import { companionSkillPath } from "./skill.js";
9
10
  import { runGarbageCollection } from "./state.js";
10
11
  function collect(value, previous) {
@@ -60,6 +61,19 @@ function jsonFile(path) {
60
61
  throw usageError(`could not parse JSON file ${path}: ${error instanceof Error ? error.message : String(error)}`);
61
62
  }
62
63
  }
64
+ function serviceToken(path) {
65
+ if (!path)
66
+ return process.env["CODEX_TASK_SERVER_TOKEN"]?.trim() || undefined;
67
+ try {
68
+ const token = readFileSync(path, "utf8").trim();
69
+ if (!token)
70
+ throw new Error("token file is empty");
71
+ return token;
72
+ }
73
+ catch (error) {
74
+ throw usageError(`could not read service token file ${path}: ${error instanceof Error ? error.message : String(error)}`);
75
+ }
76
+ }
63
77
  function instructions(flags) {
64
78
  if (flags.instructions && flags.instructionsFile) {
65
79
  throw usageError("--instructions and --instructions-file are mutually exclusive");
@@ -215,6 +229,42 @@ program.command("doctor").description("inspect local Direct and SDK readiness wi
215
229
  program.command("gc").description("remove expired CodexTask state and temporary artifacts").action(() => {
216
230
  writeJson(runGarbageCollection());
217
231
  });
232
+ program
233
+ .command("serve")
234
+ .description("run the authenticated CodexTask HTTP service")
235
+ .option("--host <host>", "listener address", "127.0.0.1")
236
+ .option("--port <port>", "listener port", "7777")
237
+ .option("--token-file <path>", "read the Bearer token from a protected file")
238
+ .option("--max-concurrency <count>", "maximum simultaneously running jobs", "2")
239
+ .action(async (flags) => {
240
+ const port = integer(flags["port"], "port");
241
+ const maxConcurrency = integer(flags["maxConcurrency"], "max-concurrency");
242
+ if (!port || port > 65_535)
243
+ throw usageError("port must be an integer from 1 to 65535");
244
+ const token = serviceToken(flags["tokenFile"]);
245
+ const server = await startCodexTaskServer({
246
+ host: flags["host"],
247
+ port,
248
+ token,
249
+ maxConcurrency,
250
+ });
251
+ writeJson({
252
+ status: "listening",
253
+ url: server.url,
254
+ host: server.host,
255
+ port: server.port,
256
+ authentication: token ? "bearer" : "none-loopback-only",
257
+ });
258
+ await new Promise((resolve) => {
259
+ const stop = () => {
260
+ process.off("SIGINT", stop);
261
+ process.off("SIGTERM", stop);
262
+ void server.close().finally(resolve);
263
+ };
264
+ process.once("SIGINT", stop);
265
+ process.once("SIGTERM", stop);
266
+ });
267
+ });
218
268
  program
219
269
  .command("skill")
220
270
  .description("inspect the packaged companion skill")
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { dispatch, generateImage, generateText, resumeTask, runTask, streamTaskE
2
2
  export { loadConfig, type ResolvedConfig, type UserConfig } from "./config.js";
3
3
  export { runDoctor } from "./doctor.js";
4
4
  export { runGarbageCollection } from "./state.js";
5
+ export { startCodexTaskServer, type CodexTaskServerOptions, type RunningCodexTaskServer } from "./server.js";
5
6
  export { CodexTaskError } from "./errors.js";
6
7
  export type * from "./types.js";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,UAAU,EACV,OAAO,EACP,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,UAAU,EACV,OAAO,EACP,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,mBAAmB,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -2,5 +2,6 @@ export { dispatch, generateImage, generateText, resumeTask, runTask, streamTaskE
2
2
  export { loadConfig } from "./config.js";
3
3
  export { runDoctor } from "./doctor.js";
4
4
  export { runGarbageCollection } from "./state.js";
5
+ export { startCodexTaskServer } from "./server.js";
5
6
  export { CodexTaskError } from "./errors.js";
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,UAAU,EACV,OAAO,EACP,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAwC,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,UAAU,EACV,OAAO,EACP,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAwC,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAA4D,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { TaskRequest, TaskResult } from "./types.js";
2
+ export type RemoteTaskRunner = (request: TaskRequest) => Promise<TaskResult>;
3
+ export interface CodexTaskServerOptions {
4
+ host?: string | undefined;
5
+ port?: number | undefined;
6
+ token?: string | undefined;
7
+ maxConcurrency?: number | undefined;
8
+ maxBodyBytes?: number | undefined;
9
+ jobTtlMs?: number | undefined;
10
+ run?: RemoteTaskRunner | undefined;
11
+ }
12
+ export interface RunningCodexTaskServer {
13
+ host: string;
14
+ port: number;
15
+ url: string;
16
+ close(): Promise<void>;
17
+ }
18
+ export declare function startCodexTaskServer(options?: CodexTaskServerOptions): Promise<RunningCodexTaskServer>;
19
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAkC,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1F,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAE7E,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,GAAG,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAqLD,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CA2TjC"}