openduo/duoduo

duoduo-loop

Set up, manage, and troubleshoot recurring loops on a duoduo install — the /loop command and the background jobs it creates.

Zobacz źródło
Oryginalny dokument Skill

Treść z repozytorium z zachowaniem nagłówków, przykładów, kodu, tabel, linków i obrazów.

Duoduo Loop

/loop turns a one-line request into a recurring background task. Type /loop <what you want done, in your own words> in any foreground duoduo chat — a Feishu DM, the stdio CLI, or an editor (ACP) session. The agent reads cadence, engine, and delivery wishes straight from your prose, drafts an execution plan, and creates the task once you confirm. Loops run in their own background job sessions; your chat stays a human conversation and receives results as messages.

The confirmation flow

Every /loop goes plan-first:

You: /loop check the staging deploy every 20 minutes and tell me the moment something breaks Agent: Plan — check every 20 minutes in a background task; message you only on anomalies; task id staging-watch; say "stop staging-watch" to end it. Confirm? You: confirmed

The plan always shows the cadence, the engine/model, how results arrive, and how to stop — read it as your cost receipt before saying yes. To create in one step, put the waiver in the request itself: /loop no need to confirm — every 20 minutes, ….

Three loop shapes, by example

1. Fixed cadence — the same light work every tick (digests, sweeps, health pings).

/loop every morning at 8 send me a Hacker News digest

Each run starts fresh, does the job, and messages you the result. Calendar times and intervals both work ("every Monday at 9", "every 2 hours"). Interval durations can combine units without spaces (2h30m, 1d6h4m; units: s/m/h/d/w). An invalid or impossible schedule is rejected when the loop is created instead of being accepted and then silently never firing.

2. Self-paced — a short-lived mission that decides its own next check.

/loop watch the CI on example/repo#123, rerun it when it fails, and tell me once it's green and merged — pace yourself

The loop picks its next wake time from what it just observed — checking often while things are hot, backing off when quiet — and ends itself when the goal completes, with a final report.

3. Long-term tracker — months-long topics, heavy reading, accumulated judgment.

/loop track developments on <topic> long-term; ping me daily only when there are real highlights, and hand the heavy reading to background helpers

A long-lived coordinator carries the running judgment across weeks while short-lived helpers do the heavy fetching and reading; the agent orchestrates that fan-out, the per-round quality checks, and the delivery for you. What you control in plain words is the shape: how often to hear from it, what counts as a real highlight, and that the heavy work goes to helpers. Each round arrives either complete or with any gap named rather than hidden, and the tracker can sleep indefinitely and wake again — see "pause" below.

Choosing engine and model in plain words

Name them in the request; they pass through as-is:

/loop using codex with gpt-5.4-mini, check every hour whether <site> is up

Cheap models suit high-frequency checks; save strong models for the daily synthesis loops. The plan echoes your choice back before anything is created.

Managing running loops

All management happens in chat, with the host CLI as the inspection fallback:

  • List — "show me my loops" → ids, schedules, and the last result of

each. On the host, each loop is one markdown file under <runtime_dir>/var/jobs/active/.

  • Stop — "stop <id>" → the job is archived to

<runtime_dir>/var/jobs/archive/ and can be restored from there.

  • Pause / wake (trackers) — a long-term tracker pauses by simply

sleeping past its next wake; mention it in chat ("pick that <topic> tracker back up") to wake it with its memory intact.

  • Re-pace — "make <id> daily instead" → the agent reschedules it in

place.

Cost notes

The interval is the spend rate: every fire is a real model run. The confirmation plan is the moment to tighten cadence and pick a cheaper model. For "watch until done" needs, prefer the self-paced shape — it spends checks where the action is and stops by itself.

Troubleshooting, by scenario

  • "The schedule came and went, nothing happened" — run

duoduo daemon status first; the scheduler lives in the daemon, so a stopped daemon means a silent calendar. Then ask the agent to read the job ("what's the state of <id>?") — the listing's last result and last error say what happened on the most recent fire.

  • "It pings me too much" — ask for signal-only delivery: "switch that

loop to alerting me only on anomalies". Monitoring loops created through the plan default to signal-only; every-run reports are the opt-in.

  • "It failed once and went quiet" — transient startup failures retry on

their own; a loop that hit a real error tells you so and stops. Either way, reply "bring it back up" and the agent re-arms or recreates it.

  • "What did it do historically?" — archived loops stay readable: ask

"read me the archived record of <id>", or open the file under <runtime_dir>/var/jobs/archive/.

z tego samego repozytorium

Więcej Skills

Wszystkie Skills
openduo
Społeczność

duoduo-admin

Explain and manage a host-mode duoduo installation after onboarding. Use when the user asks how duoduo works, how stdio/daemon/channel/session fit together, where duoduo stores config and state, how to inspect current setup, how to upgrade duoduo itself, where something lives on disk (kerneldir, runtimedir, .env, descriptor.md), how to archive or recover a specific session (duoduo session archive, sessions-archive directory, restoring an archived session), or for broad 'configure duoduo' / 'fix my duoduo' requests that haven't narrowed to a specific channel or runtime setting yet. Also trigger for Chinese: 帮我理解 duoduo, duoduo 是怎么工作的, 看看我现在的 duoduo 配置, 帮我管理 duoduo, 升级 duoduo, 升级要注意什么, duoduo 哪个路径存什么, 归档 session, 删掉 session, 恢复归档 session.

instalacje
1
GitHub Stars
9
Aktualizacja
9 wrz
openduo
Społeczność

duoduo-channel-admin

Install, start, stop, inspect, reset, and configure duoduo host-mode channels. Use when the request involves: channel lifecycle (install/list/start/stop/status/logs), Feishu setup card or /setup command, Feishu owner DM / main session / FEISHUBOTOWNER configuration, the 'main session is locked' refusal, stale card error, resetting a bound Feishu chat, WeChat QR login or packaging, ACP editor integration, channel descriptor editing (kind vs instance). Also trigger for Chinese: 拉起 feishu 通道, 拉起微信 channel, 配置 channel 提示词, 改 stdio 的 workspace, 查看 channel 状态, 飞书机器人怎么配, 设置 owner, 清除 session, 重置 channel.

instalacje
1
GitHub Stars
9
Aktualizacja
9 wrz
openduo
Społeczność

duoduo-pipeline

Build event-driven pipelines that connect a zero-LLM mechanical layer to a duoduo brain job via session notify. Use when the user wants to monitor an external data source (feeds, prices, files, webhooks) and only wake an agent when something worth acting on actually arrives — keeping LLM costs at zero during idle periods. Also trigger for: 机械采集, 事件驱动, 按需唤醒, 数据监控, keepalive job, 外部触发, 只在有料时干活, 省 token.

instalacje
1
GitHub Stars
9
Aktualizacja
9 wrz
openduo
Społeczność

duoduo-runtime-admin

Manage host-mode duoduo daemon-level settings, diagnostics, and the duoduo session / duoduo spine CLIs. Use for: daemon status, config and logs; agent runtime setup and selection (Claude/Codex/Grok/Pi, ALADUODEFAULTRUNTIME); ALADUO keys in ~/.config/duoduo/.env; refreshing subconscious partition prompts; the duoduo memory CLI; reading the Spine event log; archiving or pruning the usage ledger; model profiles for third-party models (context-window caps, endpoint routing, subagent tier aliases); codex tool-surface trimming; pi compaction sizing and one-character replies; session management (list, alias, wake/notify by name, archive). Chinese triggers: 启用 codex/grok/pi runtime, 设置默认 runtime, 打开 debug log, 关闭 telemetry, 调 cadence 频率, 查 daemon 配置/日志, 刷新潜意识, 读 spine/事件日志, 清理 usage, 给会话起名, 唤醒/通知 session, 归档会话, 模型 profile, 配置模型上下文窗口, 裁剪 codex 工具, pi 会话只回一个字. Does NOT handle channel-kind settings (Feishu/WeChat/ACP) — those live in duoduo-channel-admin.

instalacje
1
GitHub Stars
9
Aktualizacja
9 wrz