Răsfoiți Sursa

fix: only load the first local and global rule file (#1761)

Timo Clasen 6 luni în urmă
părinte
comite
23757f3ac0
1 a modificat fișierele cu 17 adăugiri și 6 ștergeri
  1. 17 6
      packages/opencode/src/session/system.ts

+ 17 - 6
packages/opencode/src/session/system.ts

@@ -54,24 +54,35 @@ export namespace SystemPrompt {
     ]
   }
 
-  const CUSTOM_FILES = [
+  const LOCAL_RULE_FILES = [
     "AGENTS.md",
     "CLAUDE.md",
     "CONTEXT.md", // deprecated
   ]
+  const GLOBAL_RULE_FILES = [
+    path.join(Global.Path.config, "AGENTS.md"),
+    path.join(os.homedir(), ".claude", "CLAUDE.md"),
+  ]
 
   export async function custom() {
     const { cwd, root } = App.info().path
     const config = await Config.get()
     const paths = new Set<string>()
 
-    for (const item of CUSTOM_FILES) {
-      const matches = await Filesystem.findUp(item, cwd, root)
-      matches.forEach((path) => paths.add(path))
+    for (const localRuleFile of LOCAL_RULE_FILES) {
+      const matches = await Filesystem.findUp(localRuleFile, cwd, root)
+      if (matches.length > 0) {
+        matches.forEach((path) => paths.add(path))
+        break
+      }
     }
 
-    paths.add(path.join(Global.Path.config, "AGENTS.md"))
-    paths.add(path.join(os.homedir(), ".claude", "CLAUDE.md"))
+    for (const globalRuleFile of GLOBAL_RULE_FILES) {
+      if (await Bun.file(globalRuleFile).exists()) {
+        paths.add(globalRuleFile)
+        break
+      }
+    }
 
     if (config.instructions) {
       for (let instruction of config.instructions) {