dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
收集并脱敏 DSH 运行诊断信息,然后向 GitHub 或 Gitea 提交结构化问题报告。
🇬🇧 English • 🇷🇺 Русский • 🇨🇳 中文说明
|
⭐ If you like this plugin, please star it on GitHub — it shows me that the plugin is useful to you and motivates me to keep developing it.
🐛 If you find a bug or would like to request a feature, open a GitHub issue in any language — I will review your proposal and implement useful suggestions in a future plugin version. |
When developing or running autonomous workflows in DeepSeek Harness, users frequently encounter issues in installed ecosystem plugins. Creating high-quality bug reports is typically a tedious, error-prone process: users have to manually locate the plugin's upstream repository, format reproduction details, and inadvertently risk leaking sensitive API keys, local paths, or internal endpoints.
@goodandready/dsh-issue-reporter bridges the gap between encountering an installed plugin failure and submitting an actionable, upstream report:
@deepseek-ai/ core plugins from third-party community extensions in independent collapsible lists.confirm: true) before any GitHub write.graph LR
A[DSH Plugin Inventory] --> B[lib/index.js]
B --> C[lib/domain.js<br/>Validation, Grouping, Redaction]
B --> D[lib/github.js<br/>OAuth & REST Client]
B --> E[lib/attachments.js<br/>Bounded Screenshot Upload]
C --> F[lib/client.js<br/>Settings Card]
F --> G[Redacted Preview & Duplicates]
G --> H{Explicit Confirmation}
H -->|Without Screenshots| I[GitHub REST Issue API]
H -->|With Screenshots| J[gh issue create --attach]
D --> K[DSH Credentials]
The reporter inspects the runtime composition of DeepSeek Harness. Non-public, invalid, or duplicate packages are filtered out. Valid targets are organized into two independently collapsible groups:
@deepseek-ai/.Clicking the full plugin row opens the integrated issue composer.
Users authorize via GitHub's standard OAuth Device Flow with a single "Sign in with GitHub" click:
repo scope to enable issue creation and duplicate search.tokenEnv: GITHUB_ISSUE_REPORTER_TOKEN).The built-in editor captures structured report fields:
report_issue)Registers an official tool in Cordis ctx.tools allowing autonomous coding agents and orchestrators to prepare reviewable bug report drafts with prefilled review links whenever an installed plugin encounters an unhandled exception or runtime crash, strictly requiring human review before upstream creation.
Integrated with ctx.llm via POST /dsh-issue-reporter/ai/optimize, allowing users to polish unstructured error notes into clean, reproducible steps and an actionable issue title with one click.
Inspects recent host session logs via GET /dsh-issue-reporter/logs, providing a redacted log checklist to easily attach relevant server traces to the bug report.
The "My Reports" tab persists submitted tickets and performs batch status verification (POST /dsh-issue-reporter/issues/batch-status), showing live open/closed status badges and comment counts.
Queries upstream repository labels via POST /dsh-issue-reporter/labels and automatically recommends matching category tags (bug, ui, performance, auth).
In-place npm updater conforming to DSH standards: checks the registry on mount and provides an explicit "Update" button with same-origin and loopback security.
Before submission, the plugin searches existing GitHub issues in the target repository using normalized tokens from the title and body. It ranks up to five potential duplicates to avoid noise.
Users can attach up to 5 screenshots (PNG, JPG, GIF, WebP; 8 MiB per file, 20 MiB total):
gh issue create --attach) inside a temporary staging directory that is cleaned up in a finally block.| Module | Responsibility |
|:### 6. Clipboard Paste (Ctrl+V) & Drag-and-Drop (v0.1.1)
Paste screenshots directly from the clipboard (Ctrl+V from system snipping tools) or drag-and-drop image files into an interactive dropzone with visual thumbnail cards and size indicators.
Captures sanitized runtime diagnostics (Node.js, OS platform, architecture, DSH versions) without private paths or credentials. Plugins in a runtime failure state provide a one-click Quick Report with captured error stacks.
Styled according to the dsh-clinebot design system with clean tabs (Catalog, Report Editor, My Reports, Authorization) and a real-time instant search filter across all installed plugins.
The 'My Reports' tab maintains a local history of submitted issues, offering one-click status checks (Open / Closed) and direct links.
In addition to GitHub, the reporter detects repositories on local and self-hosted Gitea/Forgejo instances, supporting Gitea REST issue creation and duplicate lookups.
---|:---|
| lib/domain.js | Repository parsing, native/third-party classification, redaction, draft composition, duplicate ranking, and credential serialization |
| lib/github.js | GitHub OAuth Device Flow, refresh token exchange, authenticated user lookup, and REST issue creation |
| lib/attachments.js | Screenshot validation, size/count limits, temporary file lifecycle, and GitHub CLI execution |
| lib/auth.js | Removal of configured GitHub credentials during sign-out |
| lib/index.js | DSH settings registration, credentials integration, same-origin route protection, and report workflow |
| lib/client.js | Bilingual Web UI settings card, authorization controls, catalog, composer, preview, and feedback |
Install into your DeepSeek Harness web profile:
dsh plugin --profile web add @goodandready/dsh-issue-reporter
Restart your DSH instance and open Settings → Plugins → GitHub Issue Reporter.
DSH Issue Reporter).https://goodandready.app or http://127.0.0.1:3080).settings.yaml under appClientId.settings.yaml)# settings.yaml
dsh-issue-reporter:
# Public client ID of your GitHub OAuth App with Device Flow enabled
appClientId: "YOUR_GITHUB_OAUTH_CLIENT_ID"
# DSH Credentials reference holding the OAuth token (never enter raw tokens here)
tokenEnv: "GITHUB_ISSUE_REPORTER_TOKEN"
# GitHub REST API endpoint (default: https://api.github.com)
apiBaseUrl: "https://api.github.com"
# Request and CLI attachment timeout in milliseconds
timeoutMs: 30000
# Executable name or absolute path for GitHub CLI
ghPath: "gh"
| Parameter | Type | Default | Description |
|---|---|---|---|
appClientId | string | "" | Public GitHub OAuth App Client ID with Device Flow enabled |
tokenEnv | string | "GITHUB_ISSUE_REPORTER_TOKEN" | DSH Credentials reference storing user OAuth material |
apiBaseUrl | string | "https://api.github.com" | GitHub REST API endpoint |
timeoutMs | number | 30000 | Timeout in milliseconds for API requests and CLI attachment uploads |
ghPath | string | "gh" | Path to the gh binary on the host (used for screenshot reports) |
All routes enforce DSH browser session authentication and same-origin protections.
| Method & Route | Purpose | External Write |
|---|---|---|
GET /dsh-issue-reporter/status | Return sanitized configuration status and discovered plugin catalog | No |
POST /dsh-issue-reporter/device/start | Initiate OAuth Device Flow and return user verification code | No |
POST /dsh-issue-reporter/device/poll | Poll authorization status, validate identity, and persist credentials | DSH Credentials |
POST /dsh-issue-reporter/device/logout | Revoke/delete stored credentials during sign-out | DSH Credentials |
POST /dsh-issue-reporter/draft | Compose a sanitized draft with redaction summary | No |
POST /dsh-issue-reporter/duplicates | Search and rank likely duplicate issues | Read-only GitHub |
POST /dsh-issue-reporter/create | Submit confirmed issue via REST API or gh --attach | GitHub Issue |
| Symptom | Cause & Solution |
|---|---|
GitHub sign-in is not configured | Add the public appClientId to settings.yaml under dsh-issue-reporter. |
404 Not Found during sign-in | Device code requests must target github.com/login/device/code, not api.github.com. |
Resource not accessible by integration | The authorized identity lacks write access, or an old token is cached. Sign out and sign in again. |
| Screenshot attachment failure | Ensure gh CLI 2.99+ is installed on the host and accessible via ghPath. |
GitHub authorization is invalid or expired | Refresh token expired. Click Sign Out and re-authorize. |
| Plugin has no report action | The plugin manifest does not provide a valid public GitHub repository URL. |
gh process exits.MIT © GooDAnDReaDY