功能:为每个 LangGraph thread 创建和管理工作目录,确保每次对话都有独立的文件系统隔离空间。
1 目录结构创建
为每个 thread 建立三个子目录:
workspace — 沙箱工作区
uploads — 用户上传文件
outputs — Agent 输出文件
物理路径形如:{base_dir}/threads/{thread_id}/user-data/{workspace,uploads,outputs}
2 Thread ID 获取
在 before_agent 钩子中,优先从 runtime.context 取 thread_id,兜底从 config.configurable 取。取不到则抛异常。
3 两种初始化策略
lazy_init=True(默认):只计算路径,不实际创建目录,目录在首次使用时按需创建。性能更优。
lazy_init=False:在 before_agent 阶段就立即调用 ensure_thread_dirs 创建所有目录。
4 注入 State
将计算好的路径字典以 thread_data 字段注入到 AgentState 中,后续中间件和 Agent 可以直接读取这些路径使用。