test: share multimodal snapshot composition

This commit is contained in:
creatixchu committed 2026-09-21 16:57:59 +08:00
1 parent 5c1d966c3f
commit e52209da40
3 files changed
-115

No files matched your search

@@ -1,59 +0,0 @@
# Keyless replay for the read-image success scenario. This profile patch swaps
# the adapter and re-pins the recorded vision model. The replay catalog declares image input,
# so the strict read_image gate accepts the route and the tool result carries
# the durable image block.
- id: llm-deepseek
name: '@deepseek-ai/dsh-llm-deepseek'
disabled: true
- id: agent-default-model
name: '@deepseek-ai/dsh-agent-default-model'
config:
provider: deepseek-official
model: deepseek-v4-flash-vision-exp
- id: session-persistence-jsonl
name: '@deepseek-ai/dsh-session-persistence-jsonl'
config:
root: !!js dshHomePath('sessions')
compression: none
- id: agent-instructions
name: '@deepseek-ai/dsh-agent-instructions'
config:
maxBytes: 65536
- id: system-prompt
name: '@deepseek-ai/dsh-system-prompt'
config:
personaPrefix: |
You are a coding assistant powered by the {{model}} model. Your working directory is {{cwd}}. Your bash tool runs under a file sandbox — a `[sandbox: file access denied …]` result is policy, not a command bug.
Verify your work by running the code or tests. Keep answers brief and factual.
- insert:
- id: llm-replay
name: '@deepseek-ai/dsh-llm-replay'
config:
providers:
- id: deepseek-official
name: DeepSeek
models:
- id: deepseek-v4-flash
inputModalities: [text]
- id: deepseek-v4-pro
inputModalities: [text]
- id: deepseek-v4-flash-vision-exp
inputModalities: [text, image]
imageRequestTokens: 169
- id: attachment-local
name: '@deepseek-ai/dsh-attachment-local'
- id: spill-policy
name: '@deepseek-ai/dsh-spill-policy'
config:
maxInlineTokens: 1000
- insert:
- name: './fixture.mjs'
@@ -1,39 +0,0 @@
# Image-scenario overlay: adds the durable attachment store the read_image tool
# commits through. The store resolves its root from $DSH_HOME, which the
# snapshot harness scopes per run, so the patch itself carries no attachment
# path. The default-model row selects the shipped vision model.
- id: agent-default-model
name: '@deepseek-ai/dsh-agent-default-model'
config:
provider: deepseek-official
model: deepseek-v4-flash-vision-exp
- id: session-persistence-jsonl
name: '@deepseek-ai/dsh-session-persistence-jsonl'
config:
root: !!js dshHomePath('sessions')
compression: none
- id: agent-instructions
name: '@deepseek-ai/dsh-agent-instructions'
config:
maxBytes: 65536
- id: system-prompt
name: '@deepseek-ai/dsh-system-prompt'
config:
personaPrefix: |
You are a coding assistant powered by the {{model}} model. Your working directory is {{cwd}}. Your bash tool runs under a file sandbox — a `[sandbox: file access denied …]` result is policy, not a command bug.
Verify your work by running the code or tests. Keep answers brief and factual.
- id: attachment-local
name: '@deepseek-ai/dsh-attachment-local'
- id: spill-policy
name: '@deepseek-ai/dsh-spill-policy'
config:
maxInlineTokens: 1000
- insert:
- name: './fixture.mjs'
@@ -1,17 +0,0 @@
/** Deterministic MCP screenshot result for real-profile retention replay. */
import { createMcpToolDefinition } from '@deepseek-ai/dsh-mcp-client'
export const inject = ['tools', 'attachments']
/** Register the fixed text/image sequence used by the snapshot model. */
export function apply(ctx) {
const image = { type: 'image', mimeType: 'image/png', data: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAADElEQVQImWNgZGIGAAAOAAeCcsnOAAAAAElFTkSuQmCC' }
const text = value => ({ type: 'text', text: value })
ctx.effect(() => ctx.tools.register(createMcpToolDefinition(ctx, {
name: 'mcp__fixture__inspect', rawName: 'inspect', description: 'Read a fixed window snapshot.',
inputSchema: { type: 'object', properties: { layout: { type: 'string', enum: ['ends', 'middle'] } }, required: ['layout'] },
call: async ({ layout }) => ({ content: layout === 'ends'
? [text('A'), image, text('B'.repeat(20000)), image, text('C')]
: [text('A'.repeat(8000)), image, text('C'.repeat(8000))] }),
})))
}