Introduction¶
In the Web GUI of DSH (DeepSeek Harness), agents generate files such as reports, dashboards, charts, or CSV files during execution. Viewing these artifacts usually requires manually copying file paths into a browser, or leaving the DSH session context.
The dsh-artifacts plugin adds a tab named dsh-artifacts:library to the DSH sidebar. It exists in the sidebar system like Explorer or Editor, used to list the artifact directory generated by the agent and preview files directly within the tab, with support for real-time polling updates.
Core Features¶
Register Tab
The plugin registers a new tab through the extension point provided by the dsh-better-sidebar plugin. The default tab name is dsh-artifacts:library.
List Display
The artifact list is sorted by the most recent first. Each row displays a file type badge, file name, file size, and file age. The list can be scoped to the current chat session.
Preview and Actions
Clicking a list row previews the file in an iframe inside the tab (using a relative URL to achieve same-origin loading). Supported actions include:
* Open in a real browser tab
* Copy share link
* Reload preview
* Refresh index list
Performance Optimization
The index list is polled every 5 seconds only when the tab is active and the panel is open. The toolbar and row layout use fixed dimensions to avoid layout jitter caused by data changes.
Installation and Enablement¶
Run the following command in the terminal to install it:
dsh plugin --profile web add github:lucagiftzek/dsh-artifacts
After installation, the dsh-web process must be restarted to activate the plugin. The plugin uses a rev version mechanism, and subsequent modifications to lib/client.js will take effect after refreshing the browser.
Usage¶
Configure the Index Address
The default index URL is /report/?list=1. To override it, run the following in the browser console:
localStorage['dsh-artifacts:indexUrl'] = '/artifacts/index.json'
Index Endpoint Specification
The plugin requires a same-origin HTTP endpoint that returns a JSON index in the following format:
{ "count": 2, "items": [
{ "name": "report.html", "url": "/report/report.html", "ext": "html",
"size": 11160, "mtime": 1788934528 }
] }
The url field can be a relative path or an absolute path. The plugin has some fault tolerance and can still render normally if fields such as badge or size are missing.
Agent Skill
The plugin directory contains skills/publish-artifact/SKILL.md, a plug-and-play skill file that guides the agent on how to generate artifact files according to the conventions.
Architecture and Considerations¶
Dependency Requirements
This plugin depends on the dsh-better-sidebar plugin. If that plugin is not installed, the plugin will not register the tab and will not throw errors; it will simply remain inactive.
Server-Side Requirements
The plugin itself does not manage the file system or define routes. Users must provide their own HTTP endpoint that returns a JSON index.
Node Part Design
The lib/index.js node part is intentionally empty and does not import anything. This prevents plugin installation failure or host crashes caused by missing dependencies in the host environment, such as @deepseek-ai/dsh-settings.
License
The plugin is licensed under the MIT License. Please retain the copyright notice when using it. If you publish a public branch, it is recommended to state in the README that it is developed based on dsh-artifacts.
Summary¶
dsh-artifacts integrates the agent’s file output capabilities directly into the DSH sidebar, providing a closed-loop experience from list browsing to local preview. It relies on a same-origin HTTP endpoint to provide the index and uses lightweight client-side logic to implement the interface.
- GitHub Repository: https://github.com/lucagiftzek/dsh-artifacts
- Plugin Directory: https://www.skillhub.cn/plugins/lucagiftzek/dsh-artifacts