fix: use UTF-8 for text file operations

This commit is contained in:
Haoran
2026-08-24 20:28:37 +08:00
parent a32a73f700
commit 199402f9d4
59 changed files with 435 additions and 289 deletions

View File

@@ -78,7 +78,7 @@ def execute_tool(name: str, args: dict) -> str:
if name == "read_file":
try:
return (WORKDIR / args["path"]).read_text()[:50000]
return (WORKDIR / args["path"]).read_text(encoding="utf-8")[:50000]
except Exception as e:
return f"Error: {e}"
@@ -86,7 +86,7 @@ def execute_tool(name: str, args: dict) -> str:
try:
p = WORKDIR / args["path"]
p.parent.mkdir(parents=True, exist_ok=True)
p.write_text(args["content"])
p.write_text(args["content"], encoding="utf-8")
return f"Wrote {len(args['content'])} bytes to {args['path']}"
except Exception as e:
return f"Error: {e}"

View File

@@ -190,7 +190,7 @@ def run_read_file(path: str, limit: int = None) -> str:
- Output truncated to 50KB
"""
try:
text = safe_path(path).read_text()
text = safe_path(path).read_text(encoding="utf-8")
lines = text.splitlines()
if limit and limit < len(lines):
@@ -215,7 +215,7 @@ def run_write_file(path: str, content: str) -> str:
try:
fp = safe_path(path)
fp.parent.mkdir(parents=True, exist_ok=True)
fp.write_text(content)
fp.write_text(content, encoding="utf-8")
return f"Wrote {len(content)} bytes to {path}"
except Exception as e:
@@ -233,13 +233,13 @@ def run_edit_file(path: str, old_text: str, new_text: str) -> str:
"""
try:
fp = safe_path(path)
content = fp.read_text()
content = fp.read_text(encoding="utf-8")
if old_text not in content:
return f"Error: Text not found in {path}"
new_content = content.replace(old_text, new_text, 1)
fp.write_text(new_content)
fp.write_text(new_content, encoding="utf-8")
return f"Edited {path}"
except Exception as e:

View File

@@ -142,7 +142,7 @@ def execute(name: str, args: dict) -> str:
if name == "read_file":
try:
return safe_path(args["path"]).read_text()[:50000]
return safe_path(args["path"]).read_text(encoding="utf-8")[:50000]
except Exception as e:
return f"Error: {{e}}"
@@ -150,7 +150,7 @@ def execute(name: str, args: dict) -> str:
try:
p = safe_path(args["path"])
p.parent.mkdir(parents=True, exist_ok=True)
p.write_text(args["content"])
p.write_text(args["content"], encoding="utf-8")
return f"Wrote {{len(args['content'])}} bytes to {{args['path']}}"
except Exception as e:
return f"Error: {{e}}"
@@ -158,10 +158,13 @@ def execute(name: str, args: dict) -> str:
if name == "edit_file":
try:
p = safe_path(args["path"])
content = p.read_text()
content = p.read_text(encoding="utf-8")
if args["old_text"] not in content:
return f"Error: Text not found in {{args['path']}}"
p.write_text(content.replace(args["old_text"], args["new_text"], 1))
p.write_text(
content.replace(args["old_text"], args["new_text"], 1),
encoding="utf-8",
)
return f"Edited {{args['path']}}"
except Exception as e:
return f"Error: {{e}}"
@@ -230,17 +233,17 @@ def create_agent(name: str, level: int, output_dir: Path):
# Write agent file
agent_file = agent_dir / f"{name}.py"
template = TEMPLATES.get(level, TEMPLATES[1])
agent_file.write_text(template.format(name=name))
agent_file.write_text(template.format(name=name), encoding="utf-8")
print(f"Created: {agent_file}")
# Write .env.example
env_file = agent_dir / ".env.example"
env_file.write_text(ENV_TEMPLATE)
env_file.write_text(ENV_TEMPLATE, encoding="utf-8")
print(f"Created: {env_file}")
# Write .gitignore
gitignore = agent_dir / ".gitignore"
gitignore.write_text(".env\n__pycache__/\n*.pyc\n")
gitignore.write_text(".env\n__pycache__/\n*.pyc\n", encoding="utf-8")
print(f"Created: {gitignore}")
print(f"\nAgent '{name}' created at {agent_dir}")