refactor: gpt 스트림 오류 최소화
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
# Agent Execution Policy
|
||||
|
||||
## Coka MCP long-running work
|
||||
|
||||
Use the managed-task tools for builds, tests, package installs, Docker builds, integration tests, migrations, benchmarks, and any command that may take more than a few seconds or emit substantial output.
|
||||
|
||||
- Prefer `start_managed_task` over `exec_command` for long-running work.
|
||||
- Give every managed task a stable, descriptive `taskKey` such as `root-ci`, `backend-tests`, or `docker-build-api`.
|
||||
- Reuse the same `taskKey` when recovering after a ChatGPT/message-stream interruption. Do not start the same command again merely because the response stream was interrupted.
|
||||
- Before retrying work after an interruption, call `list_managed_tasks` or `read_managed_task` and inspect the existing task state.
|
||||
- Use `read_managed_task` with long waits rather than repeatedly polling at short intervals.
|
||||
- Managed-task responses are intentionally compact. Full stdout/stderr is stored in the task log file; inspect only the reported tail/highlights unless deeper diagnostics are required.
|
||||
- Do not dump full build/test logs into MCP responses. Prefer exit status, important lines, and a bounded tail.
|
||||
- Group related repository inspection and edits into coherent calls instead of issuing many tiny shell commands.
|
||||
- Run targeted tests before the full suite. Run the full CI/build once near the end unless a failure requires another run.
|
||||
- Never re-run an already successful build/test solely to reconstruct conversational context.
|
||||
|
||||
## Low-level process tools
|
||||
|
||||
Use `exec_command`, `read_process`, `write_stdin`, and `terminate_process` when interactive stdin, exact paged stdout/stderr, or low-level process control is specifically required. They remain the escape hatch, not the default for long-running non-interactive work.
|
||||
|
||||
## Recovery order
|
||||
|
||||
When a response is interrupted:
|
||||
|
||||
1. Inspect `list_managed_tasks`.
|
||||
2. Reuse the matching task by `taskKey`.
|
||||
3. If it is still running, wait with `read_managed_task`.
|
||||
4. If it finished, consume its existing result and log summary.
|
||||
5. Re-run only when the prior task failed for a reason that requires a retry, or when an explicit fresh run is requested.
|
||||
Reference in New Issue
Block a user