81 lines
3.9 KiB
Markdown
81 lines
3.9 KiB
Markdown
# 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,未配置或失败时退化为本地规则提取;可全局或按项目关闭。
|
||
|
||
## 开发运行
|
||
```bash
|
||
npm install
|
||
npm start
|
||
```
|
||
|
||
## 打包分发
|
||
```bash
|
||
# 当前平台
|
||
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 拖到「应用程序」后,在「终端」执行一次(去掉隔离标记):
|
||
|
||
```bash
|
||
xattr -cr "/Applications/Codex 插件市场.app"
|
||
```
|
||
|
||
之后正常双击即可打开,只需做一次。(若提示权限不足,命令前加 `sudo ` 再回车输入开机密码。)
|
||
|
||
> 想彻底免掉这一步、让用户双击即开,需要 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`。
|