Merge pull request #1453 from qwibitai/fix/task-scripts-instructions-clean
fix: improve task scripts agent instructions
This commit is contained in:
@@ -74,3 +74,42 @@ No `##` headings. No `[links](url)`. No `**double stars**`.
|
|||||||
### Discord channels (folder starts with `discord_`)
|
### Discord channels (folder starts with `discord_`)
|
||||||
|
|
||||||
Standard Markdown works: `**bold**`, `*italic*`, `[links](url)`, `# headings`.
|
Standard Markdown works: `**bold**`, `*italic*`, `[links](url)`, `# headings`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task Scripts
|
||||||
|
|
||||||
|
For any recurring task, use `schedule_task`. Frequent agent invocations — especially multiple times a day — consume API credits and can risk account restrictions. If a simple check can determine whether action is needed, add a `script` — it runs first, and the agent is only called when the check passes. This keeps invocations to a minimum.
|
||||||
|
|
||||||
|
### How it works
|
||||||
|
|
||||||
|
1. You provide a bash `script` alongside the `prompt` when scheduling
|
||||||
|
2. When the task fires, the script runs first (30-second timeout)
|
||||||
|
3. Script prints JSON to stdout: `{ "wakeAgent": true/false, "data": {...} }`
|
||||||
|
4. If `wakeAgent: false` — nothing happens, task waits for next run
|
||||||
|
5. If `wakeAgent: true` — you wake up and receive the script's data + prompt
|
||||||
|
|
||||||
|
### Always test your script first
|
||||||
|
|
||||||
|
Before scheduling, run the script in your sandbox to verify it works:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash -c 'node --input-type=module -e "
|
||||||
|
const r = await fetch(\"https://api.github.com/repos/owner/repo/pulls?state=open\");
|
||||||
|
const prs = await r.json();
|
||||||
|
console.log(JSON.stringify({ wakeAgent: prs.length > 0, data: prs.slice(0, 5) }));
|
||||||
|
"'
|
||||||
|
```
|
||||||
|
|
||||||
|
### When NOT to use scripts
|
||||||
|
|
||||||
|
If a task requires your judgment every time (daily briefings, reminders, reports), skip the script — just use a regular prompt.
|
||||||
|
|
||||||
|
### Frequent task guidance
|
||||||
|
|
||||||
|
If a user wants tasks running more than ~2x daily and a script can't reduce agent wake-ups:
|
||||||
|
|
||||||
|
- Explain that each wake-up uses API credits and risks rate limits
|
||||||
|
- Suggest restructuring with a script that checks the condition first
|
||||||
|
- If the user needs an LLM to evaluate data, suggest using an API key with direct Anthropic API calls inside the script
|
||||||
|
- Help the user find the minimum viable frequency
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ The task will run in that group's context with access to their files and memory.
|
|||||||
|
|
||||||
## Task Scripts
|
## Task Scripts
|
||||||
|
|
||||||
When scheduling tasks that check a condition before acting (new PRs, website changes, API status), use the `script` parameter. The script runs first — if there's nothing to do, you don't wake up.
|
For any recurring task, use `schedule_task`. Frequent agent invocations — especially multiple times a day — consume API credits and can risk account restrictions. If a simple check can determine whether action is needed, add a `script` — it runs first, and the agent is only called when the check passes. This keeps invocations to a minimum.
|
||||||
|
|
||||||
### How it works
|
### How it works
|
||||||
|
|
||||||
|
|||||||
@@ -329,6 +329,7 @@ async function runAgent(
|
|||||||
id: t.id,
|
id: t.id,
|
||||||
groupFolder: t.group_folder,
|
groupFolder: t.group_folder,
|
||||||
prompt: t.prompt,
|
prompt: t.prompt,
|
||||||
|
script: t.script || undefined,
|
||||||
schedule_type: t.schedule_type,
|
schedule_type: t.schedule_type,
|
||||||
schedule_value: t.schedule_value,
|
schedule_value: t.schedule_value,
|
||||||
status: t.status,
|
status: t.status,
|
||||||
@@ -685,6 +686,7 @@ async function main(): Promise<void> {
|
|||||||
id: t.id,
|
id: t.id,
|
||||||
groupFolder: t.group_folder,
|
groupFolder: t.group_folder,
|
||||||
prompt: t.prompt,
|
prompt: t.prompt,
|
||||||
|
script: t.script || undefined,
|
||||||
schedule_type: t.schedule_type,
|
schedule_type: t.schedule_type,
|
||||||
schedule_value: t.schedule_value,
|
schedule_value: t.schedule_value,
|
||||||
status: t.status,
|
status: t.status,
|
||||||
|
|||||||
Reference in New Issue
Block a user