openduo/duoduo

duoduo-channel-admin

Install, start, stop, inspect, reset, and configure duoduo host-mode channels.

Voir la source
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

Duoduo Channel Admin

Host-mode channel lifecycle and channel-facing configuration. Route by kind (Feishu / WeChat / ACP) and by task (install / configure / diagnose / reset).

Start with discovery

Before making any change, run the smallest read-only probe:

bash
duoduo daemon status             # confirm host mode, daemon alive
duoduo daemon config             # resolve kernel_dir, runtime_dir, defaults
duoduo channel list              # see installed plugins + running state

When editing a specific channel instance, always inspect the current descriptor first:

bash
cat <runtime_dir>/var/channels/<channel_id>/descriptor.md

Route by kind

Each channel kind has its own reference. Load only the one that matches the request to avoid polluting context with unrelated detail.

Covers install, credentials, v0.5 /setup routing matrix, main session contract (owner DM auto-spawn), FEISHU_BOT_OWNER security hygiene, 200340 triage, reset walkthrough, stale-card guard, accepted v0.5 limits.

Covers install, start, QR login, state-dir resolution.

Covers install, editor integration semantics.

Cross-kind conventions — installer package specs, why install is a pure write-to-disk (a running plugin keeps serving the old code until an explicit stop && start), and the lifecycle verbs — live in references/channel-lifecycle.md.

When the request is "diagnose a misbehaving Feishu channel" and the symptom isn't obvious, read references/diagnose-feishu.md — it walks a decision tree (card errors, /setup refusals, stale history, stranger access, ownership drift) to the right remediation.

Configure channel behavior

Descriptor model: kind-level for defaults applied to every channel of a kind; instance-level for one specific channel.

  • Kind descriptor: <kernel_dir>/config/<kind>.md
  • Instance descriptor: <runtime_dir>/var/channels/<channel_id>/descriptor.md

Editable keys by hand:

  • new_session_workspace
  • prompt_mode (claude, grok, and pi; refused on an explicit runtime: codex job)
  • time_gap_minutes
  • runtime (claude | codex | grok | pi — pi sessions also need a

model pointer; see duoduo-runtime-admin's pi-runtime reference)

  • stream
  • allowedTools (permission auto-approve — does not extend the tool surface)
  • disallowedTools (MCP tools only)
  • additionalDirectories
  • claude.tools (extra built-in tools unioned onto the fixed

allowlist core; the built-in surface is allowlist-based)

Two instance-binding keys are normally written by channel.spawn (not hand-edited): bound_by, bound_at. See references/channel-config-model.md for the full list and the new_session_workspace priority rules.

For frontmatter edits that must preserve Markdown body and comments, use scripts/patch_markdown_frontmatter.py.

Reset a bound channel

When a channel's descriptor, session, or message history is stale and the user wants a clean slate:

bash
bash scripts/reset-feishu-session.sh --channel-id feishu-<chat_id>
duoduo channel feishu stop && duoduo channel feishu start

The script calls duoduo session archive <session_key> for every session that references the channel. That RPC moves the session dir + ingress + outbox records + channel descriptor under var/<kind>-archive/ (timestamped, reversible via mv). The plugin restart is mandatory — it caches subscription state in memory.

Read references/reset-feishu-session.md for what the script cleans and why each piece matters. When users report "bot quotes old messages after I reset", they hit the reason this script exists.

Prompt editing

  • The Markdown body of kernel/config/<kind>.md is the kind prompt.
  • The Markdown body of descriptor.md is the instance prompt.
  • Instance frontmatter and prompt override kind defaults.
  • Preserve bootstrap-seeded guidance comments when possible.

Operating rules

  • Prefer the smallest scope: kind-level for defaults, instance-level

for a single room or session surface.

  • After editing ~/.config/duoduo/.env channel credentials, restart

the affected channel process (not just the daemon).

  • After installing a new plugin, verify with duoduo channel list

and duoduo channel <type> status.

  • If a channel fails after credentials, install state, and runtime

config all look correct, treat it as a likely product or plugin issue — see ../duoduo-admin/references/issue-reporting.md.

  • If the request is really about telemetry, cadence, debug logs, or

Codex, hand off to duoduo-runtime-admin.

du même dépôt

Autres Skills

Tous les Skills
openduo
Communauté

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.

installations
1
GitHub Stars
9
Mis à jour
9 sept.
openduo
Communauté

duoduo-loop

Set up, manage, and troubleshoot recurring loops on a duoduo install — the /loop command and the background jobs it creates. Use when the user wants duoduo to do something repeatedly or on a schedule, watch something until it finishes, run a long-term tracker, or inspect/stop/pause/re-pace an existing loop. Also trigger for Chinese: 定时任务, 循环任务, 周期任务, 每天帮我, 每小时, 盯着…直到, 持续跟进, 长期跟踪, 看看我的循环, 停掉那个 loop, 暂停循环, 改一下节奏, 让多多定期做某事.

installations
1
GitHub Stars
9
Mis à jour
9 sept.
openduo
Communauté

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.

installations
1
GitHub Stars
9
Mis à jour
9 sept.
openduo
Communauté

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.

installations
1
GitHub Stars
9
Mis à jour
9 sept.