Closed ymli0215 closed 6 months ago
我测试了一下本地是可以的,看一下你的插件更新了没有。
有重新下載安裝 https://github.com/unit-mesh/auto-dev/releases/tag/v1.8.1
測試還是一樣的問題,customer_agent回傳下方內容
```devin
/write:len/test.java#L1-L12
\`\`\`java
public class Controller {
public void method() {
System.out.println("Hello, World!666");
}
}
\`\`\`
`` `
如果檔案存在,雖然會寫入檔案 但是會跳出chat panel
如果檔案不存在,就會報錯
com.intellij.openapi.diagnostic.RuntimeExceptionWithAttachments: Read access is allowed from inside read-action (see Application.runReadAction()); see https://jb.gg/ij-platform-threading for details
Current thread: Thread[DefaultDispatcher-worker-1,6,main] 1723949919 (EventQueue.isDispatchThread()=false)
SystemEventQueueThread: Thread[AWT-EventQueue-0,6,main] 863239784
at com.intellij.util.concurrency.ThreadingAssertions.createThreadAccessException(ThreadingAssertions.java:149)
at com.intellij.util.concurrency.ThreadingAssertions.softAssertReadAccess(ThreadingAssertions.java:107)
at com.intellij.openapi.application.impl.ApplicationImpl.assertReadAccessAllowed(ApplicationImpl.java:1012)
at com.intellij.psi.impl.source.PsiFileImpl.assertReadAccessAllowed(PsiFileImpl.java:182)
at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:186)
at com.intellij.psi.impl.source.PsiFileImpl.getTreeElement(PsiFileImpl.java:109)
at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:727)
at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:927)
at com.intellij.psi.impl.PsiFileFactoryImpl.trySetupPsiForFile(PsiFileFactoryImpl.java:110)
at com.intellij.psi.impl.PsiFileFactoryImpl.createFileFromText(PsiFileFactoryImpl.java:74)
at com.intellij.psi.impl.PsiFileFactoryImpl.createFileFromText(PsiFileFactoryImpl.java:59)
at com.intellij.psi.impl.PsiFileFactoryImpl.createFileFromText(PsiFileFactoryImpl.java:53)
at com.intellij.psi.impl.PsiFileFactoryImpl.createFileFromText(PsiFileFactoryImpl.java:47)
at cc.unitmesh.devti.language.psi.DevInFile$Companion.fromString(DevInFile.kt:28)
at cc.unitmesh.devti.language.run.flow.DevInsProcessProcessor.process(DevInsProcessProcessor.kt:61)
at cc.unitmesh.devti.language.run.DevInsProgramRunner$doExecute$1.runFinish(DevInsProgramRunner.kt:37)
at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:700)
at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:660)
at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:423)
at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:402)
at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1)
at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:461)
at jdk.proxy15/jdk.proxy15.$Proxy232.runFinish(Unknown Source)
at cc.unitmesh.devti.language.run.DevInsRunConfigurationProfileState$execute$1.processTerminated(DevInsRunConfigurationProfileState.kt:57)
at com.intellij.execution.process.ProcessHandler$2.processTerminated(ProcessHandler.java:259)
at com.intellij.execution.process.ProcessHandler.lambda$notifyTerminated$2(ProcessHandler.java:204)
at com.intellij.execution.process.ProcessHandler$TasksRunner.execute(ProcessHandler.java:322)
at com.intellij.execution.process.ProcessHandler.notifyTerminated(ProcessHandler.java:187)
at com.intellij.execution.process.ProcessHandler.notifyProcessTerminated(ProcessHandler.java:183)
at cc.unitmesh.devti.language.run.DevInsProcessHandler.detachProcessImpl(DevInsProcessHandler.kt:9)
at com.intellij.execution.process.ProcessHandler.lambda$detachProcess$1(ProcessHandler.java:140)
at com.intellij.execution.process.ProcessHandler$TasksRunner.execute(ProcessHandler.java:322)
at com.intellij.execution.process.ProcessHandler.detachProcess(ProcessHandler.java:137)
at cc.unitmesh.devti.language.run.DevInsRunConfigurationProfileState$agentRun$1$1.invokeSuspend(DevInsRunConfigurationProfileState.kt:152)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
奇怪,你用的是什么版本 => Intellij IDEA 版本?
IntelliJ IDEA 2023.3.6 Build #IU-233.15026.9
還是請問你用的是啥版本??
对,我这边测试完,好像还行。明天我试试用 233.3.6 的版本
IntelliJ IDEA 2024.1 (Ultimate Edition) Build #IU-241.14494.240, built on March 28, 2024
回報一下,剛剛下載IntelliJ IDEA 2024.1 Build #IU-241.14494.240 來測試
還是一樣的問題,透過custom_agent返回 /write 無法產生新檔案,並且要透過 `
devin ``` 包起來才能寫入
哦,哦,之前理解错了,agent 里只有返回 devin 代码块才能执行:https://ide.unitmesh.cc/devins/orchestration.html
相当于是一种额外执行的规则。
还有一种方式可以适应你的需求,在自定义 AI Agent 中新增:responseAction 为 DevIns,这样默认返回的就是可执行。
{
"name": "Internal API Market",
"url": "http://127.0.0.1:8765/api/agent/api-market",
"responseAction": "DevIns"
}
"responseAction": "DevIns" <- 之前有試過這個參數,但是會出現圖中的錯誤
忽略它直接執行,會變成不能呼叫custom agent
@ymli0215 这个功能还不支持,如果需要的话,可以加
responseAction 增加 DevIns 我後面再來許願
想要先處理好 agent 回應可以 /write 現在問題就是 https://github.com/unit-mesh/auto-dev/issues/144#issuecomment-2047618270 這邊所提到的情況
@ymli0215 我刚加完了。因为默认会联系对话,所以还是建议放在 ```devin 代码块中。
但是目前版本 我agent 回傳下方內容,他還是會聯繫對話,跳出chat來喔
`` `devin
/write:test.java#L1-L12
\`\`\`java
public class Controller {
public void method() {
System.out.println("Hello, World!666");
}
}
\`\`\`
`` `
@ymli0215 现在好像不能复现:
我整理一下第一個狀況 稍早已經安裝最新版本,支援DevIns @ IntelliJ IDEA 2023.3.6 Build #IU-233.15026.9
現在agent會回傳
`` `devin <- should be ```
/write:test.java#L1-L12
\`\`\`java
public class Controller {
public void method() {
System.out.println("Hello, World!666");
}
}
\`\`\`
`` ` <- should be ```
test.java有存在,可以正常寫入,但是會跳出chat panel以及報錯
error log
com.intellij.openapi.diagnostic.RuntimeExceptionWithAttachments: Read access is allowed from inside read-action (see Application.runReadAction()); see https://jb.gg/ij-platform-threading for details
Current thread: Thread[DefaultDispatcher-worker-9,6,main] 1987186713 (EventQueue.isDispatchThread()=false)
SystemEventQueueThread: Thread[AWT-EventQueue-0,6,main] 145111283
at com.intellij.util.concurrency.ThreadingAssertions.createThreadAccessException(ThreadingAssertions.java:149)
at com.intellij.util.concurrency.ThreadingAssertions.softAssertReadAccess(ThreadingAssertions.java:107)
at com.intellij.openapi.application.impl.ApplicationImpl.assertReadAccessAllowed(ApplicationImpl.java:1012)
at com.intellij.psi.impl.source.PsiFileImpl.assertReadAccessAllowed(PsiFileImpl.java:182)
at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:186)
at com.intellij.psi.impl.source.PsiFileImpl.getTreeElement(PsiFileImpl.java:109)
at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:727)
at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:927)
at com.intellij.psi.impl.PsiFileFactoryImpl.trySetupPsiForFile(PsiFileFactoryImpl.java:110)
at com.intellij.psi.impl.PsiFileFactoryImpl.createFileFromText(PsiFileFactoryImpl.java:74)
at com.intellij.psi.impl.PsiFileFactoryImpl.createFileFromText(PsiFileFactoryImpl.java:59)
at com.intellij.psi.impl.PsiFileFactoryImpl.createFileFromText(PsiFileFactoryImpl.java:53)
at com.intellij.psi.impl.PsiFileFactoryImpl.createFileFromText(PsiFileFactoryImpl.java:47)
at cc.unitmesh.devti.language.psi.DevInFile$Companion.fromString(DevInFile.kt:28)
如果返回的类型是 DevIns 的话,需要返回 /write 相关的部分就可以了。这个问题我来修一下,应该是和版本有关,create 的时候会有问题。
CI 上 https://github.com/unit-mesh/auto-dev/actions/runs/8642911598 可以下载到最新版本。
回報測試
不加入`
devin 可以如預期寫入內容到已存在檔案
那目前剩下最後一個問題,就是希望agent回傳的/write 可以建立新檔案 ( 可以建立新檔案是在.devin檔案中執行) 因為也沒有錯誤,沒辦法提供log
10 分钟前的,新版本也不行,理论上返回的是 DevIn 应该也可以创建新档案了?
怕我自己沒安裝好,再次重新下載安裝,問題還是一樣的
我覺得會不會是agent回去的處理,跑得跟 .devin不同?? 因此沒有建立出新檔案??
不好意思啊,之前处理的时候,有一个异步的数据接收没处理好。所以,拿到的 msg 是空的,就不执行了:
等 build 跑完应该 OK 了
我現在抓了新版,233 241都碰到一樣的問題,就是原本可以的都不行了,感覺就是回到我最初的問題
我回去整理一下,會拿之前幾個版本來測試看看,看看到底狀況是甚麼 確認後再來回報
要不重开一个新的? issue ?
已建立issue 這邊要close嗎?
@phodal
正在嘗試透過 custom agent 來做一些連續性的流程,是透過nodejs寫agent
上述的寫法,沒有辦法把內容寫到已存在的檔案,也無法產生新檔案
如果改為下方,就是透過
`
devin ``` 將 /write包起來,就可以把內容寫到已存在檔案內,但是依然不能產生新檔案下方是log內容,看起來也跟 #143有類似的問題