NeoHotaru/dsh-read-animation ↗★ 0

dsh-read-animation

Let a DeepSeek Harness agent actually see an animated GIF or animated WebP: decode every frame, sample the animation across time, and hand the model a labelled sequence of real frames instead of the single first frame the harness otherwise delivers. 适合需要让AI模型分析GIF或WebP动图多帧细节的视觉处理任务。

Package
dsh-read-animation
Compatibility
Unverified
Harness peer range
*
Cordis peer range
*
Version
0.1.2
License
MIT
Last updated
Oct 15, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:NeoHotaru/dsh-read-animation

Usage

The model reaches for it on its own for a .gif, because the tool description says to. You can also ask directly:

what happens in this GIF? — animations/loading-spinner.gif

Arguments:

argumentmeaning
file_paththe animation to read (required)
framesexplicit 0-based indices, in the order given — up to 16
atmillisecond instants to sample instead of an even spread
max_frameshow many frames to sample (default 8, maximum 16)
max_edgelong-edge size of each returned frame in px (default 640)

A useful loop, when the first read is not enough detail:

read_animation { file_path: "dance.gif" }              → 8 frames across the timeline
read_animation { file_path: "dance.gif",
                 frames: [11, 12, 13], max_edge: 1024 } → those three, full size

Configuration

Optional, in the plugin row of your profile's cordis.patch.yml:

- id: read-animation
  name: 'dsh-read-animation'
  config:
    maxFrames: 8          # default frames per call, 1..16
    maxEdge: 640          # default long-edge cap, 64..2048
    background: white     # "white" flattens transparency, "keep" preserves it
    maxInputBytes: 67108864   # refuse animations larger than this
    expandPastedAnimations: true   # a pasted animation keeps playing in the UI and reaches the model as a frame sheet