一键导入
watching-oro
Use when running oro as a software factory and continuously observing, detecting defects, filing bug tasks, fixing via workers, and relaunching
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when running oro as a software factory and continuously observing, detecting defects, filing bug tasks, fixing via workers, and relaunching
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when reviewing a spec or task graph for completeness before implementation
Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, logging in, or automating browser actions
Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, logging in, or automating browser actions
Use when decomposing a spec, design, or feature description into a task dependency graph with self-evaluating acceptance criteria
Use when doing creative product, feature, component, functionality, or behavior design work
Use when infrastructure or features are built but before declaring done -- verifies work is wired into the system and actively used
| name | watching-oro |
| description | Use when running oro as a software factory and continuously observing, detecting defects, filing bug tasks, fixing via workers, and relaunching |
| user-invocable | true |
Operate oro as a software factory. Run the swarm, observe behavior, detect defects, spec/task them, fix them (via workers when possible, manually when not), rebuild, relaunch, repeat.
LAUNCH → OBSERVE → DETECT → SPEC/TASK → FIX → REBUILD → RELAUNCH
↑ |
└─────────────────────────────────────────────────────────┘
Execute this loop continuously until the swarm runs clean or context runs low.
make build && ./oro start --workers 3 --detach
./oro status # confirm dispatcher running
No sleep loops. Use event-driven techniques:
For unattended monitoring, start the supported Oro monitor. It treats fresh heartbeats as liveness only; throughput is healthy only when tasks close or the queue shrinks within a bounded window.
oro monitor --target 2 --max-workers 2 --interval 60s
Default mode is observe-only. Add --act only when the operator wants bounded
recovery actions:
oro monitor --target 2 --max-workers 2 --interval 60s --act
The old skill-local Python autopilot remains only as historical context; prefer
oro health, oro status --json, ops_runs, and oro monitor for supported
factory health policy.
The primary observation pattern is a poll-on-demand loop using ./oro logs --tail,
./oro health --json, and ./oro directive status:
# Snapshot key events (filter out noise)
./oro logs --tail 300 | grep -v heartbeat | grep -v directive | grep -v missing_accept | tail -20
# Factory health, including ops runs and recovery/quarantine findings
./oro health --json | python3 -c "
import json,sys
d=json.load(sys.stdin)
print(f'health={d[\"state\"]} posture={d.get(\"posture\", \"\")}')
ops=d.get('metrics', {}).get('ops_runs', {})
print('ops_runs', ops)
for f in d.get('findings', []):
print(f'{f[\"severity\"]:8s} {f[\"code\"]}: {f[\"message\"]}')
"
# Worker context % and state (JSON — pipe through python or jq)
./oro directive status | python3 -c "
import json,sys
d=json.load(sys.stdin)
for w in d['workers']:
task = w.get('bead_id', 'idle')
ctx = w.get('context_pct', 0)
print(f'{task:15s} ctx={ctx:3d}% state={w[\"state\"]}')
"
# Check worktree progress (commits + diffs)
for wt in .worktrees/oro-*/; do
echo "=== $(basename $wt) ==="
git -C "$wt" log --oneline -3
git -C "$wt" diff --stat | tail -3
done
awaiting_review events — do the review immediatelyWhat to watch: See deep-observation.md for per-component techniques, DB queries, and failure pattern signatures. For operator cadence and incident policy, follow the oro-monitoring runbook (docs/runbooks/oro-monitoring.md in the Oro source, or ~/.oro/runbooks/oro-monitoring.md when installed).
| Signal | Meaning |
|---|---|
goroutine_panic / panic stack | Active incident — 60s cadence, file/fix bug, rebuild/restart after merge |
| Same event repeating >5x in 30s | Loop bug — spec immediately |
STUCK_WORKER | Progress timeout — check worker context % |
WORKER_CRASH with empty task ID | Auto-ack path — verify dispatcher handles it |
QG_FAILED repeating for same task | Worker can't pass QG — check prompt or test |
MERGE_CONFLICT without later MERGED | Stale worktree — needs manual rebase |
Heartbeat context_pct > 80 | Worker degrading — will likely fail |
ops_run_failed / stale ops_runs finding | Bounded recovery failed — inspect oro health --json and ops_runs |
| Assignment spam (same task >3x) | Rejection loop — check AC or worker prompt |
When you observe a defect:
oro task list --status=open | grep -i "<keyword>" — don't duplicatespec skill for systemic issues, or create a bug task directly:oro task create --title="Bug: <symptom>" --type=bug --priority=1
oro task update <id> --description="..." --notes="Observed: <evidence>"
Set clear acceptance criteria so a worker (or you) can verify the fix.
Prefer workers for isolated, well-scoped bugs:
# Workers pick up ready tasks automatically
# Verify it was assigned:
./oro directive status
Fix manually when:
oro binaryFor manual fixes: use work-bead skill (TDD, worktree, merge to main).
After merging fixes to main:
If the fix changes Oro runtime behavior, do not continue monitoring the old dispatcher. Stop, rebuild/install, restart, then verify no fresh occurrence for two 60s windows.
# 1. Graceful shutdown (non-interactive — ./oro stop requires TTY)
ORO_HUMAN_CONFIRMED=1 ./oro stop --force
# 2. Kill zombie workers (old workers reconnect to new dispatcher)
pkill -f "oro work" 2>/dev/null
# 3. Clean worktrees
for wt in .worktrees/oro-*/; do
[ -d "$wt" ] && git worktree remove --force "$wt" 2>/dev/null
done
# 4. Rebuild
make build
# 5. Relaunch
./oro start --workers 3 --detach
./oro status
Note: ./oro stop requires an interactive terminal. In agent/non-TTY contexts, use ORO_HUMAN_CONFIRMED=1 ./oro stop --force.
NEVER run force-initialization commands. It destroys all task history. This has happened 3 times.
When native task-store errors occur during observation:
./oro status, logs, and event output for the failing component../oro task ready,
./oro task blocked, and ./oro task show <id> directly.docs/runbooks/beadstore-recovery.md in the Oro source, or
~/.oro/runbooks/beadstore-recovery.md when installed) and restore only from
reviewed SQLite backups.Don't panic. Don't nuke.
tail -f / --follow / fswatch