covonaut, a Go language agent framework for production environments, once again refines itself to be more like a reliable colleague. The newly released v1.1.4 version brings a rolling execution pool, multi-modal reading capabilities, and a series of enhancements around security and isolation. It is entirely implemented in Go, uses the MIT license, and covers the Agent main loop, tool calls, graph orchestration, and multi-protocol interoperability. The most convenient part is that developers can upgrade to v1.1.4 without changing any interface code, and new features are ready to use out of the box.
Scheduling is the core of this change. In the past, parallel execution was like an unstrategic labor contractor—starting all calls at once and then queuing by concurrency limits. A slow tool could keep a slot occupied for a long time, blocking all subsequent tasks. v1.1.4 changes it to a single rolling pool scheduling: calls start strictly in the order given by the model, and once there is an empty slot, it is immediately filled, so slow calls no longer delay subsequent parallel tasks; when encountering non-parallelizable calls, it first clears the running tasks in the pool before executing them inline, forming a serial barrier. The return order seen by the model always matches the serial execution exactly, and each call independently captures panic, so a single tool crash does not bring down other calls in the same batch. The strictness of scheduling is determined jointly by the tool's own concurrency safety declaration and execution mode: the parallel mode is the most relaxed, only tools explicitly declared as non-concurrency-safe are isolated and executed serially; the newly added hybrid mode is much more conservative, with all tasks that are not declared or ambiguously declared executed serially. Developers can choose between the two based on the trustworthiness of the tool ecosystem. Accompanying this is a multi-modal content channel for tool results, allowing rich content such as screenshots to be transmitted together with text to models supporting multi-part returns, while services that do not support it automatically degrade to plain text.
This time, the reading tool has completely gained versatile properties. It no longer only recognizes text, but automatically分流s to five processing paths—text, images, PDFs, Jupyter Notebooks, and videos—based on file extensions and content characteristics. Local paths and network links can be directly fed in. Text and Notebooks support pagination by line or cell, and Notebooks are rendered into readable text; images can submit up to eight targets for comparison at a time and can also include questions for focused descriptions; PDFs support three usage methods: page range, maximum number of pages, and extracting only metadata; videos can specify the number of frames to extract and the time window. The rich media processing logic is provided in a plug-in callback form, giving clear prompts instead of silent failures when not integrated; when text is truncated, it appends a prompt for continuing reading at the end, allowing the model to continue reading without losing content; real binary files are no longer forced into the context but are returned as format recognition results.
The most reassuring aspect for operations is that delete operations are now uniformly placed in the system's recycle bin. The delete tool and shell's delete command no longer permanently destroy files but move them to the recycle bin according to the platform: macOS visits the recycle bin and falls back to the user's trash if there is an error; Linux prioritizes the freedesktop recycle bin interface and falls back to a manual recycle directory; Windows moves files to the system's recycle bin. Duplicate names automatically add a timestamp suffix to avoid overwriting. Built-in safety barriers firmly reject the root directory of the file system, the current working directory, and the user's home directory, and under no circumstances will it degrade to permanent deletion. On the command side, it parses the shell syntax tree to intercept only top-level, single, and path literal delete commands, while composite commands, paths with variable concatenation, and statements with redirection are allowed to proceed to the real shell; irreversible commands such as emptying or shredding are directly blocked and prompt users to use recoverable methods instead.
Isolation and enhancement are also complete. Shell sub-processes and chat interfaces are completely separated, no longer inheriting control terminals,抢 mouse focus, or job control. Running interactive programs like vim or less in the interface will not disrupt rendering. The framework now adds the ability to validate structured output according to JSON Schema, which can be reused by the model's JSON pattern return and tool outputs. The password-free backend for network search adapts automatically according to the operating region, prioritizing Bing in Chinese environments and DuckDuckGo in other environments, with regions inferred from environment variables, system language, or time zones. Additionally, a new explicitly enabled persistent terminal tool family has been added, which retains the working directory, exported variables, and background jobs across multiple calls using a pseudo-terminal, differing from the approach of creating a new process each time. By default, it limits the number of concurrent sessions and maintains a scrolling output buffer for each session.
Upgrading requires only updating the module version to v1.1.4. There are no breaking interface changes this time. The only thing to note is that the scheduling semantics of the parallel mode have been adjusted from full concurrency to a rolling pool with a relaxed admission policy. If you want to maintain a conservative schedule, please switch to the newly added hybrid mode and ensure the tools have completed their concurrency safety declarations.