CommandCodeAI / CommandCodeAI/command-code

feat: Allow mods to spawn and await background agents / background work

オープン
#691 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
言語のデータがありません
スター
4k
フォーク
350
PR マージ指標
30日以内にマージされた PR はありません

説明

Feature Description

Summary

Mods currently have no way to run work in the background. The agent tool (with run_in_background: true), background agents (background: true), and background shell tasks are all seams the main agent drives — none are reachable from a mod. Mods only have cmd.exec (foreground shell) and the synchronous onStop + prepareNextTurn force-continue seam for post-run model turns.

Motivation

Post-run maintenance work — summarization, extraction, knowledge discovery, compaction — is exactly the kind of task that should run detached from the main loop, on a cheap model, without blocking or polluting the session. Today a mod that wants a model to do post-run work must inject a continuation turn (onStop with {continue: true}) that runs in-line: it occupies the same run, renders in the feed, and competes with sibling mods over the single continuation slot (harness short-circuits "any mod returning continue wins").

Alternatives considered
  • Keep the onStop continuation seam and just make the injected turn quieter. Doesn't solve the collision problem (one continuation slot shared by all
    mods) or the "detached from the run" goal.
  • Background shell + cmd.events polling. Mods could shell out to cmd -p via a background process, but there's no background cmd.exec, and reacting to
    completion would require polling from a hook — no clean completion signal.

Acceptance criteria

  • A mod can launch a background agent and continue the session without blocking.
  • The spawning mod is notified (hook or event) when the agent completes, with the agent's final result.
  • The behavior is observable in the TUI Background panel (Ctrl+B) like other background work.
  • Works headless (-p), degrading deterministically.
Use Case
Mods am building or trying out that could use background running
  • Memory/journal mods that extract compressed episodes or discover durable facts from a finished run (e.g. the project-brain / task-journal pattern).

  • Any mod wanting to fan out parallel investigation or run a long background process and react when it completes.
    Current gap

  • No cmd.agent(...) / cmd.spawnAgent(...) equivalent on ModApi — a mod cannot launch the built-in agent tool or a custom agent.

  • No background variant of cmd.exec (no way to get a task id + log + wake-up like shell_command run_in_background / monitor_command).

  • No hook or event a mod can register to be notified when a background agent it spawned finishes (the result of agent_output never reaches a mod).

Proposed API (suggestion — open to design)

Something like:

  • cmd.agent({prompt, agent?, model?, runInBackground: true}) → Promise<{agentId}> — spawn a background agent from a mod.
  • A completion hook or event, e.g. cmd.hooks({onAgentResult}) or cmd.events.on('agent_completed', ...), delivering the agent's final result to the
    spawning mod.
  • Optionally: a background cmd.exec variant returning a task id + on-disk log, mirroring shell_command run_in_background.
Additional Context
  • Sort of how taste learning works to be honest
How important is this to you?

Medium. Nice mod improvements for UX, but right now these are experiments and sync running is ok.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、既存の ModApi cmd.exec のインターフェースと、issue で説明されている agent、background-agent、background-shell 間の接続部分を追跡します。それらの動作を TUI Background panel (Ctrl+B) および headless モード (-p) と比較します。完了の条件は、mod がブロックせずに処理を起動でき、完了時に最終結果を受け取り、それを background panel に表示し、headless モードでは決定論的に縮退することです。

索引モデルが issue の本文から書いたものです。

評価

領域
api, backend, cli
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。