From 6953fce7c6194c6fcbca2d430311dc08dbc55747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E4=B8=AD=E6=B4=8B?= Date: Fri, 5 Jun 2026 20:46:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20config=20=E5=8A=A0=E8=BD=BD=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20zmo.json/zmo.jsonc=20=E6=96=87=E4=BB=B6=E5=90=8D?= =?UTF-8?q?=EF=BC=88=E4=BC=98=E5=85=88=E4=BA=8E=20opencode.*=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 全局配置加载、globalConfigFile、项目/.opencode 目录、managed 目录 均加入 zmo.json/zmo.jsonc 查找,优先级高于 opencode.* 兼容名。 用户可直接用 ~/.config/zmo/zmo.jsonc 配置。 Co-Authored-By: Claude Opus 4.7 --- packages/opencode/src/config/config.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index fcd2555cf..b3260488c 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -138,7 +138,7 @@ export class Service extends Context.Service()("@opencode/Co export const use = serviceUse(Service) function globalConfigFile() { - const candidates = ["opencode.jsonc", "opencode.json", "config.json"].map((file) => + const candidates = ["zmo.jsonc", "zmo.json", "opencode.jsonc", "opencode.json", "config.json"].map((file) => path.join(Global.Path.config, file), ) for (const file of candidates) { @@ -250,6 +250,8 @@ export const layer = Layer.effect( result = mergeConfig(result, yield* loadFile(path.join(Global.Path.config, "config.json"), env)) result = mergeConfig(result, yield* loadFile(path.join(Global.Path.config, "opencode.json"), env)) result = mergeConfig(result, yield* loadFile(path.join(Global.Path.config, "opencode.jsonc"), env)) + result = mergeConfig(result, yield* loadFile(path.join(Global.Path.config, "zmo.json"), env)) + result = mergeConfig(result, yield* loadFile(path.join(Global.Path.config, "zmo.jsonc"), env)) const legacy = path.join(Global.Path.config, "config") if (existsSync(legacy)) { @@ -414,7 +416,7 @@ export const layer = Layer.effect( for (const dir of directories) { if (dir.endsWith(".opencode") || dir === Flag.OPENCODE_CONFIG_DIR) { - for (const file of ["opencode.json", "opencode.jsonc"]) { + for (const file of ["zmo.json", "zmo.jsonc", "opencode.json", "opencode.jsonc"]) { const source = path.join(dir, file) log.debug(`loading config from ${source}`) yield* merge(source, yield* loadFile(source, authEnv)) @@ -509,7 +511,7 @@ export const layer = Layer.effect( const managedDir = ConfigManaged.managedConfigDir() if (existsSync(managedDir)) { - for (const file of ["opencode.json", "opencode.jsonc"]) { + for (const file of ["zmo.json", "zmo.jsonc", "opencode.json", "opencode.jsonc"]) { const source = path.join(managedDir, file) yield* merge(source, yield* loadFile(source), "global") }