通信傍受を抽象表示しなかったのを戻した

This commit is contained in:
user 2026-02-08 02:19:55 +09:00
parent 942f632891
commit ea0ced9214

View file

@ -93,7 +93,6 @@ async def analyze_models():
models_data = res.json().get("models", []) models_data = res.json().get("models", [])
total = len(models_data) total = len(models_data)
enriched = [] enriched = []
for i, m in enumerate(models_data, 1): for i, m in enumerate(models_data, 1):
full_name = m["name"] full_name = m["name"]
draw_progress(i, total, full_name.split("/")[-1]) draw_progress(i, total, full_name.split("/")[-1])
@ -116,7 +115,6 @@ async def analyze_models():
print("\n") print("\n")
enriched.sort(key=lambda x: (x["score"], x["display_name"], -x["size_gb"])) enriched.sort(key=lambda x: (x["score"], x["display_name"], -x["size_gb"]))
print( print(
f"{get_ts()} {C_GREEN}--- リモートモデル戦力分析 (Target: {url}) ---{C_RESET}" f"{get_ts()} {C_GREEN}--- リモートモデル戦力分析 (Target: {url}) ---{C_RESET}"
) )
@ -137,7 +135,6 @@ async def analyze_models():
else f"{C_GRAY}[----]{C_RESET}" else f"{C_GRAY}[----]{C_RESET}"
) )
name, size = em["display_name"], f"{em['size_gb']:>5.1f} GiB" name, size = em["display_name"], f"{em['size_gb']:>5.1f} GiB"
if get_visual_width(name) > NAME_MAX_WIDTH: if get_visual_width(name) > NAME_MAX_WIDTH:
print(f"{get_ts()} {status} {tool} {name[:NAME_MAX_WIDTH]} {size}") print(f"{get_ts()} {status} {tool} {name[:NAME_MAX_WIDTH]} {size}")
print( print(
@ -147,7 +144,6 @@ async def analyze_models():
print( print(
f"{get_ts()} {status} {tool} {pad_right(name, NAME_MAX_WIDTH)} {size}" f"{get_ts()} {status} {tool} {pad_right(name, NAME_MAX_WIDTH)} {size}"
) )
print(f"{get_ts()} {C_GREEN}{'-' * 80}{C_RESET}") print(f"{get_ts()} {C_GREEN}{'-' * 80}{C_RESET}")
show_help() show_help()
except Exception as e: except Exception as e:
@ -166,11 +162,14 @@ def show_help():
async def sticky_proxy(path: str, request: Request): async def sticky_proxy(path: str, request: Request):
target_url = f"{CONFIG['url']}/{path}" target_url = f"{CONFIG['url']}/{path}"
# --- 修正箇所: SyntaxError を防ぐため完全に複数行に展開 --- # 1. リクエスト吸い込みの可視化
print(f"\n{get_ts()} /{path} -> {CONFIG['url']}: ", end="", flush=True)
body = b"" body = b""
async for chunk in request.stream(): async for chunk in request.stream():
body += chunk body += chunk
# ------------------------------------------------------ print(f"{C_CYAN}^{C_RESET}", end="", flush=True)
print(f"{C_YELLOW}|{C_RESET}", end="", flush=True)
headers = { headers = {
k: v k: v
@ -184,8 +183,12 @@ async def sticky_proxy(path: str, request: Request):
async with client.stream( async with client.stream(
request.method, target_url, content=body, headers=headers request.method, target_url, content=body, headers=headers
) as response: ) as response:
# 2. レスポンス吐き出しの可視化
print(f"{C_GREEN}v:{C_RESET}", end="", flush=True)
async for chunk in response.aiter_bytes(): async for chunk in response.aiter_bytes():
print(f"{C_GREEN}v{C_RESET}", end="", flush=True)
yield chunk yield chunk
print(f"{C_YELLOW}*{C_RESET}", end="", flush=True)
except Exception as e: except Exception as e:
print(f" {C_RED}[Err] {e}{C_RESET}") print(f" {C_RED}[Err] {e}{C_RESET}")
@ -198,7 +201,6 @@ def interactive_shell():
line = sys.stdin.readline().strip().lower() line = sys.stdin.readline().strip().lower()
if not line: if not line:
continue continue
if line == "q": if line == "q":
os._exit(0) os._exit(0)
elif line == "?": elif line == "?":
@ -210,13 +212,9 @@ def interactive_shell():
CONFIG["url"] = f"http://127.0.0.1:{new_port}" CONFIG["url"] = f"http://127.0.0.1:{new_port}"
threading.Thread(target=run_analyze, daemon=True).start() threading.Thread(target=run_analyze, daemon=True).start()
else: else:
print( print(f"{C_RED}ポート指定ミス: :p 11435{C_RESET}")
f"{C_RED}ポート番号を指定してください (例: :p 11435){C_RESET}"
)
else: else:
print( print(f"{C_GRAY}未知のコマンド: '{line}'{C_RESET}")
f"{C_GRAY}未知のコマンドです: '{line}' ( ? でヘルプ表示 ){C_RESET}"
)
except EOFError: except EOFError:
break break
@ -227,9 +225,7 @@ def main():
parser.add_argument("-l", "--local", type=int, default=11434) parser.add_argument("-l", "--local", type=int, default=11434)
args = parser.parse_args() args = parser.parse_args()
CONFIG["url"] = f"http://127.0.0.1:{args.remote}" CONFIG["url"] = f"http://127.0.0.1:{args.remote}"
asyncio.run(analyze_models()) asyncio.run(analyze_models())
threading.Thread(target=interactive_shell, daemon=True).start() threading.Thread(target=interactive_shell, daemon=True).start()
uvicorn.run(app, host="127.0.0.1", port=args.local, log_level="error") uvicorn.run(app, host="127.0.0.1", port=args.local, log_level="error")