In the DeepSeek Harness (DSH) environment, recording sessions is relatively easy, but organizing a day’s work trajectory and generating a summary lacks standard tools. dayreel addresses this issue by turning a day’s conversation records flowing through DSH into a visually designed daily report, and further rendering them into a narrated summary video.

Plugin Overview

dayreel is a community plugin maintained by peikuo and licensed under the MIT License. It is built end-to-end on TypeScript/Node.js and has no Python dependencies. Its core value is automating the generation of work content documents and video summaries, helping users intuitively review their daily work.

Core Capabilities

dayreel implements the above features through two runtime skills and a set of tools:

  • Two runtime skills:
    • dayreel-content: Responsible for collecting facts, writing content documents (including the main workline IR and daily metadata), and deterministically rendering the daily report in HTML/Markdown format.
    • dayreel-render: Projects the content document into typed scenes, renders them into an MP4 video, and continuously reports progress.
  • Core tools:
    • fetch_today_recap: Retrieves the cross-session summary for the current day, including cost estimates based on the actual model used in each session.
    • fetch_session_detail: Drills into detailed logs of a single session on demand.
    • dayreel_report: Generates the daily report (HTML/MD), with a force parameter to force revised regeneration.
    • dayreel_render: Asynchronously starts video rendering.
    • dayreel_status: Polls rendering progress and returns a playable URL when complete.
  • Embedded player: The client pane registers a <video> player card. After rendering is complete, the video can appear directly in the tool-call line without copying the URL.

Installation

Use the official installation command to add the plugin:

dsh plugin add github:peikuo/dayreel

Usage Flow

In the DSH Web UI, just tell the model “Generate today’s summary video,” and the process starts automatically:

  1. Content generation: The model loads the dayreel-content skill, calls fetch_today_recap to get the cross-session summary for the current day (automatically excluding the current conversation), calls fetch_session_detail if needed to obtain details, and finally outputs the daily report through dayreel_report.
  2. Video rendering: The model loads the dayreel-render skill and calls dayreel_render to start video rendering.
  3. Progress monitoring: The model repeatedly calls dayreel_status, reporting progress through narration (i/n -> Remotion %), until completion.
  4. Retrieving results: When finished, the model returns a playable URL (http://127.0.0.1:<port>/dayreel/<date>/<seq>/recap.mp4) and the local path.

Cost Optimization and Model Routing

Writing the daily report and rendering the video do not require a flagship model. The plugin routes models through the dayreel_author tool and does not rely on the model’s self-directed choice.

  • Routing logic: The menu is the LLM registry configured in the environment. If the user explicitly names a model (via the agent parameter), route directly; if there is a remembered preference, use it directly; if the registry contains only one entry, use it directly; otherwise, display a prompt to ask.
  • Configuration options:
    • fork: Optional. When set to true, the sub-agent inherits the full history of the current conversation (up to the last complete turn); defaults to spawn.
    • defaultModel: Optional. Fallback model ID used when there is no interaction.
  • Memory mechanism: Preferences are saved in preferences.json in the plugin output directory.
  • Limitation: External CLI sub-agents (such as codex) cannot call these tools.

Dependencies and Limitations

  • Dependencies:
    • msedge-tts: Used for narration (pure Node, using Microsoft Edge speech).
    • Remotion + ffmpeg: Used for video rendering (ffmpeg must be configured in PATH).
  • Data scope: Conversation summaries only cover today and yesterday. Earlier dates are Tier 2 features (not implemented), and requests for earlier dates are rejected by the tools.
  • Asset copyright: The background music is AI-generated (Gemini), and the project holds the rights to use and distribute it.

Configuration Options

In the plugin configuration, developers can adjust the following options:

- id: dayreel
  name: dayreel
  config:
    fork: true                       # 是否继承当前对话上下文
    defaultModel: deepseek-v4-flash  # 默认模型,无交互时兜底

Conclusion

dayreel uses a standardized workflow to turn DSH work records into readable daily reports and watchable videos, lowering the barrier to reviewing work. For more details and source code, visit the GitHub repository.