agentscope-ai / agentscope-ai/agentscope-java
k8s沙箱WorkspaceManager.listKnowledgeFiles报错
- Linguagem predominante
- Java
- Estrelas
- 5.6k
- Forks
- 1.3k
- Merge médio
- 4d 12h
- PRs com merge (30d)
- 77
Descrição
# 版本
2.0.1
# 环境
window10 , Docker desktop + k8s + Agent Sandbox v0.5.4
# 问题描述
智能体对话过程中报异常:
`
java.nio.file.InvalidPathException: Illegal char <:> at index 25: Failed to execute command: [Errno 2] No such file or directory: 'cd'
at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:232)
at java.base/java.nio.file.Path.resolve(Path.java:515)
at io.agentscope.harness.agent.workspace.WorkspaceManager.listKnowledgeFiles(WorkspaceManager.java:327)
`
用debug模式进入listKnowledgeFiles方法内部,调用堆栈如下:
`
CommandExecutor.run(String,Duration)
KubernetesSandbox.doExec(RuntimeContext,String,int)
AbstractBaseSandbox.exec(RuntimeContext,String,Integer)
SandboxBackedFilesystem.execute(RuntimeContext,String,Integer)
BaseSandboxFilesystem.glob(RuntimeContext,String,String)
WorkspaceManager.listKnowledgeFiles(RuntimeContext)
WorkspaceContextMiddleware.buildKnowledgeBlock(RuntimeContext,String,Path)
WorkspaceContextMiddleware.buildWorkspaceSection(RuntimeContext)
WorkspaceContextMiddleware.onSystemPrompt(Agent,RuntimeContext,String)
`
进入KubernetesSandbox.doExec()方法的的cmd串是:
`find 'knowledge' -type f -name '*' 2>/dev/null | sort | while IFS= read -r f; do size=$(stat -c '%s' "$f" 2>/dev/null || echo 0); mtime=$(stat -c '%Y' "$f" 2>/dev/null || echo 0); printf '%s\t%s\t%s\n' "$f" "$size" "$mtime"; done`
进入CommandExecutor.run()方法的cmd是:
`cd '/workspace' && (find 'knowledge' -type f -name '*' 2>/dev/null | sort | while IFS= read -r f; do size=$(stat -c '%s' "$f" 2>/dev/null || echo 0); mtime=$(stat -c '%Y' "$f" 2>/dev/null || echo 0); printf '%s\t%s\t%s\n' "$f" "$size" "$mtime"; done)`
CommandExecutor.run方法内部调用SandboxConnector.sendRequest()返回的resp.body值为:
`{"stdout":"","stderr":"Failed to execute command: [Errno 2] No such file or directory: 'cd'","exit_code":1}`
由此得到开头抛出的异常信息。
Guia de contribuição
Avaliação
Esta issue ainda não foi avaliada.