agentscope-ai / agentscope-ai/agentscope-java

k8s沙箱WorkspaceManager.listKnowledgeFiles报错

未關閉
#2,758 3 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
area/harness bug
主要語言
Java
星號
5.6k
分支
1.3k
平均合併
4 天 12 小時
30 天內合併 PR
77

描述

# 版本

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}`
由此得到开头抛出的异常信息。

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。