Back to home

xmasdong

dsh-codex-image

No description

Stars
0
Language
TypeScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-codex-image-bridge

DeepSeek Harness 插件:把本机 codex-image-bridge skill(通过 Codex app-server / 受管 ChatGPT 登录生图)适配为 Harness 的四个原生工具。skill 是自包含的脚本包,本插件只需它的 scripts/ 目录(见下方 skillDir 配置)。

基于官方文档 《第一个插件》《开发一个工具》 编写:插件是一个导出 apply(ctx, config) 的 TypeScript 模块,通过 ctx.tools.register(defineTool(...)) 注册工具,配置用 Schemastery schema 校验。

注册的工具

工具说明
codex_image_auth_status检查 Codex app-server 受管登录是否可用(账户 / token 状态)
codex_image_generate用原生模型生成 PNG(严格模式:只认 image_generation_call / imageGeneration,工具回退不视为成功)
codex_image_edit以母图(mother image)为视觉参考重绘变体(参考图再生,非像素级就地编辑/蒙版)
codex_image_describe用 Codex vision 模型描述本地 PNG(纯文本,不生成图)

生成/编辑结果除了写到磁盘,还会提交到 Harness 附件库(ctx.attachments.saveImage),因此 GUI 的工具结果里会内嵌显示生成的图片

安装

前置:本机已有 codex-image-bridge skill 的 scripts/ 目录(skillDir 配置,默认 ~/.claude/skills/codex-image-bridge),且 Codex app-server 可用(node <skillDir>/scripts/cli.mjs auth 能返回 account)。

本项目是官方组合包(bundle)格式,三种官方安装方式任选其一:

# 方式一:npm 发布包(安装的是预构建的 lib/,无需构建权限)
dsh plugin --profile web add dsh-codex-image-bridge

# 方式二:直接从 GitHub 安装(拉取源码;首次需在 pnpm-workspace.yaml 中
#         添加 allowBuilds 授权以运行 prepare 构建脚本,见下)
dsh plugin --profile web add github:xmasdong/dsh-codex-image#<commit-sha>

# 方式三:tarball(npm pack 产物,也无需构建权限)
npm pack
dsh plugin --profile web add ./dsh-codex-image-bridge-0.1.0.tgz

GitHub 安装的 allowBuilds 授权(写入该 profile 的 pnpm-workspace.yaml):

allowBuilds:
  dsh-codex-image-bridge: true

安装后插件自动追加进 profile 的 dsh.profile.bundlesdsh plugin --profile web remove dsh-codex-image-bridge 卸载。配置在 profile 的 cordis.patch.yml 中按 id: codex-image-bridge 覆盖(HMR 热生效)。

本地开发(不安装)时用 overlay:dsh web --patch ./cordis.patch.yml,插件行按源码绝对路径引用(见 cordis.patch.yml 头部注释)。

配置

在 patch 的 config: 中覆盖(默认值来自 Config schema 与环境变量回退):

字段默认说明
skillDir~/.claude/skills/codex-image-bridgeskill 目录(脚本从 scripts/ 动态导入)
outputDir''<skillDir>/outputs生成 PNG 的落盘目录
threadModelCODEX_THREAD_MODELgpt-5.5Codex 生图 thread 模型
timeoutMs120000单次生图/编辑 turn 超时
commandCODEX_COMMANDcodexCodex CLI 命令
sandboxCODEX_IMAGE_SANDBOXdanger-full-accessCodex thread 沙盒(匹配 App 原生生图链路)
acceptToolImagesfalse诊断用:接受工具回传的 PNG(非原生成功)
visionModelCODEX_VISION_MODELgpt-5.5describe 用模型
visionTimeoutMs180000describe 超时

开发与验证

bash setup.sh        # 本地开发:把 $DSH_HOME/profiles/node_modules 符号链接进 node_modules
npm run typecheck    # tsc --noEmit
npm run build        # 构建 lib/(bundle 发布产物)
npm run smoke        # 离线冒烟:加载插件 + 断言 4 个工具注册(不连 Codex)

真实链路(需要 Codex 登录)验证方式见 scripts/ 与 skill 的 SKILL.md。

发布(组合包)

npm login            # 一次即可
npm version patch    # 或 minor/major,自动打 tag
npm publish          # prepare 钩子自动构建 lib/ 后发布

包通过 package.jsondsh.bundle.patch 声明配置层,cordis.patch.yml 内按包名 dsh-codex-image-bridge 引用插件入口;用户安装后即获得 codex_image_* 四个工具。发布前建议先在临时 profile 验证:dsh plugin --profile demo add ./ + dsh --profile demo --dump-config

设计说明

  • 输出用 defineTooloutput.schema 声明规范值(JSON Schema),output.render 纯函数投影为模型内容(文本 + image 内容块)。
  • 声明 inject: ['tools', 'attachments']:框架保证工具注册表与附件服务就绪后才 apply
  • 不声明 timeoutMs(工具级硬超时策略),生图时长交给 skill 内部的 turn 超时控制,避免中途强杀 Codex 线程。
  • 安全:不读取/打印本地 token 文件;tokenPresent=false 不意味着不可生成;codex.source 非原生时明确报告而非假装成功。