opencode icon indicating copy to clipboard operation
opencode copied to clipboard

feat(tui): fire-and-forget async subagent tasks

Open IgorWarzocha opened this issue 3 months ago • 5 comments

Summary

  • Add fire-and-forget async subagent tasks with parent notifications and status tracking.
  • Surface background task state in the TUI and system prompt, including subtask reminders and navigation.
  • Add async task limits and async-only permission rules for tighter control.
  • <task_tool_agents> system reminder similar to <skills_available> with a list of currently running async subagents.

Config

  • experimental.async_task_limit (default 3)
  • experimental.async_task_permissions
  • permission.task_async

UX

  • Sidebar shows background tasks with status.
  • Session view renders subtask completion reminders and links to subagent sessions.
  • Compaction includes running async tasks to preserve context.

Testing

  • I have tested it as thoroughly as I can, but there's only so much I can do myself (my imagination ran out of edge case scenarios). Hope it at least helps as a stub if a similar feature is planned.

IgorWarzocha avatar Jan 07 '26 13:01 IgorWarzocha

The following comment was made by an LLM, it may be inaccurate:

No duplicate PRs found

github-actions[bot] avatar Jan 07 '26 13:01 github-actions[bot]

I absolutely love this!

I know this is not the scope of this PR, but I was wondering if we could slip in optional model to the task tool. Ignore if this is out of scope.

arsham avatar Jan 07 '26 16:01 arsham

I absolutely love this!

I know this is not the scope of this PR, but I was wondering if we could slip in optional model to the task tool. Ignore if this is out of scope.

@arsham Thank you. I decided to keep it minimal to make it a. easier to integrate b. more likely to merge.

I have a more complex version that restores input prompt box to subagents, allows to pass a summary back to main agent via /finished if you ever interact with a subagent, can purge subagent sessions via /wipe (current) or /wipeout (all)... And another one that allows a skill to be an argument of a task tool, where it basically injects the skill immediately before the subagent starts doing anything.

It's all doable but overcomplicates a single pr.

IgorWarzocha avatar Jan 07 '26 17:01 IgorWarzocha

@IgorWarzocha those are great ideas. Do you have them on your fork by any chance?

arsham avatar Jan 07 '26 17:01 arsham

@arsham WIP. need proper testing etc, and all are based on pre 1.1.1. Unsure why started with async one, it just felt right. https://github.com/IgorWarzocha/opencode/pulls

IgorWarzocha avatar Jan 07 '26 17:01 IgorWarzocha