news 2026/9/1 11:02:28

如何写出你的第一个Codex++ Tweak:10分钟从manifest.json到设置页(附完整示例代码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何写出你的第一个Codex++ Tweak:10分钟从manifest.json到设置页(附完整示例代码)

如何写出你的第一个Codex++ Tweak:10分钟从manifest.json到设置页(附完整示例代码)

【免费下载链接】codex-plusplusCodex++ tweak system for the Codex desktop app项目地址: https://gitcode.com/gh_mirrors/co/codex-plusplus

Codex++ 是一个为 Codex 桌面应用提供的tweak 系统,无需重新打包应用就能注入自定义功能。本文将手把手教你写出第一个 Codex++ Tweak:从manifest.json到设置页 UI,10 分钟完成,附完整可运行示例代码。

商店里的 Goal 插件就是一个标准的 Codex++ Tweak

1. Tweak 是什么?

一个 Codex++ Tweak 就是一个文件夹,里面只需要两个文件:

my-tweak/ ├── manifest.json # 描述元信息(必须) └── index.js # 入口脚本(必须,也可以是 .mjs / .cjs)

把它放进你的 tweaks 目录即可生效:

系统tweaks 目录
macOS~/Library/Application Support/codex-plusplus/tweaks/
Linux~/.local/share/codex-plusplus/tweaks/
Windows%APPDATA%/codex-plusplus/tweaks/

放入后按Cmd/Ctrl+R刷新 Codex(或重启应用),设置页的Tweaks标签里就会出现你的插件。

💡 不想手写?直接运行codexplusplus create-tweak my-tweak,CLI 会生成一套完整的骨架(模板代码见 create-tweak.ts)。

2. 编写 manifest.json:10个核心字段速查

manifest.json是 Codex++ 识别插件的"身份证",完整字段定义见 WRITING-TWEAKS.md 和 tweaks/AGENTS.md:

字段必填说明
id反向域名式唯一 ID,如com.you.my-tweak
name显示名称
version语义化版本,如0.1.0
githubRepoowner/repo格式,用于每日检查新版本(不会自动更新)
description选填一句话描述
author选填字符串或{name, url}对象
scope选填renderer(默认)/main/both
main选填入口文件名,默认index.js
iconUrl选填图标,支持相对路径如./icon.png
tags选填标签数组,如["ui", "shortcut"]

最小可用 manifest:

{ "id": "com.you.my-tweak", "name": "My First Tweak", "version": "0.1.0", "githubRepo": "you/my-tweak", "description": "我写的第一个 Codex++ Tweak", "scope": "renderer" }

⚠️ 注意:id只能包含字母、数字、点、下划线和短横线;githubRepo必须是owner/repo格式,否则校验会失败。这些规则实现在 packages/sdk/src/index.ts 的validateTweakManifest()中。

3. 编写 index.js:注册你的第一个设置页

入口脚本默认导出{ start(api), stop() }。对于 renderer 插件,最常用的 API 是api.settings.registerPage()——它会给你的 Tweak 注册一个独立的设置页,侧边栏出现专属入口:

module.exports = { start(api) { api.settings.registerPage({ id: "main", title: "My First Tweak", description: "我的第一个设置页", render(root) { root.innerHTML = ""; const count = api.storage.get("count", 0) + 1; api.storage.set("count", count); const btn = document.createElement("button"); btn.textContent = `你打开了设置页 ${count} 次`; btn.className = "h-token-button-composer rounded-md px-3 text-sm font-medium " + "bg-token-charts-red/10 text-token-charts-red hover:bg-token-charts-red/20 cursor-interaction"; btn.onclick = () => api.log.info("按钮被点击了"); const tip = document.createElement("p"); tip.textContent = "这是来自 Codex++ Tweak 的自定义 UI。"; root.append(btn, tip); }, }); api.log.info("tweak started"); }, stop() { // 清理定时器、事件监听器等(热重载时 stop() 会被调用,保持幂等) }, };

常用api能力一览(完整类型见 packages/sdk/src/index.ts):

  • 📝api.log.info(...)— 输出到日志文件和 DevTools 控制台
  • 💾api.storage.get/set/delete— 按插件 ID 隔离的持久化 KV 存储
  • ⚙️api.settings.register()— 注册设置行(小功能用),registerPage()— 注册独立设置页(大功能用)
  • 🧲api.react.waitForElement(selector)— 等待 Codex 页面元素出现,适合做 UI 注入
  • 📡api.ipc.invoke/handle— renderer 与 main 进程通信(需要scope: "both"

UI 风格小贴士:不要硬编码颜色和尺寸,使用 Codex 自带的 Tailwind token(如text-token-text-primarybg-token-foreground/5),让插件 UI 与原生气质保持一致。现成的组件片段(开关、卡片、行布局)都写在 tweaks/AGENTS.md 里,直接复制即可。

4. 验证、加载与调试

第 1 步:本地校验 manifest

codexplusplus validate-tweak ~/tweaks/my-tweak

第 2 步:放入目录并热重载

Codex++ 会监视你的 tweak 文件夹,保存即热重载start()会被重新调用——所以不用自己写文件监视逻辑。

第 3 步:调试

  • 打开 DevTools(View 菜单或 Codex 命令面板),控制台过滤[codex-plusplus]
  • 主进程报错看<user-data-dir>/log/main.log
  • 安装/完整性问题运行codexplusplus doctor
  • 想直接探测 Codex 的 DOM?开发时设置环境变量CODEXPP_REMOTE_DEBUG=1启动 Codex,即可通过 Chrome DevTools Protocol 从外部执行 JS(开关在 packages/runtime/src/main.ts)

5. 进阶:用 TypeScript + SDK 编写

想要类型提示?安装官方 SDK 后导入defineTweak

import { defineTweak } from "@codex-plusplus/sdk"; export default defineTweak({ start(api) { // api 有完整类型提示 }, stop() {}, });

注意:runtime 不会转译 TS,需自行打包成 JS 后再放入 tweaks 目录。SDK 源码在 packages/sdk/,包含TweakManifestTweakApiSettingsPage等全部类型定义。

常见问题清单

问题解决方法
Tweaks 列表看不到插件检查目录是否正确、manifest 是否通过validate-tweak
报 "scope must be one of..."scope只接受renderer/main/both
UI 点击无反应确认scoperendererbothapi.settings只在渲染进程可用
热重载后 DOM 残留stop()中清理你添加的 DOM 节点和监听器

📚 更多参考:docs/WRITING-TWEAKS.md(API 全解)、docs/ARCHITECTURE.md(架构细节)、docs/TROUBLESHOOTING.md(排错指南)、store/index.json(官方商店插件清单)。

现在,打开编辑器,10 分钟后你就拥有自己的第一个 Codex++ Tweak 了!

【免费下载链接】codex-plusplusCodex++ tweak system for the Codex desktop app项目地址: https://gitcode.com/gh_mirrors/co/codex-plusplus

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 11:01:01

Qlib快速上手指南:如何搭一套AI量化研究全流程

Qlib快速上手指南&#xff1a;如何搭一套AI量化研究全流程 【免费下载链接】qlib Qlib is an AI-oriented Quant investment platform that aims to use AI tech to empower Quant Research, from exploring ideas to implementing productions. Qlib supports diverse ML mode…

作者头像 李华
网站建设 2026/9/1 10:58:52

5.8 C++实战100例——vector::data() 在 empty 时解引用

5.8 C++实战100例——vector::data() 在 empty 时解引用 用 -D_GLIBCXX_DEBUG 捕获空指针访问、-fsanitize=address 检测越界读取,锁定 data() 返回空指针后的非法解引用点 一:总纲和5篇免费文章分流 C++ 踩坑排雷手册 总纲目录与逻辑索引 1.1 构造完成前对象不存在:构造…

作者头像 李华
网站建设 2026/9/1 10:56:02

3步装好微信防撤回:RevokeMsgPatcher 快速指南

3步装好微信防撤回&#xff1a;RevokeMsgPatcher 快速指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitcode.com/GitHu…

作者头像 李华
网站建设 2026/9/1 10:55:14

PMSM无感FOC滑模观测器原理与dsPIC33EP移植实现

简介&#xff1a;Microchip官方AN1078应用笔记配套的dsPIC33EP256MC506滑模控制源代码包&#xff0c;主题聚焦滑模观测器与无位置传感器永磁同步电机控制。对电机驱动、伺服系统开发者而言&#xff0c;资料包含完整的MPLAB工程与算法实现&#xff0c;可在官方MCLV-2低压控制板上…

作者头像 李华
网站建设 2026/9/1 10:53:41

CE 6.4.3“加强版”压缩包风险解析:内存调试工具的正确打开方式

简介&#xff1a;面向游戏修改与逆向学习者的 CE_6.4.3_风叶人加强版压缩包&#xff0c;基于 Cheat Engine 6.4.3 增强优化&#xff0c;提供内存扫描、数据表、Lua 脚本扩展及调试器功能&#xff0c;可帮助定位并修改游戏进程中的关键数据&#xff0c;分析程序执行流程。包内共…

作者头像 李华
网站建设 2026/9/1 10:49:50

Text Generation Web UI 本地部署与推理后端选型实战

Text Generation Web UI 本地部署与推理后端选型实战 【免费下载链接】textgen Open-source desktop app for local LLMs. Text, vision, tool-calling, OpenAI/Anthropic-compatible API. 100% private. 项目地址: https://gitcode.com/GitHub_Trending/te/textgen Tex…

作者头像 李华