change output

This commit is contained in:
Pinghua
2026-06-10 15:45:58 +08:00
parent 616e4b09db
commit 971ee4dfff
+18 -10
View File
@@ -18,6 +18,7 @@ import re
import shutil
import subprocess
import sys
import threading
import urllib.error
import urllib.request
@@ -335,21 +336,28 @@ def run_claude(claude_bin, project_root, prompt, extra_dir=None):
text=True,
encoding="utf-8",
)
stdout_lines = []
for line in proc.stdout:
line = line.rstrip("\n")
stdout_lines.append(line)
if line:
print(f"[claude] {line}", file=sys.stderr)
def _stream(pipe, label, dest_lines):
for line in pipe:
line = line.rstrip("\n")
if line:
print(f"[{label}] {line}", file=sys.stderr)
dest_lines.append(line)
stderr_lines = []
t = threading.Thread(target=_stream, args=(proc.stderr, "claude:stderr", stderr_lines))
t.start()
stdout_lines = []
_stream(proc.stdout, "claude", stdout_lines)
t.join(timeout=10)
proc.wait(timeout=600)
# Drain remaining stderr
stderr_output = proc.stderr.read()
if stderr_output:
print(stderr_output, file=sys.stderr)
if proc.returncode != 0:
print(f"Claude exited with code {proc.returncode}", file=sys.stderr)
if stderr_lines:
print("\n".join(stderr_lines[-50:]), file=sys.stderr)
sys.exit(1)
return "\n".join(stdout_lines)