PathResolver

interface PathResolver(source)

AutoTweaker 支持容器内工作区,并将宿主目录挂载到容器内以便程序直接读写宿主文件系统(等价于读写容器内文件系统)。

需要保障容器内工作区的 LLM 始终以“容器内”的视角执行操作,而程序在宿主机读写文件系统时又能够正确得到宿主路径。

此接口基于容器的实际挂载配置,处理容器内 <---> 宿主的路径映射关系。

AutoTweaker 会挂载 io.github.autotweaker.api.CONFIG_PATH /container/workspace 以及 io.github.autotweaker.api.TMP_PATH /container 到容器内。

Functions

Link copied to clipboard
abstract fun inContainer(workspace: Path): Boolean

判断一个工作区是否为容器内工作区,只需提供 Path

Link copied to clipboard
abstract fun toAbsolutePath(workspace: Path, path: Path): Path

基于工作区路径解析 LLM 提供的相对路径为绝对路径,不会进行挂载映射,容器内工作区得到的是“容器内视角”的绝对路径,宿主工作区得到的是“宿主视角”的绝对路径。

Link copied to clipboard
abstract fun toContainerPath(path: Path): Path

将宿主路径转换为容器内路径,适用于保存文件后提供给 LLM 路径,或在容器内执行命令的场景。

Link copied to clipboard
abstract fun toHostPath(path: Path): Path

将容器内路径转换为宿主路径,适用于根据 LLM 的请求读写宿主文件系统。

Link copied to clipboard
abstract fun toRelativePath(workspace: Path, path: Path): Path

基于绝对路径解析相对路径,不会进行挂载映射,与 toAbsolutePath 互逆且行为相似。