























@@ -2,15 +2,25 @@ import { resolveAgentWorkspaceDir } from "../../agents/agent-scope.js";
22import type { ReplyPayload } from "../../auto-reply/reply-payload.js";
33import { createReplyMediaPathNormalizer } from "../../auto-reply/reply/reply-media-paths.runtime.js";
44import type { OpenClawConfig } from "../../config/types.openclaw.js";
5+import { isPassThroughRemoteMediaSource } from "../../media/media-source-url.js";
56import { isAudioFileName } from "../../media/mime.js";
67import { resolveSendableOutboundReplyParts } from "../../plugin-sdk/reply-payload.js";
7889function isDataUrlMedia(mediaUrl: string): boolean {
910return mediaUrl.trim().toLowerCase().startsWith("data:");
1011}
111212-function shouldPreserveDisplayMediaUrl(mediaUrl: string): boolean {
13-return isDataUrlMedia(mediaUrl) || isAudioFileName(mediaUrl);
13+function shouldPreserveDisplayMediaUrl(payload: ReplyPayload, mediaUrl: string): boolean {
14+if (isDataUrlMedia(mediaUrl)) {
15+return true;
16+}
17+if (!isAudioFileName(mediaUrl)) {
18+return false;
19+}
20+if (isPassThroughRemoteMediaSource(mediaUrl)) {
21+return true;
22+}
23+return payload.trustedLocalMedia === true;
1424}
15251626export async function normalizeWebchatReplyMediaPathsForDisplay(params: {
@@ -42,18 +52,18 @@ export async function normalizeWebchatReplyMediaPathsForDisplay(params: {
4252continue;
4353}
4454const mediaUrls = resolveSendableOutboundReplyParts(payload).mediaUrls;
45-if (!mediaUrls.some(shouldPreserveDisplayMediaUrl)) {
55+if (!mediaUrls.some((mediaUrl) => shouldPreserveDisplayMediaUrl(payload, mediaUrl))) {
4656normalized.push(await normalizeMediaPaths(payload));
4757continue;
4858}
49-if (!mediaUrls.some((mediaUrl) => !shouldPreserveDisplayMediaUrl(mediaUrl))) {
59+if (!mediaUrls.some((mediaUrl) => !shouldPreserveDisplayMediaUrl(payload, mediaUrl))) {
5060normalized.push(payload);
5161continue;
5262}
5363const mergedMediaUrls: string[] = [];
5464let text = payload.text;
5565for (const mediaUrl of mediaUrls) {
56-if (shouldPreserveDisplayMediaUrl(mediaUrl)) {
66+if (shouldPreserveDisplayMediaUrl(payload, mediaUrl)) {
5767mergedMediaUrls.push(mediaUrl);
5868continue;
5969}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。