



























@@ -137,46 +137,71 @@ describe("media-understanding runtime", () => {
137137});
138138139139it("passes per-request image prompts into media understanding config", async () => {
140+const media = [{ index: 0, path: "/tmp/sample.jpg", mime: "image/jpeg" }];
141+const providerRegistry = new Map();
142+const cache = { cleanup: mocks.cleanup };
140143const output: MediaUnderstandingOutput = {
141144kind: "image.description",
142145attachmentIndex: 0,
143146provider: "vision-plugin",
144147model: "vision-v1",
145148text: "button count ok",
146149};
147-mocks.normalizeMediaAttachments.mockReturnValue([
148- { index: 0, path: "/tmp/sample.jpg", mime: "image/jpeg" },
149-]);
150+mocks.buildProviderRegistry.mockReturnValue(providerRegistry);
151+mocks.createMediaAttachmentCache.mockReturnValue(cache);
152+mocks.normalizeMediaAttachments.mockReturnValue(media);
150153mocks.runCapability.mockResolvedValue({
151154outputs: [output],
152155});
153156157+const cfg = {
158+tools: {
159+media: {
160+image: {
161+prompt: "default image prompt",
162+},
163+},
164+},
165+} as OpenClawConfig;
166+154167await describeImageFile({
155168filePath: "/tmp/sample.jpg",
156169mime: "image/jpeg",
170+ cfg,
171+agentDir: "/tmp/agent",
172+prompt: "Count visible buttons",
173+timeoutMs: 90_000,
174+});
175+176+expect(mocks.runCapability).toHaveBeenCalledOnce();
177+expect(mocks.runCapability.mock.calls[0]?.[0]).toEqual({
178+capability: "image",
157179cfg: {
158180tools: {
159181media: {
160182image: {
161-prompt: "default image prompt",
183+prompt: "Count visible buttons",
184+_requestPromptOverride: "Count visible buttons",
185+timeoutSeconds: 90,
162186},
163187},
164188},
165-} as OpenClawConfig,
189+},
190+ctx: {
191+MediaPath: "/tmp/sample.jpg",
192+MediaType: "image/jpeg",
193+},
194+attachments: cache,
195+ media,
166196agentDir: "/tmp/agent",
167-prompt: "Count visible buttons",
168-timeoutMs: 90_000,
197+ providerRegistry,
198+config: {
199+prompt: "Count visible buttons",
200+_requestPromptOverride: "Count visible buttons",
201+timeoutSeconds: 90,
202+},
203+activeModel: undefined,
169204});
170-171-expect(mocks.runCapability).toHaveBeenCalledWith(
172-expect.objectContaining({
173-config: expect.objectContaining({
174-prompt: "Count visible buttons",
175-_requestPromptOverride: "Count visible buttons",
176-timeoutSeconds: 90,
177-}),
178-}),
179-);
180205});
181206182207it("surfaces the underlying provider failure when media understanding fails", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。