import os from typing import List, Literal, Dict from kilostar.plugin.tool_plugin.base_tool import BaseToolData class WriteFileToolData(BaseToolData): is_system: bool = True action_scope: List[ Literal[ "control_node", "consciousness_node", "regulatory_node", "growth_node", "", ] ] = [] config_args: Dict[str, str] = {} category: str = "system" async def write_file(file_path: str, content: str) -> str: """将内容写入指定文件(会覆盖已有内容,自动创建目录)。 Args: file_path: 文件的路径 content: 要写入的内容 Returns: 操作结果描述 """ from kilostar.utils.sandbox import validate_path, PathViolation try: file_path = validate_path(file_path, write=True) except PathViolation as e: return f"[Sandbox] {e}" try: dir_path = os.path.dirname(file_path) if dir_path: os.makedirs(dir_path, exist_ok=True) with open(file_path, "w", encoding="utf-8") as f: f.write(content) return f"已成功写入文件: {file_path}({len(content)} 字符)" except Exception as e: return f"[Error] 写入文件失败: {e}"