baldovinmarques391-design/dsh-computer-control ↗★ 0
dsh-computer-control
将桌面操作转化为带截图的工具调用 适合需要让智能体执行桌面控制并获取反馈的任务。
同名包的其他仓库
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:baldovinmarques391-design/dsh-computer-control说明文档
阅读完整 README ↗Configuration
Every value below is a Config field; override the row in your profile's
cordis.patch.yml, restating the keys you keep, because a patch replaces a row's
whole config.
| Key | Default | Meaning |
|---|---|---|
capturesPerSecond | 10 | Frame rate the recorder produces |
maxFrames | 2 | Frames returned by one call (1 to 20): the pre-action reference and the settled end state. computer_frames is capped lower, at 16 |
maxAttachedImages | 2 | Frames attached as images (0 to 19); further frames are still saved to disk and their paths printed |
changeThreshold | 0.003 | Signature movement that counts as a change |
settleMs | 700 | Extra capture after the action completes |
settleRunFrames | 2 | Consecutive unchanged tail frame pairs required before the envelope calls the window settled |
maxWindowMs | 15000 | Ceiling on one capture window (200 to 120000); also sizes the tool timeout |
maxWaitSeconds | 10 | Longest passive watch |
maxTypeChars | 2000 | Longest string computer_type accepts (up to 20000) |
maxScrollClicks | 10 | Largest wheel gesture, in notches |
maxDragSteps | 120 | Largest drag step count |
maxZoom | 8 | Largest integer zoom (1 to 16) |
maxZoomedPixels | 16000000 | Pixel ceiling for one zoomed capture, checked before any allocation |
frameMaxEdge | 1024 | Longest edge of a captured frame |
frameQuality | 75 | JPEG quality, 1 to 100, for the in-process fallback capture only; recorded frames are encoded by ffmpeg under recorderQuality |
ffmpegPath | ffmpeg | Executable that records the screen |
tempRoot | `` | Directory for the staged helper, recorder ring, screenshots, and markers; empty means a directory under the system temp directory. A drive root and an extended-length path are refused when the plugin activates, since with either one the recorder cannot be kept and every call would fall back to the in-process capture |
recorderQuality | 5 | ffmpeg -q:v for recorded frames, 1 to 31; lower is better quality and larger files |
recorderBufferMs | 4000 | Recorded video a call can reach back through for its own first frame |
recorderPrimeMs | 400 | Recorder lead time before input is injected |
recorderIdleStopMs | 30000 | Grace period before an idle recorder is stopped |
imageMode | auto | auto attaches frames when the route accepts images and the attachment service is mounted; text never attaches. The route's own capability is still resolved, so the envelope can say whether read_image would work for a frame already on disk |
captureTimeoutMs | 20000 | Timeout budget for a capture or probe call |
actionTimeoutSlackMs | 10000 | Added to maxWindowMs for an action tool timeout |
compactionCleanupEnabled | false | Delete this conversation's images once a compaction has summarised them. Off by default: the cleanup is implemented and tested, but eight adversarial reviews each found a real defect in it, so it ships unarmed. With it false a compaction deletes nothing and every image stays on disk. Arming it is a decision, not a default — see DELIVERY.md |
desktopTarget | local | Which desktop the screen and input work happens on. agent is the relayed instance's desktop — the agent's own, by default the deputy account; user is this process's own Windows session — the person at the keyboard; auto prefers agent and falls back to user only when the relay cannot be reached at all, never retrying a command the relay actually answered, because a relay that was reached may already have performed the action and repeating it on the user's desktop would be a second action nobody asked for (every fallback is logged). local and relay are mechanism-named spellings of user and agent. A deployment fact rather than a preference: ffmpeg's gdigrab and SendInput act only on the calling process's own session, so an instance that must drive a different account's desktop has to delegate to one running there |
relayUrl | "" | Origin of the relay instance, used when desktopTarget is agent, relay, or auto, for example http://127.0.0.1:3079. Only loopback is accepted |
relayToken | "" | Bearer token for the relay protocol. Setting it on an instance installs that instance's /relay route; empty means the route does not exist at all |
relayTimeoutMs | 60000 | Ceiling for one forwarded command, so a hung relay cannot hold a tool call open indefinitely |
agentAccount | "" | Windows account this deployment runs automated sessions as. Together with userAccount it enables the account paragraph; while either is empty the paragraph is absent, which is the default |
userAccount | "" | Windows account the person at the keyboard uses, named in the account paragraph |
userDesktop | "" | That person's desktop path, named in the account paragraph. Empty leaves it unmentioned, which is right when it is the profile's own Desktop folder |
userDocuments | "" | That person's documents path, named in the account paragraph. Empty leaves it unmentioned |