ddtcorex/dsh-maestro-harness ↗★ 1
@ddtcorex/dsh-maestro-harness
DSH meta-plugin: automated GitLab MR review + performance audit, and an interactive pair-programming preset.
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ddtcorex/dsh-maestro-harness说明文档
阅读完整 README ↗Configuration reference
Runtime-configurable from Settings → Maestro (stored in
$DSH_HOME/dsh-maestro-harness/config.json, overrides cordis.yml):
| Field | Meaning |
|---|---|
gitlabBaseUrl / gitlabToken / botUsername | GitLab API coordinates for the review pipeline. Secrets saved from Settings are stored server-side and never echoed back — the card shows only whether one is saved |
projectMappings | projectPath → localRepoPath → reviewProfile → reviewModel mappings used for full local reviews; profiles are magento2 (full Magento skill set) or generic (no skills required). A mapping's localRepoPath must be an absolute path to an existing git checkout, validated on save. reviewModel is an optional per-project override ({provider, model, reasoningEffort?}) that takes precedence over the global review model. An unmapped explicit mention receives a limited diff-only Quick review |
reviewModel | Global model override for automated reviews ({provider, model, reasoningEffort?}) — e.g. deepseek-official / deepseek-chat. When absent the DSH default model (ctx.agentDefaultModel) is used; per-project reviewModel in projectMappings overrides this value. Dropdown catalog is served from maestro.models.list; reasoningEffort is low/medium/high when the model supports it |
webhookSecret | Webhook auth (X-Gitlab-Token), re-read per request; overrides MAESTRO_GITLAB_WEBHOOK_SECRET without a restart. Must match the GitLab webhook's Secret token |
autoRereviewOnPush | Opt-in: after a completed review, further pushes to the same MR trigger an automatic quick re-review (default false) |
agentTimeoutMs | Hard ceiling on one automated review agent's turn, minimum 1000 ms (default 20 minutes). A hung agent is disposed and the review recorded as failed |
reviewSessionRetentionDays | Prune Maestro's own review history (reviews.json) and failed-report files older than this many days; 0 keeps everything forever (default). DSH session transcripts are never touched |
tunnelMode | quick (ephemeral trycloudflare URL) or named (your hostname) |
quickTarget | What a quick tunnel exposes: dsh-web or webhook |
tunnelId / tunnelCredentialsFile / tunnelHostname | Named-tunnel coordinates from the one-time setup |
proxyPort / proxyHost | Remote-access proxy bind, default 3081 on 0.0.0.0 (set proxyHost: 127.0.0.1 to disable LAN exposure); when the port is busy the proxy walks up to ten ports instead of failing |
lanPinEnabled | Gate LAN access behind a second PIN (default false — LAN stays open). The LAN PIN lives in its own token-lan file, so rotating the public PIN never invalidates LAN links |
telegramBotToken / telegramChatId | Optional Telegram Bot API credentials for one fixed chat. Enter both in Settings → Maestro; leave either blank to disable it. Telegram sends the public PIN, proxy/LAN status, and tunnel URL/status on boot, then the new PIN after a user presses Rotate |
telegramReviewNotifications | Opt-in digest: one protected message per finished review with its outcome and a short summary (default false) |
lastTunnelRunning | Managed by the plugin; drives auto-restore on boot |
Environment variables:
| Variable | Consumed by |
|---|---|
MAESTRO_GITLAB_WEBHOOK_SECRET | Webhook auth fallback (X-Gitlab-Token) and the manual-review CLI; optional if webhookSecret is set in Settings, which wins per request |
MAESTRO_GITLAB_TOKEN, MAESTRO_GITLAB_BASE_URL | Orchestrator fallback when Maestro Settings has no value, and the manual-review CLI; the token is optional at boot |
MAESTRO_TRIGGER_URL | Manual-review CLI target, default http://localhost:3000/hooks/gitlab-mr/trigger |