docs: document background jobs across prompts, config example, and README

- Extend the injected Background Jobs prompt guidance: system_notifications
  push on completion, collect-only-when-idle wait protocol, and the graph
  LLM-node collect-before-final-turn rule
- Mention the system_notifications push in the agent spawning guidance and
  in the sisyphus/architect wait-protocol text (agent completions push
  notifications too)
- config.example.yaml: max_concurrent_jobs (default 5, 0 = disabled)
- README: features-list entry pointing at the Background-Jobs wiki page
This commit is contained in:
2026-08-25 18:24:44 -06:00
parent 24ed674952
commit 6256b5fcfa
5 changed files with 16 additions and 9 deletions
+1
View File
@@ -51,6 +51,7 @@ Coming from [AIChat](https://github.com/sigoden/aichat)? Follow the [migration g
* [Skills](https://github.com/Dark-Alex-17/coyote/wiki/Skills): Modular knowledge or capability packs the LLM can load and unload mid-conversation. Multiple skills compose; instructions stack, tools and MCPs union. * [Skills](https://github.com/Dark-Alex-17/coyote/wiki/Skills): Modular knowledge or capability packs the LLM can load and unload mid-conversation. Multiple skills compose; instructions stack, tools and MCPs union.
* [Agents](https://github.com/Dark-Alex-17/coyote/wiki/Agents): Leverage AI agents to perform complex tasks and workflows, including sub-agent spawning, teammate messaging, and user interaction tools. * [Agents](https://github.com/Dark-Alex-17/coyote/wiki/Agents): Leverage AI agents to perform complex tasks and workflows, including sub-agent spawning, teammate messaging, and user interaction tools.
* [Graph Agents](https://github.com/Dark-Alex-17/coyote/wiki/Graph-Agents): Define an agent as a declarative, YAML-driven workflow. A directed graph of typed nodes (LLM calls, scripts, approvals, user input, RAG retrieval, sub-agent spawns). * [Graph Agents](https://github.com/Dark-Alex-17/coyote/wiki/Graph-Agents): Define an agent as a declarative, YAML-driven workflow. A directed graph of typed nodes (LLM calls, scripts, approvals, user input, RAG retrieval, sub-agent spawns).
* [Background Jobs](https://github.com/Dark-Alex-17/coyote/wiki/Background-Jobs): Run long tool calls (builds, test suites, slow MCP calls) in the background with the `job__*` tools while the model keeps working — completion arrives as a push notification.
* [Todo System](https://github.com/Dark-Alex-17/coyote/wiki/TODO-System): Built-in task tracking for improved LLM reliability with smaller models. * [Todo System](https://github.com/Dark-Alex-17/coyote/wiki/TODO-System): Built-in task tracking for improved LLM reliability with smaller models.
* [Environment Variables](https://github.com/Dark-Alex-17/coyote/wiki/Environment-Variables): Override and customize your Coyote configuration at runtime with environment variables. * [Environment Variables](https://github.com/Dark-Alex-17/coyote/wiki/Environment-Variables): Override and customize your Coyote configuration at runtime with environment variables.
* [Client Configurations](https://github.com/Dark-Alex-17/coyote/wiki/Clients): Configuration instructions for various LLM providers. * [Client Configurations](https://github.com/Dark-Alex-17/coyote/wiki/Clients): Configuration instructions for various LLM providers.
+1 -1
View File
@@ -261,7 +261,7 @@ instructions: |
3. **Wait for Sisyphus.** Do not poll `agent__collect` on a running agent — do non-overlapping work 3. **Wait for Sisyphus.** Do not poll `agent__collect` on a running agent — do non-overlapping work
(e.g. prep the next task's context) or end your response and wait for the completion (e.g. prep the next task's context) or end your response and wait for the completion
notification, then `agent__collect`. notification (a `system_notifications` entry on your next tool result), then `agent__collect`.
4. **Verify against the plan (divergence check).** When Sisyphus returns, do NOT trust its 4. **Verify against the plan (divergence check).** When Sisyphus returns, do NOT trust its
self-report — get an INDEPENDENT conformance verdict: self-report — get an INDEPENDENT conformance verdict:
+1 -1
View File
@@ -233,7 +233,7 @@ instructions: |
1. Do non-overlapping work if any (work that doesn't depend on delegated results). 1. Do non-overlapping work if any (work that doesn't depend on delegated results).
2. If none → **end your response.** Do not call `agent__collect` immediately. 2. If none → **end your response.** Do not call `agent__collect` immediately.
3. The system notifies you on completion. 3. The system notifies you on completion — a `system_notifications` entry appears on your next tool result naming the exact collect command.
4. On notification, call `agent__collect` to retrieve results. 4. On notification, call `agent__collect` to retrieve results.
### Anti-duplication rule (BLOCKING) ### Anti-duplication rule (BLOCKING)
+1
View File
@@ -204,6 +204,7 @@ summary_context_prompt: > # The text prompt used for including the summar
'This is a summary of the chat history as a recap: ' 'This is a summary of the chat history as a recap: '
compression_keep_last: 0 # Number of most-recent messages to keep visible after compression (0 = compress all messages) compression_keep_last: 0 # Number of most-recent messages to keep visible after compression (0 = compress all messages)
max_tool_result_chars: null # Cap on tool result characters forwarded to the model per call (null = no cap) max_tool_result_chars: null # Cap on tool result characters forwarded to the model per call (null = no cap)
max_concurrent_jobs: 5 # Max background jobs (`job__*` tools) running at once per context (default: 5; 0 disables background jobs entirely)
# ---- Memory ---- # ---- Memory ----
# See the [Memory documentation](https://github.com/Dark-Alex-17/coyote/wiki/Memory) for more information. # See the [Memory documentation](https://github.com/Dark-Alex-17/coyote/wiki/Memory) for more information.
+12 -7
View File
@@ -112,9 +112,10 @@ pub(in crate::config) const DEFAULT_SPAWN_INSTRUCTIONS: &str = indoc! {"
### CRITICAL: Never end your turn with pending agents ### CRITICAL: Never end your turn with pending agents
Spawned agents do NOT report back on their own. They run in the background until you Spawned agents do NOT deliver their results on their own. When one finishes, a
actively reclaim them with `agent__collect` (to get their output) or `agent__cancel` `system_notifications` entry appears on your next tool result naming the exact collect
(to discard them). If you spawn agents and then emit a final message without reclaiming command — but the output is only retrieved when you actively reclaim it with `agent__collect`
(or discard it with `agent__cancel`). If you spawn agents and then emit a final message without reclaiming
them, the system will detect the unreclaimed agents and reject the turn-end, injecting them, the system will detect the unreclaimed agents and reject the turn-end, injecting
a reminder forcing you to handle them. After several such reminders, the system will a reminder forcing you to handle them. After several such reminders, the system will
auto-cancel them and warn you that work was lost. auto-cancel them and warn you that work was lost.
@@ -194,10 +195,14 @@ pub(in crate::config) const DEFAULT_JOB_INSTRUCTIONS: &str = indoc! {"
## Background Jobs ## Background Jobs
For long-running tool calls (builds, test suites, slow commands), call `job__start` and keep For long-running tool calls (builds, test suites, slow commands), call `job__start` and keep
working instead of blocking. Check progress with `job__check` (sparingly), block on the result working instead of blocking — completion arrives as a `system_notifications` entry on your
with `job__collect`, cancel with `job__cancel`, and list jobs with `job__list`. Collect or next tool result. Check progress with `job__check` (sparingly), block on the result with
cancel every job you started before ending your turn. Jobs run against a snapshot of the `job__collect` (only when you have nothing else to do), cancel with `job__cancel`, and list
current config/environment and do not survive coyote exiting. jobs with `job__list`. Collect or cancel every job you started before ending your turn. In
graph LLM nodes, collect or cancel your jobs before ending your final node turn — an
uncollected job at node turn-end burns node iterations via the guardrail and can fail the
node. Jobs run against a snapshot of the current config/environment and do not survive
coyote exiting.
" "
}; };