feat: add desktop app hot update channel
This commit is contained in:
@@ -1,18 +1,80 @@
|
||||
# backup-bot / skills 备份仓库
|
||||
# Codex 插件市场 —— 桌面客户端
|
||||
|
||||
个人技能备份 / 分享库,供 TD工具箱(codex-market)安装。
|
||||
跨平台(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,未配置或失败时退化为本地规则提取;可全局或按项目关闭。
|
||||
|
||||
| 技能 | 分类 | 说明 | 安装包 |
|
||||
|------|------|------|--------|
|
||||
| **gen-image · 生图** | 图片生成 | 通过大模型中转站调用 OpenAI 图片接口生图(文生图/图生图/局部重绘/透明背景),零依赖 | `categories/图片生成/28772__gen-image.zip` |
|
||||
## 开发运行
|
||||
```bash
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
## gen-image 用法
|
||||
## 打包分发
|
||||
```bash
|
||||
# 当前平台
|
||||
npm run dist
|
||||
|
||||
首次需在 skill 目录 `cp .env.example .env` 并填入中转站 `IMAGE_API_BASE_URL` / `IMAGE_API_KEY`,然后:
|
||||
# 指定平台(需对应系统或已配置交叉编译)
|
||||
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
|
||||
./gen.sh "提示词" --size 1024x1024 --quality high # 文生图
|
||||
./gen.sh "换成雪山背景" --edit input.png # 图生图
|
||||
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`。
|
||||
|
||||
Reference in New Issue
Block a user