In the Web GUI of DeepSeek Harness (DSH), when agents process files within a session workspace, they often need to switch to a terminal or external editor for viewing and version control. The dsh-workspace-files plugin adds a “Files” tab to the session view, providing directory browsing and VS Code-like Git operations directly in the browser.
Core Features¶
The plugin primarily provides the following capabilities:
- Directory tree browsing: Supports lazy loading and muted display of hidden files.
- File viewing: Supports UTF-8 text and binary detection; very large files are automatically truncated.
- Git integration: Displays file status badges (M/A/D/R/?) and line-level diffs.
- Git source control: Supports stage/unstage/discard changes/commit/pull/push/branch switching.
- AI-generated commit messages: Uses the current session model to automatically generate commit messages based on diffs.
- Theme adaptation: Keeps consistent with the overall DSH theme.
- Security isolation: Restricts operations to the session workspace root directory to prevent path traversal.
- Graceful degradation: Automatically degrades to plain file browsing mode for non-Git directories or when
gitis missing.
Installation¶
Install the plugin using the DSH CLI:
dsh plugin --profile web add github:sqfcyily/dsh-workspace-files
After installation, reopen the DSH Web GUI. A “Files” tab will appear at the top of the session view.
Usage¶
- In the Web GUI, enter any session and click the “Files” tab at the top.
- Browse the directory tree on the left: click a directory to expand it, or click a file to view its content.
- Stage files in the “Changes” section, or perform operations in the “Staged Changes” section.
- Commit: Enter a commit message, or click the AI generation button. Press
Ctrl/⌘+Enterfor quick commit. - Push and branches: Use the pull/push buttons in the toolbar and the branch dropdown menu.
- Discard changes: Click
↩to discard changes. You must confirm in the popup dialog (this action is irreversible).
Security and Implementation Details¶
- Operation scope: All file system and Git operations are strictly limited to the workspace root directory of the current session. Path traversal attempts return a 403.
- Symbolic links: The plugin does not follow symbolic links and reports them according to their own type.
- Binary handling: Files containing a NUL byte within the first 8,000 bytes are identified as binary. Their content is not returned; only the
binary: trueflag is returned. - Request methods: Read-only browsing operations (listing, reading, diffing) use
GETrequests; Git write operations (staging, committing, pushing, etc.) usePOSTrequests. - Git invocation: Git commands are invoked directly through
execFile, without going through a shell, to avoid command injection risks. - Destructive operations: Discarding changes requires a second confirmation. Once executed, the operation is irreversible.
Ecosystem Background¶
DeepSeek Harness follows the “everything is a plugin” philosophy. This plugin is maintained by the community and is not part of the official DeepSeek or High-Flyer application store.