agentscope-ai / agentscope-ai/agentscope-java
k8s沙箱WorkspaceManager.listKnowledgeFiles报错
- Ngôn ngữ chính
- Java
- Star
- 5.6k
- Fork
- 1.3k
- Merge trung bình
- 4 ngày 12 giờ
- Pull request đã merge (30 ngày)
- 77
Mô tả
# 版本
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}`
由此得到开头抛出的异常信息。
Hướng dẫn đóng góp
Đánh giá
Issue này chưa được đánh giá.