Files
codex-market-app/README.md
T

4.0 KiB
Raw Blame History

Codex 插件市场 —— 桌面客户端

跨平台(macOS / Windows / Linux)的 Codex 插件 · 技能 备份 / 分享 / 一键安装 工具。 基于 Electron,全部逻辑本地运行;凭证只存在本机(系统安全存储加密)。

功能

  • 插件市场:浏览官方市场,搜索 / 筛选,一键安装到 ~/.codex 并自动启用。
  • 从本机导出 / 上传:扫描本机插件与技能,勾选后导出到本地目录,或打包推送到 GitHub 并自动登记到市场。凭证文件(auth.json / config.toml / history 等)已自动排除。
  • 从 GitHub 拉取还原:输入任意仓库,拉取后勾选还原到本机,可选自动在 config.toml 启用。
  • 设置:保存默认 GitHub Token(safeStorage 加密存储)。
  • 会话记忆:软件开着就自动工作——监视 ~/.codex/sessions,每次会话告一段落(静默几分钟)后自动浓缩成「交接摘要」: 存入本机 SQLite 记忆库(可检索),并写到对应项目根目录的 HANDOFF.md(状态快照),同时在项目 AGENTS.md 里加一段 「先读 HANDOFF」引导。之后新开 Codex 会话说「继续」,就能接上之前聊的,不用带着超长上下文。 摘要优先调用「路由中转」当前分组的 LLM,未配置或失败时退化为本地规则提取;可全局或按项目关闭。

开发运行

npm install
npm start

打包分发

# 当前平台
npm run dist

# 指定平台(需对应系统或已配置交叉编译)
npm run dist:mac    # 产出 dist/*.dmg(x64 + arm64)
npm run dist:win    # 产出 dist/*Setup.exe

产物在 dist/。打包配置见 electron-builder.yml,图标在 build/(icns/ico/png)。

macOS 首次打开报「已损坏,移到废纸篓」

这不是包坏了。 本应用未购买 Apple 开发者证书、未做公证(notarization), 只有临时(ad-hoc)签名。macOS 对「从网上下载」的这类 app 会自动加隔离标记 (com.apple.quarantine) 并由 Gatekeeper 拦截,在 Apple 芯片上表现为「已损坏」。

解决:把 app 拖到「应用程序」后,双击 DMG 里的 fix-quarantine.command,或在「终端」执行一次(去掉隔离标记):

xattr -cr "/Applications/TD工具箱.app"

之后正常双击即可打开,只需做一次。(若提示权限不足,命令前加 sudo 再回车输入开机密码。)

DMG 里同时放了 激活教程.txt,客户可以先看这个文件再操作。

想彻底免掉这一步、让用户双击即开,需要 Apple Developer 账号($99/年)做 Developer ID 签名 + 公证,届时在 electron-builder.yml 的 mac 段配置证书即可。

GitHub Token 说明

上传功能需要 classic personal access token,并勾选最上面的 repo 复选框: https://github.com/settings/tokens

  • 传公开仓库:public_repo 权限即可。
  • 传私有仓库:需要完整 repo 权限。
  • fine-grained token 目前不受支持(推送会失败),请用 classic token。

安装公开仓库的插件无需任何 token;安装私有仓库需在「设置」里保存 token。

项目结构

electron/
  main.js        主进程:窗口 + IPC + GitHub(isomorphic-git) + 市场 API
  preload.js     契约边界,暴露 window.api(冻结)
  lib/
    codex.js     扫描 / 打包 / 还原 / config.toml 启用
    secrets.js   safeStorage 密钥存储
renderer/
  index.html     UI 结构
  styles.css     深色为主 · 靛蓝→紫渐变
  app.js         前端逻辑(只经 window.api.*)
build/           打包图标
electron-builder.yml  打包配置
CONTRACT.md      前后端 / 分工契约(唯一事实来源)

隐私

  • 市场地址与密钥只存在于主进程,不出现在前端代码。
  • 打包上传时严格排除:auth.json、config.toml、history.jsonl、*.sqlite*、*.log、*.bak、.DS_Store、installation_id。
  • 还原写入 config.toml 前会自动备份为 config.toml.bak-exporter。