Archived
2.4 KiB
2.4 KiB
Task Manifest
- Task: 20260831-105429-opencode-loop-guard
- Created: 2026-08-31T10:54:29Z
- Orchestrator: build
- Status: planned
- Current owner: coder
Objective
Add a global OpenCode plugin that detects repeated tool-call cycles, blocks the call that completes a detected cycle, and provides corrective feedback to the model. The default behavior is balanced sensitivity, all models, and all tools.
Acceptance Criteria
- A global TypeScript plugin is installed at
~/.config/opencode/plugins/loop-guard.ts. - No OpenCode configuration change or dependency install is required because the plugin is auto-discovered and uses only built-in APIs plus existing
@opencode-ai/plugintypes. - Tool-call history is tracked separately by session ID.
- Detection covers cycle lengths 1 through 4.
- A cycle is detected only after three complete repetitions, for a minimum of four calls in the repeating pattern.
- Object argument key order does not affect signature equality; string values are preserved exactly and not normalized.
- The call that completes a qualifying cycle is blocked with an error message that identifies the repeated pattern shape without leaking sensitive arguments and directs the model to reassess evidence and choose a materially different action.
- Legitimate repeated calls with changed arguments are allowed.
- Session state is bounded and cleared when sessions become idle or deleted.
- Focused tests demonstrate cycle detection, false-positive avoidance, session isolation, key-order normalization, and history cleanup.
- No secrets, credentials, or sensitive configuration values are added to the repository or artifacts.
Artifact Index
brief.md: implementation contractimplementation.md: coder report (pending)review.md: reviewer report (pending)iterations/: correction rounds, if neededattachments/: raw logs and diagnostic collateral
Iteration Log
- 2026-08-31T10:54:29Z: Build created task workspace and brief.
Open Risks
- Throwing from
tool.execute.beforeis the intended blocking mechanism, but runtime behavior should be verified after restart. - Cycle detection may still produce false positives for genuinely repetitive workflows; thresholds are intentionally conservative.
- The plugin cannot recover a model that emits no further tool calls; it can only block repeated calls and provide corrective feedback.
Final Outcome
Pending implementation and review.