agentscope-ai / agentscope-ai/agentscope-java

k8s沙箱WorkspaceManager.listKnowledgeFiles报错

Offen
#2,758 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area/harness bug
Vorherrschende Sprache
Java
Sterne
5.6k
Forks
1.3k
Ø Merge
4 T. 12 Std.
Gemergte PRs (30 T.)
77

Beschreibung

# 版本

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.