dsh-loop
Manifest valid★ 7DSH Plugin: Scheduled Loop (/loop command + loop tool + activity status bar). Official bundle plugin, install with `dsh plugin --profile web add`
loop
中文 | English
Scheduled loop plugin: `/loop` command + `loop` tool (self-adjusting by the model) + active status bar on the chat page, with support for multiple concurrent loops
Delivers a prompt to the current agent at a fixed interval — ideal for polling, PR babysitting, and build-fix-test cycles. Aligned with Claude Code's /loop semantics, multiple loops can run concurrently in a single session. Delivered as an official bundle plugin (dsh.bundle + dshClient channel), 0 patch.
Preview

Features
Tool (registered via defineTool, the model can self-adjust on every turn):
| Tool | Description |
|---|---|
loop | start (start a new loop) / stop (stop a specific one or all) / status / list (list loops in the current session) |
Commands (user side):
| Command | Description |
|---|---|
/loop [interval] <prompt> | Start a new loop (interval 5m/30s/1h/2d or a bare number = minutes; bare /loop uses the built-in maintenance prompt) |
/loop list | List all loops in the current session (with ids) |
/loop stop <id> / /loop stop | Stop a specific loop / stop all |
UI (dock slot above the input box on the chat page):
| Feature | Description |
|---|---|
| Active status bar | Single loop: ● ⟳ looping · <prompt> · 5m · next in 23s; multiple loops collapse into a count bar "N loops running · expand", click to expand the list |
Settings
The plugin ships a settings card in Settings → Plugins (official ctx.settings namespace dsh-loop, rendered via the settings.plugin.item slot next to the official plugin cards). Each tool gets its own row with an official-looking Switch:
| Setting | Default | Effect |
|---|---|---|
Whether to inject the loop tool into the model | on | When off, the loop tool is not registered for agents: the model can no longer see or call it (tools.schemas has no loop). The /loop command (user side) and the status bar are unaffected. |
The card fields are driven by the client LOOP_TOOL_FIELDS table, mirrored one-to-one by the Node-side tool definition table — adding a tool means adding one entry on each side, and the settings card grows a new switch row automatically.
Changes apply as soon as you save (applies: 'live') — the plugin watches the namespace and registers/unregisters the affected tools on the fly, so new sessions pick it up without a restart. Tool schemas are resolved live at every session/prompt assembly (there is no per-session snapshot): in-flight sessions also see the change from their next turn, and turning a tool off drops it from tools.schemas immediately, so a model that called it earlier can no longer reach it (they can only reconcile that through the turn record). The /loop command (user side) and the status bar are unaffected.
Installation
Recommended: one-line install from a git source (build artifacts are committed, so a git source does not trigger a build):
dsh plugin --profile web add "github:vlln/dsh-loop#main" # one-line git source (build artifacts committed)
# or npm source: dsh plugin --profile web add @vlln/dsh-loop@0.3.0
Or from a local directory (when you have the source): git clone, then cd dsh-loop && dsh plugin --profile web add ..
After installing, restart web for it to take effect (bundles are composed at startup); afterwards you can disable/enable it from the "Plugins" panel on the settings page (takes effect at runtime + persisted).
Usage
# User side
/loop 5m check PRs on the deploy branch # delivered every 5 minutes
/loop list # loop-1: every 5m — check PRs on the deploy branch
/loop stop loop-1 # stop a specific one
/loop stop # stop all
# Model side (loop tool)
loop action=start prompt="fix flaky test" interval="2m"
loop action=status
loop action=stop loop_id="loop-2"
Loops live in the current harness process and disappear when the process exits (not persisted across restarts, consistent with Claude Code /loop).
Development
pnpm install
pnpm run build # tsdown: Node half (lib/index.mjs) + client bundle (lib/client.js)
- Node half:
src/index.mjs(commands/tool/loops status route/plugins/dsh-loop/loops) - client:
src/client/index.tsx(dock slot status bar)
License
MIT License (example plugin of the DSH ecosystem).
Compatibility
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.3.0 | — | — |
| 0.4.1 | — | — |
Comments
Loading…
Similar plugins
by vlln
DSH 插件:后台任务状态条(对话页任务进度 + 实时输出 tail)。官方 bundle 插件,dsh plugin --profile web add 安装
★ 9
MIT
JavaScript
Aug 19, 2026
dsh plugin --profile web add @vlln/dsh-task-statusby webkong
DSH 插件管理器:在 Web 设置页管理内置与三方插件——安装、卸载、启用、停用,支持 GitHub 搜索安装与非 bundle 插件一键装载
★ 4
MIT
JavaScript
Sep 1, 2026
dsh plugin --profile web add @webkong/dsh-plugin-managerby vlln
DSH 插件:对话节点导航条(右缘节点串快速跳转 user 消息)。官方 bundle 插件,dsh plugin --profile web add 安装
★ 58
↓ 517/wk
MIT
TypeScript
Aug 20, 2026
dsh plugin --profile web add @vlln/dsh-navbarby Alail691
把 DSH 侧栏的「插件」整体收进设置:在「设置 → 插件」里新增一个「插件管理」标签页,内嵌官方插件面板的全部能力(浏览 / 安装 / 开关 / 卸载)。Bring the sidebar's Plugins page into Settings as a tab, embedding the official plugin manager.
★ 0
MIT
JavaScript
Oct 16, 2026
dsh plugin --profile web add dsh-plugins-in-settingsby achenjins
DSH × RunningHub 工作流适配插件:让模型直接生图 / 生视频 / 生音频。两个模型侧工具(runninghub_search 发现 + runninghub_call 执行)覆盖「AI 辅助配置工作流 → 读提示词优化文档 → 后台跑工作流 → 结果图/视频回到聊天」全链路;多 Key 池按国内 / 海外分池、额度不足自动换号;数据与工作流配置落在 DSH_HOME/runninghub,自带浏览器配置面板(工作流默认折叠、点开才展开节点)。
★ 4
↓ 433/wk
MIT
JavaScript
Oct 28, 2026
dsh plugin --profile web add dsh-runninghub-pluginby better-er
dsh·去重复 diff 展示插件
★ 13
↓ 480/wk
MIT
TypeScript
Oct 2, 2026
dsh plugin --profile web add dsh-edit-diff