Skip to content

[Bug/UX] ShellAgent hangs indefinitely during docker-compose execution without timeout or stderr feedback #72

@Adhders

Description

@Adhders

2026-04-09 17:19:31.594 [INFO ] tool_layer.py:295 - OpenSpace ready to use!
2026-04-09 17:19:31.594 [INFO ] tool_layer.py:296 - ============================================================
2026-04-09 17:19:50.809 [INFO ] ui_integration.py:79 - UI monitoring started
2026-04-09 17:19:50.809 [INFO ] tool_layer.py:345 - ============================================================
2026-04-09 17:19:50.809 [INFO ] tool_layer.py:346 - Task: openspace --query "Create a monitoring dashboard for my Docker containers,with Real-time status disp...
2026-04-09 17:19:50.809 [INFO ] tool_layer.py:347 - ============================================================
2026-04-09 17:19:50.809 [INFO ] tool_layer.py:357 - Task ID: task_e3d49f500184
2026-04-09 17:19:50.820 [INFO ] manager.py:534 - Recording started: logs/recordings/task_e3d49f500184_20260409_171950
2026-04-09 17:19:50.820 [INFO ] tool_layer.py:378 - Recording started: task_e3d49f500184
2026-04-09 17:19:50.820 [INFO ] tool_layer.py:388 - Workspace: logs/recordings/task_e3d49f500184_20260409_171950
2026-04-09 17:19:58.540 [WARNING ] skill_ranker.py:351 - Skill embedding generation failed after 3 attempts: HTTP Error 403: Forbidden
2026-04-09 17:19:58.541 [INFO ] registry.py:540 - Skill pre-filter: 38 → 15 candidates (BM25+embedding, threshold=10)
2026-04-09 17:19:58.548 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai
2026-04-09 17:20:06.720 [INFO ] registry.py:731 - Skill selection plan: Deploy a cAdvisor-Prometheus-Grafana monitoring stack to collect real-time Docker container status, CPU, memory, disk I/O and network I/O metrics, then provision a dedicated Grafana dashboard to visualize all required monitoring data.
2026-04-09 17:20:06.720 [INFO ] registry.py:489 - LLM skill selection: [docker-monitoring-cadvisor-prometheus-grafana__v1_aeb5f200]
2026-04-09 17:20:06.721 [INFO ] manager.py:171 - Recorded skill selection: 1 selected via llm (from 15 available)
2026-04-09 17:20:06.721 [INFO ] grounding_agent.py:102 - Skill context set: docker-monitoring-cadvisor-prometheus-grafana__v1_aeb5f200
2026-04-09 17:20:06.721 [INFO ] tool_layer.py:724 - Injected 1 active skill(s): ['docker-monitoring-cadvisor-prometheus-grafana__v1_aeb5f200']
2026-04-09 17:20:06.721 [INFO ] tool_layer.py:426 - [Phase 1 — Skill] Executing with skill guidance (max 30 iterations)...
2026-04-09 17:20:06.721 [INFO ] grounding_agent.py:211 - Grounding Agent: Processing instruction at step 0
2026-04-09 17:20:06.721 [INFO ] grounding_agent.py:577 - GroundingAgent selected 9 tools (auto-search) from 3 backends [skill-augmented]
2026-04-09 17:20:06.722 [INFO ] grounding_agent.py:601 - Added retrieve_skill tool for mid-iteration skill retrieval
2026-04-09 17:20:06.730 [INFO ] manager.py:143 - Recorded 10 retrieved tools (with search debug info: False)
2026-04-09 17:20:06.730 [INFO ] grounding_agent.py:533 - Injected active skill context (1 skill(s))
2026-04-09 17:20:06.731 [INFO ] grounding_agent.py:283 - Grounding Agent: Iteration 1/30
2026-04-09 17:20:06.731 [INFO ] client.py:166 - [SCHEMA_SANITIZE] Prepared 10 tools for LLM (from 10 total)
2026-04-09 17:20:06.735 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai
2026-04-09 17:20:12.456 [INFO ] client.py:703 - Executing 1 tool calls...
2026-04-09 17:20:12.456 [INFO ] client.py:753 - Calling run_shell with args: {"command": "docker compose version"}
2026-04-09 17:20:12.610 [INFO ] client.py:814 - Tool execution completed, 1 tools executed
2026-04-09 17:20:12.611 [INFO ] grounding_agent.py:349 - Iteration 1 - Has tool calls: True, Tool results: 1, Content length: 0 chars
2026-04-09 17:20:12.611 [INFO ] grounding_agent.py:283 - Grounding Agent: Iteration 2/30
2026-04-09 17:20:12.611 [INFO ] grounding_agent.py:294 - Skill context removed from messages after first iteration
2026-04-09 17:20:12.611 [INFO ] client.py:166 - [SCHEMA_SANITIZE] Prepared 10 tools for LLM (from 10 total)
2026-04-09 17:20:12.612 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai
2026-04-09 17:20:36.937 [INFO ] client.py:703 - Executing 1 tool calls...
2026-04-09 17:20:36.937 [INFO ] client.py:753 - Calling write_file with args: {"path": "docker-compose.yml", "content": "version: '3.8'\n\nservices:\n cadvisor:\n image: gcr.io/cadvisor/cadvisor:v0.49.1\n container_name: cadvisor\n ports:\n - "8080:8080"\n v
2026-04-09 17:20:36.960 [INFO ] client.py:814 - Tool execution completed, 1 tools executed
2026-04-09 17:20:36.960 [INFO ] grounding_agent.py:349 - Iteration 2 - Has tool calls: True, Tool results: 1, Content length: 0 chars
2026-04-09 17:20:36.961 [INFO ] grounding_agent.py:283 - Grounding Agent: Iteration 3/30
2026-04-09 17:20:36.961 [INFO ] client.py:166 - [SCHEMA_SANITIZE] Prepared 10 tools for LLM (from 10 total)
2026-04-09 17:20:36.962 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai
2026-04-09 17:20:40.628 [INFO ] client.py:703 - Executing 1 tool calls...
2026-04-09 17:20:40.629 [INFO ] client.py:753 - Calling run_shell with args: {"command": "mkdir -p prometheus grafana/provisioning/datasources grafana/provisioning/dashboards"}
2026-04-09 17:20:40.642 [INFO ] client.py:814 - Tool execution completed, 1 tools executed
2026-04-09 17:20:40.643 [INFO ] grounding_agent.py:349 - Iteration 3 - Has tool calls: True, Tool results: 1, Content length: 0 chars
2026-04-09 17:20:40.644 [INFO ] grounding_agent.py:283 - Grounding Agent: Iteration 4/30
2026-04-09 17:20:40.644 [INFO ] client.py:166 - [SCHEMA_SANITIZE] Prepared 10 tools for LLM (from 10 total)
2026-04-09 17:20:40.645 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai
2026-04-09 17:20:44.048 [INFO ] client.py:703 - Executing 1 tool calls...
2026-04-09 17:20:44.048 [INFO ] client.py:753 - Calling write_file with args: {"path": "prometheus/prometheus.yml", "content": "global:\n scrape_interval: 15s\n evaluation_interval: 15s\n\nscrape_configs:\n - job_name: 'cadvisor'\n static_configs:\n - targets: ['cadv
2026-04-09 17:20:44.072 [INFO ] client.py:814 - Tool execution completed, 1 tools executed
2026-04-09 17:20:44.072 [INFO ] grounding_agent.py:349 - Iteration 4 - Has tool calls: True, Tool results: 1, Content length: 0 chars
2026-04-09 17:20:44.072 [INFO ] grounding_agent.py:283 - Grounding Agent: Iteration 5/30
2026-04-09 17:20:44.073 [INFO ] client.py:166 - [SCHEMA_SANITIZE] Prepared 10 tools for LLM (from 10 total)
2026-04-09 17:20:44.073 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai
2026-04-09 17:20:47.640 [INFO ] client.py:703 - Executing 1 tool calls...
2026-04-09 17:20:47.640 [INFO ] client.py:753 - Calling write_file with args: {"path": "grafana/provisioning/datasources/prometheus.yml", "content": "apiVersion: 1\n\ndatasources:\n - name: Prometheus\n type: prometheus\n access: proxy\n url: http://prometheus:9090\n
2026-04-09 17:20:47.668 [INFO ] client.py:814 - Tool execution completed, 1 tools executed
2026-04-09 17:20:47.669 [INFO ] grounding_agent.py:349 - Iteration 5 - Has tool calls: True, Tool results: 1, Content length: 0 chars
2026-04-09 17:20:47.669 [INFO ] grounding_agent.py:283 - Grounding Agent: Iteration 6/30
2026-04-09 17:20:47.669 [INFO ] client.py:166 - [SCHEMA_SANITIZE] Prepared 10 tools for LLM (from 10 total)
2026-04-09 17:20:47.671 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai
2026-04-09 17:20:50.341 [INFO ] client.py:703 - Executing 1 tool calls...
2026-04-09 17:20:50.341 [INFO ] client.py:753 - Calling run_shell with args: {"command": "docker compose up -d"}
2026-04-09 17:21:05.669 [INFO ] client.py:814 - Tool execution completed, 1 tools executed
2026-04-09 17:21:05.669 [INFO ] grounding_agent.py:349 - Iteration 6 - Has tool calls: True, Tool results: 1, Content length: 0 chars
2026-04-09 17:21:05.670 [INFO ] grounding_agent.py:283 - Grounding Agent: Iteration 7/30
2026-04-09 17:21:05.670 [INFO ] client.py:166 - [SCHEMA_SANITIZE] Prepared 10 tools for LLM (from 10 total)
2026-04-09 17:21:05.671 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai
2026-04-09 17:21:13.937 [INFO ] client.py:703 - Executing 1 tool calls...
2026-04-09 17:21:13.937 [INFO ] client.py:753 - Calling shell_agent with args: {"task": "Fix and start the Docker Compose monitoring stack (cadvisor, prometheus, grafana) defined in docker-compose.yml in current directory. Verify all containers are running, and confirm the Grafa
2026-04-09 17:21:13.945 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai
2026-04-09 17:21:16.055 [INFO ] utils.py:3995 -
LiteLLM completion() model= doubao-seed-2.0-pro; provider = openai

While attempting to use OpenSpace to manage a Docker containers stack (including cadvisor, prometheus, and grafana), the agent remained in a "running" state for over 40 minutes without any error output or progress updates.
The shell_agent appears to lack a robust timeout mechanism or real-time output forwarding. In my case, the execution was likely blocked by a pending sudo password prompt or a stalled docker pull process in the background. Because OpenSpace waits for the subprocess to exit before reporting, the UI/CLI stays completely silent, leading to a "deadlock" user experience.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions