fix(weixin): file send failed

This commit is contained in:
zhayujie
2026-03-31 18:14:49 +08:00
parent 4470d4c352
commit 6d9b7baeb4
3 changed files with 12 additions and 29 deletions

View File

@@ -75,26 +75,6 @@ class ChatService:
# a new segment; collect tool results until turn_end.
state.pending_tool_results = []
elif event_type == "file_to_send":
# Cloud CHAT stream: local paths are useless to the web UI; push a markdown link when we have a public URL.
url = data.get("url") or ""
if url:
msg = (data.get("message") or "").strip()
fname = data.get("file_name") or "file"
ft = data.get("file_type") or "file"
parts = []
if msg:
parts.append(f"{msg}\n\n")
if ft == "image":
parts.append(f"![{fname}]({url})")
else:
parts.append(f"[{fname}]({url})")
send_chunk_fn({
"chunk_type": "content",
"delta": "\n\n" + "".join(parts) + "\n\n",
"segment_id": state.segment_id,
})
elif event_type == "tool_execution_start":
# Notify the client that a tool is about to run (with its input args)
tool_name = data.get("tool_name", "")

View File

@@ -303,13 +303,18 @@ def upload_media_to_cdn(api: WeixinApi, file_path: str, to_user_id: str,
filesize=cipher_size,
aeskey=aes_key_hex,
)
upload_param = resp.get("upload_param", "")
if not upload_param:
raise RuntimeError(f"[Weixin] getUploadUrl returned no upload_param: {resp}")
cdn_url = (f"{api.cdn_base_url}/upload"
f"?encrypted_query_param={quote(upload_param)}"
f"&filekey={quote(filekey)}")
# API may return either upload_full_url (new) or upload_param (legacy)
upload_full_url = resp.get("upload_full_url", "")
upload_param = resp.get("upload_param", "")
if upload_full_url:
cdn_url = upload_full_url
elif upload_param:
cdn_url = (f"{api.cdn_base_url}/upload"
f"?encrypted_query_param={quote(upload_param)}"
f"&filekey={quote(filekey)}")
else:
raise RuntimeError(f"[Weixin] getUploadUrl returned neither upload_full_url nor upload_param: {resp}")
cdn_resp = requests.post(cdn_url, data=encrypted, headers={
"Content-Type": "application/octet-stream",

View File

@@ -683,10 +683,8 @@ class CowCliPlugin(Plugin):
lines = []
for skill_name in result.installed:
desc = _read_skill_description(os.path.join(skills_dir, skill_name))
lines.append(f"{skill_name}")
lines.append(f"技能安装成功:{skill_name}")
if desc:
if len(desc) > 60:
desc = desc[:57] + ""
lines.append(f" {desc}")
if len(result.installed) > 1: