فهرست منبع

Fix read and write operations when LLM asks for absolute path (#126)

* fix resolution of filepaths

* fix imports

* Update write.py
Robert Brennan 2 سال پیش
والد
کامیت
8a64d7c912
3فایلهای تغییر یافته به همراه16 افزوده شده و 6 حذف شده
  1. 2 2
      opendevin/lib/actions/read.py
  2. 10 0
      opendevin/lib/actions/util.py
  3. 4 4
      opendevin/lib/actions/write.py

+ 2 - 2
opendevin/lib/actions/read.py

@@ -1,7 +1,7 @@
-import os
+from .util import resolve_path
 
 def read(base_path, file_path):
-    file_path = os.path.join(base_path, file_path)
+    file_path = resolve_path(base_path, file_path)
     with open(file_path, 'r') as file:
         return file.read()
 

+ 10 - 0
opendevin/lib/actions/util.py

@@ -0,0 +1,10 @@
+import os
+
+# This is the path where the workspace is mounted in the container
+# The LLM sometimes returns paths with this prefix, so we need to remove it
+PATH_PREFIX = "/workspace/"
+
+def resolve_path(base_path, file_path):
+    if file_path.startswith(PATH_PREFIX):
+        file_path = file_path[len(PATH_PREFIX):]
+    return os.path.join(base_path, file_path)

+ 4 - 4
opendevin/lib/actions/write.py

@@ -1,8 +1,8 @@
-import os
+from .util import resolve_path
 
-def write(base_path, path, contents):
-    path = os.path.join(base_path, path)
-    with open(path, 'w') as file:
+def write(base_path, file_path, contents):
+    file_path = resolve_path(base_path, file_path)
+    with open(file_path, 'w') as file:
         file.write(contents)
     return ""