codexmate 0.0.29 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +363 -421
  2. package/README.zh.md +371 -354
  3. package/cli/agents-files.js +224 -224
  4. package/cli/archive-helpers.js +446 -446
  5. package/cli/auth-profiles.js +375 -375
  6. package/cli/builtin-proxy.js +1725 -1725
  7. package/cli/claude-proxy.js +1022 -1022
  8. package/cli/config-bootstrap.js +402 -384
  9. package/cli/config-health.js +454 -338
  10. package/cli/doctor-core.js +903 -903
  11. package/cli/import-skills-url.js +356 -356
  12. package/cli/local-bridge.js +324 -0
  13. package/cli/openai-bridge.js +1653 -1576
  14. package/cli/openclaw-config.js +629 -629
  15. package/cli/session-convert-args.js +69 -65
  16. package/cli/session-convert-io.js +82 -82
  17. package/cli/session-convert.js +150 -43
  18. package/cli/session-usage.concurrent.js +28 -28
  19. package/cli/session-usage.js +118 -118
  20. package/cli/session-usage.models.js +176 -176
  21. package/cli/skills.js +1141 -1141
  22. package/cli/zip-commands.js +510 -510
  23. package/cli.js +15778 -15340
  24. package/lib/automation.js +404 -404
  25. package/lib/cli-file-utils.js +151 -151
  26. package/lib/cli-models-utils.js +440 -440
  27. package/lib/cli-network-utils.js +190 -190
  28. package/lib/cli-path-utils.js +85 -85
  29. package/lib/cli-session-utils.js +121 -121
  30. package/lib/cli-sessions.js +417 -417
  31. package/lib/cli-utils.js +155 -155
  32. package/lib/cli-webhook.js +126 -126
  33. package/lib/download-artifacts.js +92 -92
  34. package/lib/mcp-stdio.js +453 -453
  35. package/lib/task-orchestrator.js +869 -869
  36. package/lib/text-diff.js +303 -303
  37. package/lib/workflow-engine.js +340 -340
  38. package/package.json +76 -76
  39. package/plugins/README.md +20 -20
  40. package/plugins/README.zh-CN.md +20 -20
  41. package/plugins/prompt-templates/comment-polish/index.mjs +25 -25
  42. package/plugins/prompt-templates/computed.mjs +253 -253
  43. package/plugins/prompt-templates/index.mjs +8 -8
  44. package/plugins/prompt-templates/manifest.mjs +15 -15
  45. package/plugins/prompt-templates/methods.mjs +553 -553
  46. package/plugins/prompt-templates/overview.mjs +91 -91
  47. package/plugins/prompt-templates/ownership.mjs +19 -19
  48. package/plugins/prompt-templates/rule-ack/index.mjs +21 -21
  49. package/plugins/prompt-templates/storage.mjs +64 -64
  50. package/plugins/registry.mjs +16 -16
  51. package/web-ui/app.js +646 -639
  52. package/web-ui/index.html +36 -36
  53. package/web-ui/logic.agents-diff.mjs +386 -386
  54. package/web-ui/logic.claude.mjs +168 -168
  55. package/web-ui/logic.codex.mjs +69 -69
  56. package/web-ui/logic.mjs +5 -5
  57. package/web-ui/logic.runtime.mjs +128 -128
  58. package/web-ui/logic.session-convert.mjs +70 -70
  59. package/web-ui/logic.sessions.mjs +765 -765
  60. package/web-ui/modules/api.mjs +90 -90
  61. package/web-ui/modules/app.computed.dashboard.mjs +248 -225
  62. package/web-ui/modules/app.computed.index.mjs +17 -17
  63. package/web-ui/modules/app.computed.main-tabs.mjs +205 -205
  64. package/web-ui/modules/app.computed.session.mjs +999 -999
  65. package/web-ui/modules/app.constants.mjs +15 -15
  66. package/web-ui/modules/app.methods.agents.mjs +632 -632
  67. package/web-ui/modules/app.methods.claude-config.mjs +200 -200
  68. package/web-ui/modules/app.methods.codex-config.mjs +841 -892
  69. package/web-ui/modules/app.methods.index.mjs +94 -94
  70. package/web-ui/modules/app.methods.install.mjs +205 -205
  71. package/web-ui/modules/app.methods.navigation.mjs +774 -761
  72. package/web-ui/modules/app.methods.openclaw-core.mjs +814 -814
  73. package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -372
  74. package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -369
  75. package/web-ui/modules/app.methods.providers.mjs +529 -493
  76. package/web-ui/modules/app.methods.runtime.mjs +345 -345
  77. package/web-ui/modules/app.methods.session-actions.mjs +591 -593
  78. package/web-ui/modules/app.methods.session-browser.mjs +984 -984
  79. package/web-ui/modules/app.methods.session-timeline.mjs +479 -479
  80. package/web-ui/modules/app.methods.session-trash.mjs +438 -438
  81. package/web-ui/modules/app.methods.startup-claude.mjs +534 -533
  82. package/web-ui/modules/app.methods.task-orchestration.mjs +556 -556
  83. package/web-ui/modules/app.methods.webhook.mjs +79 -79
  84. package/web-ui/modules/config-mode.computed.mjs +124 -124
  85. package/web-ui/modules/config-template-confirm-pref.mjs +33 -33
  86. package/web-ui/modules/i18n.dict.mjs +3174 -3131
  87. package/web-ui/modules/i18n.mjs +62 -62
  88. package/web-ui/modules/plugins.computed.mjs +3 -3
  89. package/web-ui/modules/plugins.methods.mjs +3 -3
  90. package/web-ui/modules/plugins.storage.mjs +11 -11
  91. package/web-ui/modules/provider-url-display.mjs +17 -17
  92. package/web-ui/modules/sessions-filters-url.mjs +85 -85
  93. package/web-ui/modules/skills.computed.mjs +107 -107
  94. package/web-ui/modules/skills.methods.mjs +482 -481
  95. package/web-ui/partials/index/layout-footer.html +13 -13
  96. package/web-ui/partials/index/layout-header.html +500 -500
  97. package/web-ui/partials/index/modal-config-template-agents.html +174 -174
  98. package/web-ui/partials/index/modal-confirm-toast.html +32 -32
  99. package/web-ui/partials/index/modal-health-check.html +45 -45
  100. package/web-ui/partials/index/modal-openclaw-config.html +280 -280
  101. package/web-ui/partials/index/modal-skills.html +200 -200
  102. package/web-ui/partials/index/modals-basic.html +162 -162
  103. package/web-ui/partials/index/panel-config-claude.html +194 -194
  104. package/web-ui/partials/index/panel-config-codex.html +357 -323
  105. package/web-ui/partials/index/panel-config-codex.html.bak +337 -0
  106. package/web-ui/partials/index/panel-config-openclaw.html +83 -83
  107. package/web-ui/partials/index/panel-dashboard.html +219 -186
  108. package/web-ui/partials/index/panel-docs.html +147 -147
  109. package/web-ui/partials/index/panel-market.html +177 -177
  110. package/web-ui/partials/index/panel-orchestration.html +391 -391
  111. package/web-ui/partials/index/panel-plugins.html +253 -253
  112. package/web-ui/partials/index/panel-sessions.html +302 -316
  113. package/web-ui/partials/index/panel-settings.html +190 -190
  114. package/web-ui/partials/index/panel-trash.html +88 -88
  115. package/web-ui/partials/index/panel-usage.html +371 -371
  116. package/web-ui/res/json5.min.js +1 -1
  117. package/web-ui/res/vue.global.prod.js +13 -13
  118. package/web-ui/session-helpers.mjs +591 -576
  119. package/web-ui/source-bundle.cjs +233 -233
  120. package/web-ui/styles/base-theme.css +281 -281
  121. package/web-ui/styles/bridge-pool.css +197 -0
  122. package/web-ui/styles/controls-forms.css +422 -422
  123. package/web-ui/styles/dashboard.css +406 -274
  124. package/web-ui/styles/docs-panel.css +271 -271
  125. package/web-ui/styles/feedback.css +108 -108
  126. package/web-ui/styles/health-check-dialog.css +144 -144
  127. package/web-ui/styles/layout-shell.css +626 -626
  128. package/web-ui/styles/modals-core.css +466 -466
  129. package/web-ui/styles/navigation-panels.css +391 -391
  130. package/web-ui/styles/openclaw-structured.css +266 -266
  131. package/web-ui/styles/plugins-panel.css +564 -523
  132. package/web-ui/styles/responsive.css +454 -454
  133. package/web-ui/styles/sessions-list.css +417 -419
  134. package/web-ui/styles/sessions-preview.css +407 -411
  135. package/web-ui/styles/sessions-toolbar-trash.css +348 -330
  136. package/web-ui/styles/sessions-usage.css +1040 -1040
  137. package/web-ui/styles/settings-panel.css +349 -349
  138. package/web-ui/styles/skills-list.css +305 -303
  139. package/web-ui/styles/skills-market.css +429 -406
  140. package/web-ui/styles/task-orchestration.css +822 -822
  141. package/web-ui/styles/titles-cards.css +472 -472
  142. package/web-ui/styles/trash-panel.css +90 -90
  143. package/web-ui/styles/webhook.css +81 -81
  144. package/web-ui/styles.css +24 -23
  145. package/web-ui.html +17 -17
package/README.zh.md CHANGED
@@ -1,354 +1,371 @@
1
- <div align="center">
2
-
3
- <img src="site/.vitepress/public/images/logo.png" alt="Codex Mate logo" width="180" />
4
-
5
- # Codex Mate
6
-
7
- **一个面板管好所有本地 AI 编码工具 — 跨 Codex / Claude Code / OpenClaw 切 provider、管会话、改配置、编排任务。内置 OpenAI 兼容桥接、Usage 统计与提示词模板。纯本地,零上云。**
8
-
9
- [![Build](https://img.shields.io/github/actions/workflow/status/SakuraByteCore/codexmate/release.yml?label=build&style=flat)](https://github.com/SakuraByteCore/codexmate/actions/workflows/release.yml)
10
- [![Version](https://img.shields.io/npm/v/codexmate?label=version&style=flat)](https://www.npmjs.com/package/codexmate)
11
- [![Downloads](https://img.shields.io/npm/dt/codexmate?label=downloads&style=flat)](https://www.npmjs.com/package/codexmate)
12
- [![Node](https://img.shields.io/node/v/codexmate?label=Node.js&style=flat&logo=node.js&logoColor=white)](https://nodejs.org/)
13
- [![License](https://img.shields.io/npm/l/codexmate?label=license&style=flat)](LICENSE)
14
- [![Stars](https://img.shields.io/github/stars/SakuraByteCore/codexmate?label=stars&style=flat)](https://github.com/SakuraByteCore/codexmate/stargazers)
15
- [![Issues](https://img.shields.io/github/issues/SakuraByteCore/codexmate?label=issues&style=flat)](https://github.com/SakuraByteCore/codexmate/issues)
16
-
17
- [文档](https://sakurabytecore.github.io/codexmate/) · [快速开始](#快速开始) · [命令速查](#命令速查) · [Web 界面](#web-界面) · [MCP](#mcp) · [English](README.md)
18
-
19
- <br />
20
- <img src="site/.vitepress/public/images/readme-hero.png" alt="Codex Mate 界面预览" width="960" />
21
-
22
- </div>
23
-
24
- ---
25
-
26
- ## 这是什么?
27
-
28
- Codex Mate 提供一套本地优先的 CLI + Web UI,用于统一管理:
29
-
30
- - Codex provider / model 切换与配置写入
31
- - 面向 Codex Responses API 的 OpenAI 兼容桥接转换
32
- - Claude Code 配置方案(写入 `~/.claude/settings.json`)
33
- - Claude Code `CLAUDE.md` 编辑(写入 `~/.claude/CLAUDE.md`)
34
- - OpenClaw JSON5 配置与 Workspace `AGENTS.md`
35
- - Codex / Claude Code Skills 市场(安装目标切换、本地 skills 管理、跨应用导入、ZIP 分发)
36
- - Codex / Claude / Gemini CLI / CodeBuddy Code 本地会话浏览、筛选、导出、删除与 Usage 统计概览
37
- - 插件(提示词模板):模板复用、变量填写、一键复制
38
- - 任务编排:规划 / 排队 / 执行 / 回看
39
-
40
- 项目不依赖云端托管,配置写入你的本地文件,便于审计和回滚。Skills 市场同样坚持本地优先,只操作本地目录,不依赖远程在线市场。
41
-
42
- ## 功能对比
43
-
44
- | 维度 | Codex Mate | 手动维护配置 |
45
- | --- | --- | --- |
46
- | 多工具管理 | Codex + Claude Code + OpenClaw 统一入口 | 多文件、多目录分散修改 |
47
- | 使用方式 | CLI + 本地 Web UI | 纯手改 TOML / JSON / JSON5 |
48
- | 会话处理 | 支持浏览、筛选、Usage 统计、导出、批量清理 | 需要手动定位和处理文件 |
49
- | Skills 复用 | 本地 Skills 市场 + 跨应用导入 + ZIP 分发 | 目录手动复制,容易遗漏 |
50
- | 使用可见性 | 统一查看配置、会话、Usage 与运行状态 | 依赖手工翻文件和零散命令 |
51
- | 可回滚性 | 首次接管前自动备份 | 易误覆盖、回滚成本高 |
52
- | 自动化接入 | 提供 MCP stdio(默认只读) | 需自行封装脚本 |
53
-
54
- ## 核心特性
55
-
56
- **配置管理**
57
- - provider / model 切换(`switch` / `use`)
58
- - Codex `config.toml` 模板确认后写入
59
- - OpenAI 桥接 provider:将 Codex 写到本地 `/bridge/openai/<provider>/v1`,并为 OpenAI 兼容上游归一化 Responses API 请求
60
- - Claude Code 多配置方案管理与一键应用
61
- - Claude Code `CLAUDE.md` 编辑(写入 `~/.claude/CLAUDE.md`)
62
- - 分享命令前缀切换(`npm start` / `codexmate`),用于复制 provider / Claude 导入命令
63
- - OpenClaw JSON5 配置方案管理
64
-
65
- **会话管理**
66
- - 同页查看 Codex、Claude、Gemini CLI 与 CodeBuddy Code 会话
67
- - 会话来源与默认路径(本地优先,可通过环境变量覆盖):
68
- - Codex:`~/.codex/sessions/*.jsonl`(或 `$CODEX_HOME/sessions`、`$XDG_CONFIG_HOME/codex/sessions`)
69
- - Claude:`~/.claude/projects/**/**/*.jsonl`(或 `$CLAUDE_HOME/projects`、`$XDG_CONFIG_HOME/claude/projects`)
70
- - Gemini:`~/.gemini/tmp/*/chats/*.json`(或 `$GEMINI_HOME/tmp`、`$XDG_CONFIG_HOME/gemini/tmp`)
71
- - CodeBuddy:`~/.codebuddy/projects/**/**/*.jsonl`(或 `$CODEBUDDY_CODE_HOME_DIR/projects`)
72
- - 支持本地会话置顶,置顶状态持久化保存并优先排序显示
73
- - 关键词搜索、来源筛选、cwd/角色/时间筛选,并支持复制筛选链接
74
- - 复制恢复命令(Codex/Gemini/CodeBuddy):`codex resume <sessionId>` / `gemini -r <sessionId>` / `codebuddy -r <sessionId>`
75
- - 搜索体验优化:短周期结果缓存,避免输入时重复扫描
76
- - Usage 子页:近 7 / 30 天会话趋势、消息趋势、来源占比、高频路径
77
- - 会话导出 Markdown(Web UI + `codexmate export-session`,支持 `--session-id` 或 `--file`)
78
- - 会话与消息级删除(支持批量),并提供本地回收站用于恢复/彻底删除
79
- - 大会话预览优化(快速 tail 预览路径)
80
-
81
- **Skills 市场**
82
- - 在 Codex 与 Claude Code 之间切换 skills 安装目标
83
- - 查看本地已安装 skills、根目录与状态
84
- - 扫描 `Codex` / `Claude Code` / `Agents` 可导入来源
85
- - 支持跨应用导入、ZIP 导入 / 导出、批量删除
86
-
87
- **插件**
88
- - 提示词模板:本地保存/编辑/复用(支持变量)
89
- - 编写 → 填参 → 一键复制的工作流(模板数据保存在浏览器存储)
90
-
91
- **任务编排**
92
- - DAG 节点拆分与波次并发
93
- - 支持计划预览、执行、队列与运行详情
94
-
95
- **工程能力**
96
- - MCP stdio 能力(tools/resources/prompts)
97
- - 自动化钩子(`/hooks/*`)+ 外发 webhook 通知
98
- - Codex `/v1/responses` 的 OpenAI 桥接转换:优先尝试上游 `/responses`,必要时回退 `/chat/completions`,并归一化 function tools
99
- - Zip 压缩/解压(优先系统工具,失败回退 JS 库)
100
-
101
- ## 自动化(信号 行动)
102
-
103
- 运行 `codexmate run` 后,可接收外部 webhook 并转为任务队列:
104
-
105
- - 入口:`POST /hooks/<source>`(当前支持 `github`、`gitlab`)
106
- - 规则:`~/.codex/codexmate-automation.json`
107
- - 动作:`task.queue.add`(可选 `startQueue: true`)
108
- - 通知:`notifiers[]` 支持 `type: "webhook"`(适配 Slack/飞书等入站 webhook)
109
-
110
- ## 架构总览
111
-
112
- ### 一图看懂(从“做什么”到“产生什么效果”)
113
-
114
- ```mermaid
115
- flowchart LR
116
- subgraph You["你"]
117
- CLI["CLI 命令"]
118
- WEB["Web UI"]
119
- MCP["MCP 调用"]
120
- end
121
-
122
- subgraph Mate["Codex Mate(本地控制台)"]
123
- API["本地 HTTP API"]
124
- CFG["配置管理"]
125
- SESS["会话/Usage 管理"]
126
- SKL["Skills 管理"]
127
- PLG["插件:提示词模板"]
128
- end
129
-
130
- subgraph Files["只操作你的本地文件(可审计/可回滚)"]
131
- CODEX["~/.codex/*"]
132
- CLAUDE["~/.claude/settings.json + CLAUDE.md"]
133
- OPENCLAW["~/.openclaw/*.json5 + ~/.openclaw/openclaw.json + workspace/AGENTS.md"]
134
- SKILLS["~/.{codex,claude,agents}/skills"]
135
- SESSFILES["sessions / usage / trash / runs"]
136
- BROWSER["浏览器存储(模板)"]
137
- end
138
-
139
- CLI --> API
140
- WEB --> API
141
- MCP --> API
142
- WEB --> PLG
143
-
144
- API --> CFG
145
- API --> SESS
146
- API --> SKL
147
- PLG --> BROWSER
148
-
149
- CFG --> CODEX
150
- CFG --> CLAUDE
151
- CFG --> OPENCLAW
152
- SKL --> SKILLS
153
- SESS --> SESSFILES
154
- ```
155
-
156
- ### 能力 → 作用对象 → 用户收益(直观对照)
157
-
158
- | 能力 | 作用对象(本地) | 你能直接得到什么 |
159
- | --- | --- | --- |
160
- | 配置管理(Codex / Claude / OpenClaw) | `~/.codex/*`、`~/.claude/settings.json`、`~/.claude/CLAUDE.md`、`~/.openclaw/*` | 一键切换 provider/model、管理多套配置、写入前后可控与可回滚 |
161
- | 会话与 Usage | sessions / usage 聚合 / trash | 更快定位会话、筛选导出、批量清理、查看趋势与占比 |
162
- | Skills 市场 | `~/.{codex,claude,agents}/skills` | 本地安装/导入/导出/分发(ZIP),跨应用复用更省事 |
163
- | 插件(提示词模板) | 浏览器存储 | 可复用的提示词模板(变量 + 一键复制) |
164
- | MCP(stdio) | 本地 API / 文件能力 | 让外部工具以“可控权限”调用本地能力(默认只读) |
165
-
166
- ## 快速开始
167
-
168
- ### npm 全局安装
169
-
170
- ```bash
171
- npm install -g codexmate
172
- codexmate setup
173
- codexmate status
174
- codexmate run
175
- ```
176
-
177
- 默认监听 `0.0.0.0:3737`,支持局域网访问,并尝试自动打开浏览器。
178
-
179
- > 安全提示:默认监听会在当前局域网暴露未鉴权的管理界面。若包含 API Key、provider 配置或 skills 管理,请仅在可信网络中使用;如需仅本机访问,可设置 `CODEXMATE_HOST=127.0.0.1` 或启动时传入 `--host 127.0.0.1`。
180
-
181
- ### 安装 Codex CLI / Claude Code / Gemini CLI / CodeBuddy Code(可选)
182
-
183
- Codex Mate 支持透传调用官方 CLI(例如 `codexmate codex ...`),建议先安装:
184
-
185
- ```bash
186
- # Codex CLI(默认)
187
- npm install -g @openai/codex
188
-
189
- # Termux(Android)上的 Codex CLI
190
- npm install -g @mmmbuto/codex-cli-termux@latest
191
-
192
- # Claude Code
193
- npm install -g @anthropic-ai/claude-code
194
-
195
- # Gemini CLI
196
- npm install -g @google/gemini-cli
197
-
198
- # CodeBuddy Code
199
- npm install -g @tencent-ai/codebuddy-code
200
- ```
201
-
202
- ### 从源码运行
203
-
204
- ```bash
205
- git clone https://github.com/SakuraByteCore/codexmate.git
206
- cd codexmate
207
- npm install
208
- npm start run
209
- ```
210
-
211
- ### 测试 / CI(只启动服务)
212
-
213
- ```bash
214
- npm start run --no-browser
215
- ```
216
-
217
- > 约定:自动化测试仅验证服务与 API,不依赖打开页面。
218
-
219
- ### 开发辅助脚本
220
-
221
- ```bash
222
- npm run reset
223
- npm run reset 79
224
- ```
225
-
226
- - `npm run reset`:直接重置到默认 `origin/main`
227
- - `npm run reset 79`:直接同步到 PR `#79` 的最新 head 快照
228
- - 脚本会自动完成本地分支切换、工作区清理、未跟踪文件清理与最终状态校验
229
-
230
- ## 命令速查
231
-
232
- | 命令 | 说明 |
233
- | --- | --- |
234
- | `codexmate status` | 查看当前配置状态 |
235
- | `codexmate setup` | 交互式初始化 |
236
- | `codexmate list` / `codexmate models` | 查看提供商 / 模型 |
237
- | `codexmate switch <provider>` / `codexmate use <model>` | 切换 provider / model |
238
- | `codexmate add <name> <URL> [API_KEY] [--bridge openai]` | 添加提供商;`--bridge openai` 会为 OpenAI 风格上游创建本地 Codex Responses 兼容桥接 |
239
- | `codexmate delete <name>` | 删除提供商 |
240
- | `codexmate claude <BaseURL> <API_KEY> [model]` | 写入 Claude Code 配置 |
241
- | `codexmate workflow <list\|get\|validate\|run\|runs>` | MCP 工作流管理 |
242
- | `codexmate codex [args...] [--follow-up <文本> 可重复]` | Codex CLI 透传入口(默认补 `--yolo`,可追加 queued follow-up) |
243
- | `codexmate qwen [args...]` | Qwen CLI 透传入口 |
244
- | `codexmate run [--host <HOST>] [--no-browser]` | 启动 Web UI |
245
- | `codexmate mcp serve [--read-only\|--allow-write]` | 启动 MCP stdio 服务 |
246
- | `codexmate export-session --source <codex\|claude\|gemini\|codebuddy> ...` | 导出会话为 Markdown |
247
- | `codexmate zip <path> [--max:0-9]` / `codexmate unzip <zip> [out]` | 压缩 / 解压 |
248
- | `codexmate unzip-ext <zip-dir> [out] [--ext:suffix[,suffix...]] [--no-recursive]` | 批量提取目录下 ZIP 内指定后缀文件(默认 `.json`,默认递归) |
249
-
250
- ### Codex follow-up 追加(可选)
251
-
252
- ```bash
253
- codexmate codex --follow-up "先扫描项目" --follow-up "再修复失败测试"
254
- codexmate codex --model gpt-5.3-codex --follow-up "步骤1" --follow-up "步骤2"
255
- ```
256
-
257
- > 说明:`--follow-up` / `--queued-follow-up` 都可用,支持重复。
258
-
259
- ## Web 界面
260
-
261
- ### Codex 配置模式
262
- - provider / model 切换
263
- - 模型管理
264
- - OpenAI 桥接 provider:将 Codex Responses API 转换给 OpenAI 兼容上游
265
- - `~/.codex/AGENTS.md` 编辑
266
-
267
- ### Claude Code 配置模式
268
- - 多配置方案管理
269
- - 默认写入 `~/.claude/settings.json`
270
- - `~/.claude/CLAUDE.md` 编辑
271
- - 支持复制分享导入命令
272
-
273
- ### OpenClaw 配置模式
274
- - JSON5 多方案管理
275
- - 应用到 `~/.openclaw/openclaw.json`
276
- - 管理 `~/.openclaw/workspace/AGENTS.md`
277
-
278
- ### Plugins 模式(提示词模板)
279
- - 入口:顶部切到 **Plugins** **提示词模板**
280
- - 支持管理自定义模板(导入/导出 JSON)
281
- - 变量管理:在 **管理** 中可“新增变量”(插入 `{{var}}`),并在 Variables 区填写变量值
282
- - 生成与复制:变量填写后可在 **Preview** 里一键复制最终提示词
283
- - 内置模板:仅提供一个“代码注释润色”,只读不可编辑
284
-
285
- ### 会话模式
286
- - Codex + Claude 会话统一列表
287
- - Browser / Usage 双子视图切换
288
- - 支持本地会话置顶、持久化保存与置顶优先排序
289
- - 搜索、筛选、导出、删除、批量清理
290
- - Usage 视图提供近 7 天 / 近 30 天会话趋势、消息趋势、来源占比与高频路径统计
291
- - 费用估算当前只统计可识别模型单价的非 Claude 会话
292
-
293
- ### Skills 市场标签页
294
- - 在 `Codex` 与 `Claude Code` 之间切换 skills 安装目标
295
- - 展示当前目标的本地 skills 根目录、已安装项和可导入项
296
- - 扫描 `Codex` / `Claude Code` / `Agents` 目录中的可导入来源
297
- - 支持跨应用导入、ZIP 导入 / 导出、批量删除
298
-
299
- ### 设置标签页
300
- - 支持切换分享命令前缀:`npm start` / `codexmate`
301
- - 影响 Web UI 中复制出来的 provider 分享命令与 Claude 导入命令
302
-
303
- ## MCP
304
-
305
- > 传输:`stdio`
306
-
307
- - 传输:仅 `stdio`
308
- - 默认:只读工具集
309
- - 写入开启:`--allow-write` 或 `CODEXMATE_MCP_ALLOW_WRITE=1`
310
- - 包含域:`tools`、`resources`、`prompts`
311
-
312
- 示例:
313
-
314
- ```bash
315
- codexmate mcp serve --read-only
316
- codexmate mcp serve --allow-write
317
- ```
318
-
319
- ## 配置文件
320
-
321
- - `~/.codex/config.toml`
322
- - `~/.codex/auth.json`
323
- - `~/.codex/models.json`
324
- - `~/.codex/provider-current-models.json`
325
- - `~/.codex/codexmate-openai-bridge.json`
326
- - `~/.claude/settings.json`
327
- - `~/.claude/CLAUDE.md`
328
- - `~/.openclaw/openclaw.json`
329
- - `~/.openclaw/workspace/AGENTS.md`
330
-
331
- ## 环境变量
332
-
333
- | 变量 | 默认值 | 说明 |
334
- | --- | --- | --- |
335
- | `CODEXMATE_PORT` | `3737` | Web 服务端口 |
336
- | `CODEXMATE_HOST` | `0.0.0.0` | Web 服务监听地址(如需仅本机访问,显式设为 `127.0.0.1`) |
337
- | `CODEXMATE_NO_BROWSER` | 未设置 | 设为 `1` 后不自动打开浏览器 |
338
- | `CODEXMATE_MCP_ALLOW_WRITE` | 未设置 | 设为 `1` 后默认允许 MCP 写工具 |
339
- | `CODEXMATE_FORCE_RESET_EXISTING_CONFIG` | `0` | 设为 `1` 时首次可强制重建托管配置 |
340
-
341
- ## 技术栈
342
-
343
- - Node.js
344
- - Vue.js 3(Web UI)
345
- - 原生 HTTP Server
346
- - `@iarna/toml`、`json5`
347
-
348
- ## 参与贡献
349
-
350
- Issue Pull Request 可按需提交。
351
-
352
- ## License
353
-
354
- Apache-2.0
1
+ <div align="center">
2
+
3
+ <img src="site/.vitepress/public/images/logo.png" alt="Codex Mate logo" width="180" />
4
+
5
+ # Codex Mate
6
+
7
+ **一个面板管好所有本地 AI 编码工具 — 跨 Codex / Claude Code / OpenClaw 切 provider、管会话、改配置、编排任务。内置 OpenAI 兼容桥接、Usage 统计与提示词模板。纯本地,零上云。**
8
+
9
+ [![Version](https://img.shields.io/npm/v/codexmate?label=version&style=flat)](https://www.npmjs.com/package/codexmate)
10
+ [![Build](https://img.shields.io/github/actions/workflow/status/SakuraByteCore/codexmate/release.yml?label=build&style=flat)](https://github.com/SakuraByteCore/codexmate/actions/workflows/release.yml)
11
+ [![Downloads](https://img.shields.io/npm/dt/codexmate?label=downloads&style=flat)](https://www.npmjs.com/package/codexmate)
12
+ [![Install](https://img.shields.io/badge/install-curl%20%7C%20npm-0A0?style=flat)](#curl-一键安装独立包无需-npm)
13
+ [![Platform](https://img.shields.io/badge/platform-Termux%20%7C%20Linux%20%7C%20macOS%20%7C%20Windows-555?style=flat)](#快速开始)
14
+ [![Node](https://img.shields.io/node/v/codexmate?label=Node.js&style=flat&logo=node.js&logoColor=white)](https://nodejs.org/)
15
+ [![License](https://img.shields.io/npm/l/codexmate?label=license&style=flat)](LICENSE)
16
+ [![Stars](https://img.shields.io/github/stars/SakuraByteCore/codexmate?label=stars&style=flat)](https://github.com/SakuraByteCore/codexmate/stargazers)
17
+ [![Issues](https://img.shields.io/github/issues/SakuraByteCore/codexmate?label=issues&style=flat)](https://github.com/SakuraByteCore/codexmate/issues)
18
+
19
+ [文档](https://sakurabytecore.github.io/codexmate/) · [快速开始](#快速开始) · [命令速查](#命令速查) · [Web 界面](#web-界面) · [MCP](#mcp) · [English](README.md)
20
+
21
+ <br />
22
+ <img src="site/.vitepress/public/images/readme-hero.png" alt="Codex Mate 界面预览" width="960" />
23
+
24
+ </div>
25
+
26
+ ---
27
+
28
+ ## 这是什么?
29
+
30
+ Codex Mate 提供一套本地优先的 CLI + Web UI,用于统一管理:
31
+
32
+ - Codex provider / model 切换与配置写入
33
+ - 面向 Codex Responses API 的 OpenAI 兼容桥接转换
34
+ - Claude Code 配置方案(写入 `~/.claude/settings.json`)
35
+ - Claude Code `CLAUDE.md` 编辑(写入 `~/.claude/CLAUDE.md`)
36
+ - OpenClaw JSON5 配置与 Workspace `AGENTS.md`
37
+ - Codex / Claude Code Skills 市场(安装目标切换、本地 skills 管理、跨应用导入、ZIP 分发)
38
+ - Codex / Claude / Gemini CLI / CodeBuddy Code 本地会话浏览、筛选、导出、删除与 Usage 统计概览
39
+ - 插件(提示词模板):模板复用、变量填写、一键复制
40
+ - 任务编排:规划 / 排队 / 执行 / 回看
41
+
42
+ 项目不依赖云端托管,配置写入你的本地文件,便于审计和回滚。Skills 市场同样坚持本地优先,只操作本地目录,不依赖远程在线市场。
43
+
44
+ ## 功能对比
45
+
46
+ | 维度 | Codex Mate | 手动维护配置 |
47
+ | --- | --- | --- |
48
+ | 多工具管理 | Codex + Claude Code + OpenClaw 统一入口 | 多文件、多目录分散修改 |
49
+ | 使用方式 | CLI + 本地 Web UI | 纯手改 TOML / JSON / JSON5 |
50
+ | 会话处理 | 支持浏览、筛选、Usage 统计、导出、批量清理 | 需要手动定位和处理文件 |
51
+ | Skills 复用 | 本地 Skills 市场 + 跨应用导入 + ZIP 分发 | 目录手动复制,容易遗漏 |
52
+ | 使用可见性 | 统一查看配置、会话、Usage 与运行状态 | 依赖手工翻文件和零散命令 |
53
+ | 可回滚性 | 首次接管前自动备份 | 易误覆盖、回滚成本高 |
54
+ | 自动化接入 | 提供 MCP stdio(默认只读) | 需自行封装脚本 |
55
+
56
+ ## 核心特性
57
+
58
+ **配置管理**
59
+ - provider / model 切换(`switch` / `use`)
60
+ - Codex `config.toml` 模板确认后写入
61
+ - OpenAI 桥接 provider:将 Codex 写到本地 `/bridge/openai/<provider>/v1`,并为 OpenAI 兼容上游归一化 Responses API 请求
62
+ - Claude Code 多配置方案管理与一键应用
63
+ - Claude Code `CLAUDE.md` 编辑(写入 `~/.claude/CLAUDE.md`)
64
+ - 分享命令前缀切换(`npm start` / `codexmate`),用于复制 provider / Claude 导入命令
65
+ - OpenClaw JSON5 配置方案管理
66
+
67
+ **会话管理**
68
+ - 同页查看 Codex、Claude、Gemini CLI 与 CodeBuddy Code 会话
69
+ - 会话来源与默认路径(本地优先,可通过环境变量覆盖):
70
+ - Codex:`~/.codex/sessions/*.jsonl`(或 `$CODEX_HOME/sessions`、`$XDG_CONFIG_HOME/codex/sessions`)
71
+ - Claude:`~/.claude/projects/**/**/*.jsonl`(或 `$CLAUDE_HOME/projects`、`$XDG_CONFIG_HOME/claude/projects`)
72
+ - Gemini:`~/.gemini/tmp/*/chats/*.json`(或 `$GEMINI_HOME/tmp`、`$XDG_CONFIG_HOME/gemini/tmp`)
73
+ - CodeBuddy:`~/.codebuddy/projects/**/**/*.jsonl`(或 `$CODEBUDDY_CODE_HOME_DIR/projects`)
74
+ - 支持本地会话置顶,置顶状态持久化保存并优先排序显示
75
+ - 关键词搜索、来源筛选、cwd/角色/时间筛选,并支持复制筛选链接
76
+ - 复制恢复命令(Codex/Gemini/CodeBuddy):`codex resume <sessionId>` / `gemini -r <sessionId>` / `codebuddy -r <sessionId>`
77
+ - 搜索体验优化:短周期结果缓存,避免输入时重复扫描
78
+ - Usage 子页:近 7 天 / 近 30 天会话趋势、消息趋势、来源占比、高频路径
79
+ - 会话导出 Markdown(Web UI + `codexmate export-session`,支持 `--session-id` 或 `--file`)
80
+ - 会话与消息级删除(支持批量),并提供本地回收站用于恢复/彻底删除
81
+ - 大会话预览优化(快速 tail 预览路径)
82
+
83
+ **Skills 市场**
84
+ - Codex Claude Code 之间切换 skills 安装目标
85
+ - 查看本地已安装 skills、根目录与状态
86
+ - 扫描 `Codex` / `Claude Code` / `Agents` 可导入来源
87
+ - 支持跨应用导入、ZIP 导入 / 导出、批量删除
88
+
89
+ **插件**
90
+ - 提示词模板:本地保存/编辑/复用(支持变量)
91
+ - 编写 → 填参 → 一键复制的工作流(模板数据保存在浏览器存储)
92
+
93
+ **任务编排**
94
+ - DAG 节点拆分与波次并发
95
+ - 支持计划预览、执行、队列与运行详情
96
+
97
+ **工程能力**
98
+ - MCP stdio 能力(tools/resources/prompts)
99
+ - 自动化钩子(`/hooks/*`)+ 外发 webhook 通知
100
+ - Codex `/v1/responses` 的 OpenAI 桥接转换:优先尝试上游 `/responses`,必要时回退 `/chat/completions`,并归一化 function tools
101
+ - Zip 压缩/解压(优先系统工具,失败回退 JS 库)
102
+
103
+ ## 自动化(信号 行动)
104
+
105
+ 运行 `codexmate run` 后,可接收外部 webhook 并转为任务队列:
106
+
107
+ - 入口:`POST /hooks/<source>`(当前支持 `github`、`gitlab`)
108
+ - 规则:`~/.codex/codexmate-automation.json`
109
+ - 动作:`task.queue.add`(可选 `startQueue: true`)
110
+ - 通知:`notifiers[]` 支持 `type: "webhook"`(适配 Slack/飞书等入站 webhook)
111
+
112
+ ## 架构总览
113
+
114
+ ### 一图看懂(从“做什么”到“产生什么效果”)
115
+
116
+ ```mermaid
117
+ flowchart LR
118
+ subgraph You[""]
119
+ CLI["CLI 命令"]
120
+ WEB["Web UI"]
121
+ MCP["MCP 调用"]
122
+ end
123
+
124
+ subgraph Mate["Codex Mate(本地控制台)"]
125
+ API["本地 HTTP API"]
126
+ CFG["配置管理"]
127
+ SESS["会话/Usage 管理"]
128
+ SKL["Skills 管理"]
129
+ PLG["插件:提示词模板"]
130
+ end
131
+
132
+ subgraph Files["只操作你的本地文件(可审计/可回滚)"]
133
+ CODEX["~/.codex/*"]
134
+ CLAUDE["~/.claude/settings.json + CLAUDE.md"]
135
+ OPENCLAW["~/.openclaw/*.json5 + ~/.openclaw/openclaw.json + workspace/AGENTS.md"]
136
+ SKILLS["~/.{codex,claude,agents}/skills"]
137
+ SESSFILES["sessions / usage / trash / runs"]
138
+ BROWSER["浏览器存储(模板)"]
139
+ end
140
+
141
+ CLI --> API
142
+ WEB --> API
143
+ MCP --> API
144
+ WEB --> PLG
145
+
146
+ API --> CFG
147
+ API --> SESS
148
+ API --> SKL
149
+ PLG --> BROWSER
150
+
151
+ CFG --> CODEX
152
+ CFG --> CLAUDE
153
+ CFG --> OPENCLAW
154
+ SKL --> SKILLS
155
+ SESS --> SESSFILES
156
+ ```
157
+
158
+ ### 能力 作用对象 用户收益(直观对照)
159
+
160
+ | 能力 | 作用对象(本地) | 你能直接得到什么 |
161
+ | --- | --- | --- |
162
+ | 配置管理(Codex / Claude / OpenClaw) | `~/.codex/*`、`~/.claude/settings.json`、`~/.claude/CLAUDE.md`、`~/.openclaw/*` | 一键切换 provider/model、管理多套配置、写入前后可控与可回滚 |
163
+ | 会话与 Usage | sessions / usage 聚合 / trash | 更快定位会话、筛选导出、批量清理、查看趋势与占比 |
164
+ | Skills 市场 | `~/.{codex,claude,agents}/skills` | 本地安装/导入/导出/分发(ZIP),跨应用复用更省事 |
165
+ | 插件(提示词模板) | 浏览器存储 | 可复用的提示词模板(变量 + 一键复制) |
166
+ | MCP(stdio) | 本地 API / 文件能力 | 让外部工具以“可控权限”调用本地能力(默认只读) |
167
+
168
+ ## 快速开始
169
+
170
+ ### npm 全局安装
171
+
172
+ ```bash
173
+ npm install -g codexmate
174
+ codexmate setup
175
+ codexmate status
176
+ codexmate run
177
+ ```
178
+
179
+ 默认监听 `0.0.0.0:3737`,支持局域网访问,并尝试自动打开浏览器。
180
+
181
+ > 安全提示:默认监听会在当前局域网暴露未鉴权的管理界面。若包含 API Key、provider 配置或 skills 管理,请仅在可信网络中使用;如需仅本机访问,可设置 `CODEXMATE_HOST=127.0.0.1` 或启动时传入 `--host 127.0.0.1`。
182
+
183
+ ### curl 一键安装(独立包,无需 npm)
184
+
185
+ 下载包含 `node_modules` 的自包含安装包,不依赖 npm:
186
+
187
+ ```bash
188
+ curl -fsSL https://raw.githubusercontent.com/SakuraByteCore/codexmate/main/scripts/install.sh | bash
189
+ ```
190
+
191
+ 安装到 `~/.codexmate`,自动软链接到 `~/.local/bin/codexmate`,并添加 PATH。
192
+
193
+ | 变量 | 默认值 | 说明 |
194
+ | --- | --- | --- |
195
+ | `CODEXMATE_INSTALL_DIR` | `~/.codexmate` | 安装目录 |
196
+ | `CODEXMATE_BIN_DIR` | `~/.local/bin` | 软链接目录 |
197
+
198
+ ### 安装 Codex CLI / Claude Code / Gemini CLI / CodeBuddy Code(可选)
199
+
200
+ Codex Mate 支持透传调用官方 CLI(例如 `codexmate codex ...`),建议先安装:
201
+
202
+ ```bash
203
+ # Codex CLI(默认)
204
+ npm install -g @openai/codex
205
+
206
+ # Termux(Android)上的 Codex CLI
207
+ npm install -g @mmmbuto/codex-cli-termux@latest
208
+
209
+ # Claude Code
210
+ npm install -g @anthropic-ai/claude-code
211
+
212
+ # Gemini CLI
213
+ npm install -g @google/gemini-cli
214
+
215
+ # CodeBuddy Code
216
+ npm install -g @tencent-ai/codebuddy-code
217
+ ```
218
+
219
+ ### 从源码运行
220
+
221
+ ```bash
222
+ git clone https://github.com/SakuraByteCore/codexmate.git
223
+ cd codexmate
224
+ npm install
225
+ npm start run
226
+ ```
227
+
228
+ ### 测试 / CI(只启动服务)
229
+
230
+ ```bash
231
+ npm start run --no-browser
232
+ ```
233
+
234
+ > 约定:自动化测试仅验证服务与 API,不依赖打开页面。
235
+
236
+ ### 开发辅助脚本
237
+
238
+ ```bash
239
+ npm run reset
240
+ npm run reset 79
241
+ ```
242
+
243
+ - `npm run reset`:直接重置到默认 `origin/main`
244
+ - `npm run reset 79`:直接同步到 PR `#79` 的最新 head 快照
245
+ - 脚本会自动完成本地分支切换、工作区清理、未跟踪文件清理与最终状态校验
246
+
247
+ ## 命令速查
248
+
249
+ | 命令 | 说明 |
250
+ | --- | --- |
251
+ | `codexmate status` | 查看当前配置状态 |
252
+ | `codexmate setup` | 交互式初始化 |
253
+ | `codexmate list` / `codexmate models` | 查看提供商 / 模型 |
254
+ | `codexmate switch <provider>` / `codexmate use <model>` | 切换 provider / model |
255
+ | `codexmate add <name> <URL> [API_KEY] [--bridge openai]` | 添加提供商;`--bridge openai` 会为 OpenAI 风格上游创建本地 Codex Responses 兼容桥接 |
256
+ | `codexmate delete <name>` | 删除提供商 |
257
+ | `codexmate claude <BaseURL> <API_KEY> [model]` | 写入 Claude Code 配置 |
258
+ | `codexmate workflow <list\|get\|validate\|run\|runs>` | MCP 工作流管理 |
259
+ | `codexmate codex [args...] [--follow-up <文本> 可重复]` | Codex CLI 透传入口(默认补 `--yolo`,可追加 queued follow-up) |
260
+ | `codexmate qwen [args...]` | Qwen CLI 透传入口 |
261
+ | `codexmate run [--host <HOST>] [--no-browser]` | 启动 Web UI |
262
+ | `codexmate mcp serve [--read-only\|--allow-write]` | 启动 MCP stdio 服务 |
263
+ | `codexmate export-session --source <codex\|claude\|gemini\|codebuddy> ...` | 导出会话为 Markdown |
264
+ | `codexmate zip <path> [--max:0-9]` / `codexmate unzip <zip> [out]` | 压缩 / 解压 |
265
+ | `codexmate unzip-ext <zip-dir> [out] [--ext:suffix[,suffix...]] [--no-recursive]` | 批量提取目录下 ZIP 内指定后缀文件(默认 `.json`,默认递归) |
266
+
267
+ ### Codex follow-up 追加(可选)
268
+
269
+ ```bash
270
+ codexmate codex --follow-up "先扫描项目" --follow-up "再修复失败测试"
271
+ codexmate codex --model gpt-5.3-codex --follow-up "步骤1" --follow-up "步骤2"
272
+ ```
273
+
274
+ > 说明:`--follow-up` / `--queued-follow-up` 都可用,支持重复。
275
+
276
+ ## Web 界面
277
+
278
+ ### Codex 配置模式
279
+ - provider / model 切换
280
+ - 模型管理
281
+ - OpenAI 桥接 provider:将 Codex Responses API 转换给 OpenAI 兼容上游
282
+ - `~/.codex/AGENTS.md` 编辑
283
+
284
+ ### Claude Code 配置模式
285
+ - 多配置方案管理
286
+ - 默认写入 `~/.claude/settings.json`
287
+ - `~/.claude/CLAUDE.md` 编辑
288
+ - 支持复制分享导入命令
289
+
290
+ ### OpenClaw 配置模式
291
+ - JSON5 多方案管理
292
+ - 应用到 `~/.openclaw/openclaw.json`
293
+ - 管理 `~/.openclaw/workspace/AGENTS.md`
294
+
295
+ ### Plugins 模式(提示词模板)
296
+ - 入口:顶部切到 **Plugins** **提示词模板**
297
+ - 支持管理自定义模板(导入/导出 JSON)
298
+ - 变量管理:在 **管理** 中可“新增变量”(插入 `{{var}}`),并在 Variables 区填写变量值
299
+ - 生成与复制:变量填写后可在 **Preview** 里一键复制最终提示词
300
+ - 内置模板:仅提供一个“代码注释润色”,只读不可编辑
301
+
302
+ ### 会话模式
303
+ - Codex + Claude 会话统一列表
304
+ - Browser / Usage 双子视图切换
305
+ - 支持本地会话置顶、持久化保存与置顶优先排序
306
+ - 搜索、筛选、导出、删除、批量清理
307
+ - Usage 视图提供近 7 天 / 近 30 天会话趋势、消息趋势、来源占比与高频路径统计
308
+ - 费用估算当前只统计可识别模型单价的非 Claude 会话
309
+
310
+ ### Skills 市场标签页
311
+ - 在 `Codex` 与 `Claude Code` 之间切换 skills 安装目标
312
+ - 展示当前目标的本地 skills 根目录、已安装项和可导入项
313
+ - 扫描 `Codex` / `Claude Code` / `Agents` 目录中的可导入来源
314
+ - 支持跨应用导入、ZIP 导入 / 导出、批量删除
315
+
316
+ ### 设置标签页
317
+ - 支持切换分享命令前缀:`npm start` / `codexmate`
318
+ - 影响 Web UI 中复制出来的 provider 分享命令与 Claude 导入命令
319
+
320
+ ## MCP
321
+
322
+ > 传输:`stdio`
323
+
324
+ - 传输:仅 `stdio`
325
+ - 默认:只读工具集
326
+ - 写入开启:`--allow-write` 或 `CODEXMATE_MCP_ALLOW_WRITE=1`
327
+ - 包含域:`tools`、`resources`、`prompts`
328
+
329
+ 示例:
330
+
331
+ ```bash
332
+ codexmate mcp serve --read-only
333
+ codexmate mcp serve --allow-write
334
+ ```
335
+
336
+ ## 配置文件
337
+
338
+ - `~/.codex/config.toml`
339
+ - `~/.codex/auth.json`
340
+ - `~/.codex/models.json`
341
+ - `~/.codex/provider-current-models.json`
342
+ - `~/.codex/codexmate-openai-bridge.json`
343
+ - `~/.claude/settings.json`
344
+ - `~/.claude/CLAUDE.md`
345
+ - `~/.openclaw/openclaw.json`
346
+ - `~/.openclaw/workspace/AGENTS.md`
347
+
348
+ ## 环境变量
349
+
350
+ | 变量 | 默认值 | 说明 |
351
+ | --- | --- | --- |
352
+ | `CODEXMATE_PORT` | `3737` | Web 服务端口 |
353
+ | `CODEXMATE_HOST` | `0.0.0.0` | Web 服务监听地址(如需仅本机访问,显式设为 `127.0.0.1`) |
354
+ | `CODEXMATE_NO_BROWSER` | 未设置 | 设为 `1` 后不自动打开浏览器 |
355
+ | `CODEXMATE_MCP_ALLOW_WRITE` | 未设置 | 设为 `1` 后默认允许 MCP 写工具 |
356
+ | `CODEXMATE_FORCE_RESET_EXISTING_CONFIG` | `0` | 设为 `1` 时首次可强制重建托管配置 |
357
+
358
+ ## 技术栈
359
+
360
+ - Node.js
361
+ - Vue.js 3(Web UI)
362
+ - 原生 HTTP Server
363
+ - `@iarna/toml`、`json5`
364
+
365
+ ## 参与贡献
366
+
367
+ Issue 与 Pull Request 可按需提交。
368
+
369
+ ## License
370
+
371
+ Apache-2.0