Solar 异步 Tasks
- 作者仓库星标 1
- 作者仓库 Solar
Solar Async Tasks
Purpose
Provide a local-first, filesystem task runtime for Solar:
- capture work as drafts,
- plan and approve work before execution,
- queue tasks by priority and schedule,
- execute approved tasks through
solar-router, - pause parent tasks until child tasks finish,
- preserve task state under
sun/runtime/async-tasks/.
Use this skill when the work should not block the current conversation, needs provider execution, spans multiple AI providers, waits on subtasks, recurs over time, or depends on external resources.
Required MCP
None
Dependencies
solar-router: executes active tasks withchannel=async-taskandmode=direct_only.solar-system: optional but preferred host supervisor for automatic queue processing.
Router diagnostics:
bash core/skills/solar-router/scripts/onboard_router_env.sh
bash core/skills/solar-router/scripts/diagnose_router.sh
Core Commands
# Setup runtime directories
bash core/skills/solar-async-tasks/scripts/setup_async_tasks.sh
# Create a task draft
bash core/skills/solar-async-tasks/scripts/create.sh "My Task" "Do something useful"
# Plan and approve
bash core/skills/solar-async-tasks/scripts/plan.sh <task_id>
bash core/skills/solar-async-tasks/scripts/approve.sh <task_id> normal
# List task state
bash core/skills/solar-async-tasks/scripts/list.sh
# Schedule or recur
bash core/skills/solar-async-tasks/scripts/schedule.sh <task_id> "10:00" "1,2,3,4,5"
bash core/skills/solar-async-tasks/scripts/set_recurring.sh <task_id>
# Requeue after fixing an error
bash core/skills/solar-async-tasks/scripts/requeue_from_error.sh <task_id>
# Validate lifecycle and packaging
bash core/skills/solar-async-tasks/scripts/validate_lifecycle.sh
python3 core/skills/solar-skill-creator/scripts/package_skill.py core/skills/solar-async-tasks /tmp
Operator-only execution entrypoint:
bash core/skills/solar-async-tasks/scripts/ensure_async_tasks.sh
Do not call run_worker.sh directly. ensure_async_tasks.sh is the only execution entrypoint, and normally solar-system calls it automatically.
System Activation
For automatic host-level execution, enable async-tasks through solar-system:
SOLAR_SYSTEM_FEATURES=async-tasks
Install or check the host orchestrator through solar-system:
bash core/skills/solar-system/scripts/install_launchagent_macos.sh
bash core/skills/solar-system/scripts/check_orchestrator.sh
When solar-system supervises async-tasks, the agent stops after approve.sh; the LaunchAgent picks up the queued task on its tick.
Fallback rule: if solar-system is not supervising async-tasks, use ensure_async_tasks.sh once as documented fallback. Do not bypass the runtime with direct provider CLIs.
Workflow
- Draft:
create.shwrites todrafts/. - Plan:
plan.shmoves the task toplanned/. - Approve:
approve.shmoves it toqueued/with priority. - Execute:
solar-systemcallsensure_async_tasks.sh, which starts one eligible queued task and executes it. - Complete: success moves to
completed/, recurrence may requeue, failure moves toerror/.
For user-facing work, approval ends the conversational agent's execution role. The system runtime owns actual execution.
Use this workflow for:
- Multiprovider review of a plan or proposal, where child tasks may target specific providers and the parent synthesizes results;
- External provider execution that may require network, auth, keychain, browser, or MCP resources;
- Long-running analysis where unavailable providers should be recorded as errors without blocking synthesis from available results.
If the user asked for review before final edits, write a proposal or result artifact and wait for approval before modifying the final target file.
Execution Consent
Queued or active tasks are already approved to execute their declared body and write declared artifacts/output paths.
Still request explicit approval for:
- external sends,
- deletions,
- credential changes,
- irreversible actions,
- writes outside the declared task scope.
See references/execution-consent.md.
Task Body Authoring
The task body is the instruction set executed by the provider.
Use ## Result in the task file when:
- the task is a child task whose parent will read its output,
- the body does not define a concrete output path.
Do not append ## Result when the task writes a dedicated artifact such as a plan, report, message draft, or recurring run output. In that case, the artifact is the result.
Find the current task file by Task ID because files move between state folders:
TASK_FILE=$(grep -rl "id: \"<task_id>\"" sun/runtime/async-tasks/ | head -1)
Parent Tasks With Subtasks
Use parent tasks when final output depends on independent child tasks, such as multiprovider feedback.
Rules:
- Execution 1 creates child tasks and stops.
- The runtime requeues the parent with
blocked_by_task_ids. start_next.shskips the parent until child tasks are terminal.completed,archived, anderrorare terminal for dependency purposes.- Execution 2 reads child
## Resultsections and synthesizes the final artifact. - Do not use
blocked_by_task_idsas the task body's execution-2 signal; it is internal runtime metadata and is removed before activation.
See references/task-with-subtasks.md.
Reference Guides
| Pattern | File |
|---|---|
| Single execution | references/simple-task.md |
| Subtasks with synthesis | references/task-with-subtasks.md |
| Detached subtasks | references/detached-subtasks.md |
| Recurring task with validation gate | references/recurring-with-gate.md |
| Execution consent | references/execution-consent.md |
| Scheduling, recurrence, cleanup, notifications, errors | references/runtime-operations.md |
| Resource hook system | references/hook-system.md |
Runtime States
Default root: sun/runtime/async-tasks/
drafts/: captured, not executable.planned/: ready for review, not executable.queued/: approved and eligible for execution.active/: currently executing.completed/: finished successfully.error/: failed and requires manual fix/requeue.archive/: historical or max-run recurring tasks.
Only queued/ is worker input.
Validation
After modifying this skill:
uv run --project core/tests pytest core/tests/skills/solar-async-tasks -q
bash core/skills/solar-async-tasks/scripts/validate_lifecycle.sh
python3 core/skills/solar-skill-creator/scripts/package_skill.py core/skills/solar-async-tasks /tmp
After any core/skills/ change, run:
solar client sync- 流狐分类
- 通用
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 88 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @Uhorizon-AI · 未声明 license
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 需简单配置
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- 未声明
- 底层运行要求
- 未声明
- 检测到的文件与系统行为
-
- 只读
- 允许写入 / 修改
- Shell 执行
- 检测到的网络行为
- 仅限本地
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 Provide a local-first, filesystem task runtime for Solar: capture work as drafts, plan and approve work before execution,
None
solar-router: executes active tasks with channel=async-task and mode=directonly. solar-system: optional but preferred host supervisor for automatic queue processing. Router diagnostics:
Operator-only execution entrypoint: Do not call runworker.sh directly. ensureasynctasks.sh is the only execution entrypoint, and normally solar-system calls it automatically.
For automatic host-level execution, enable async-tasks through solar-system: Install or check the host orchestrator through solar-system: When solar-system supervises async-tasks, the agent stops after approve.sh; the LaunchAgent picks up the queued task on…
Draft: create.sh writes to drafts/. Plan: plan.sh moves the task to planned/. Approve: approve.sh moves it to queued/ with priority.
# Solar Async Tasks
## Purpose
Provide a local-first, filesystem task runtime for Solar:
- capture work as drafts,
- plan and approve work before execution,
- queue tasks by priority and schedule,
- execute approved tasks through `solar-router`,
- pause parent tasks until child tasks finish,
- preserve task state under `sun/runtime/async-tasks/`.
Use this skill when the work should not block the current conversation, needs provider execution, spans multiple AI providers, waits on subtasks, recurs over time, or depends on external resources.
## Required MCP
None
## Dependencies
- `solar-router`: executes active tasks with `channel=async-task` and `mode=direct_only`.
- `solar-system`: optional but preferred host supervisor for automatic queue processing.
Router diagnostics:
```bash
bash core/skills/solar-router/scripts/onboard_router_env.sh
bash core/skills/solar-router/scripts/diagnose_router.sh
```
## Core Commands
```bash
# Setup runtime directories
bash core/skills/solar-async-tasks/scripts/setup_async_tasks.sh
# Create a task draft
bash core/skills/solar-async-tasks/scripts/create.sh "My Task" "Do something useful"
# Plan and approve
bash core/skills/solar-async-tasks/scripts/plan.sh <task_id>
bash core/skills/solar-async-tasks/scripts/approve.sh <task_id> normal
# List task state
bash core/skills/solar-async-tasks/scripts/list.sh
# Schedule or recur
bash core/skills/solar-async-tasks/scripts/schedule.sh <task_id> "10:00" "1,2,3,4,5"
bash core/skills/solar-async-tasks/scripts/set_recurring.sh <task_id>
# Requeue after fixing an error
bash core/skills/solar-async-tasks/scripts/requeue_from_error.sh <task_id>
# Validate lifecycle and packaging
bash core/skills/solar-async-tasks/scripts/validate_lifecycle.sh
… 作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> Purpose → Required MCP → Dependencies → Core Commands → System Activation → Workflow
要点 -> - solar-router: executes active tasks with channel=async-task and mode=directonly. · Do not call runworker.sh directly. · When solar-system supervises async-tasks, the agent stops after approve.sh; the LaunchAgent picks up the queued task on its tick. · Fallback rule: if solar-system is not supervising async-tasks, use ensureasynctasks.sh once as documented fallback. · 1. Draft: create.sh writes to drafts/. · For user-facing work, approval ends the conversational agent's execution role. · Queued or active tasks are already approved to execute their declared body and write declared artifacts/output paths. · - external sends, - deletions, - credential changes, - irreversible actions, - writes outside the declared task scope.
文件/命令 -> solar-router · sun/runtime/async-tasks/ · channel=async-task · mode=directonly · solar-system · runworker.sh · ensureasynctasks.sh · async-tasks
内容 SHA-256 -> 680559cf2387
方法与流程
适用与边界
原文中的明确线索
solar-router、sun/runtime/async-tasks/、channel=async-task、mode=directonly、solar-system、runworker.sh、ensureasynctasks.sh、async-tasks