AinoWork is an AI-native collaborative platform — a developer-oriented AI workbench. It integrates AI agent conversations with Docker-sandboxed code execution, delivering a complete workflow from dialogue to delivery.
v2.0.1 is a patch release focused on a critical sandbox environment fix and Docker build pipeline improvements.
Fixed a serious bug in the hermes-agent integration where _get_file_ops would silently create a Docker container with the wrong image when environment lookup failed.
The problem: _get_file_ops looked up sandbox environments via the _active_environments dict. When a lookup failed — which could happen under normal concurrent request patterns — the method fell back to _create_environment, which spawned a new Docker container using the default image nikolaik/python-nodejs:python3.11-nodejs20 instead of the project's configured sandbox image. This meant:
- File operations could execute in a container with the wrong toolchain, Python version, and dependencies
- The silently-created container was invisible to the platform's sandbox management, leaking resources
- No error was surfaced — the operation appeared to succeed but used an incorrect environment
The fix: Replaced _get_file_ops with a version that obtains PlatformSandboxEnv directly from get_thread_context().env, entirely bypassing _active_environments and the _create_environment fallback. If ctx.env is None, the method now raises RuntimeError instead of silently creating a container with the wrong image.
Refined the backend Docker build pipeline for faster, more cache-efficient builds:
- Collapsed 3-stage build into single stage — Cross-stage
COPYinstructions were creating spurious cache invalidation chains, causing full rebuilds on minor changes. A single-stage build with carefully ordered layers achieves better caching in practice - Isolated hermes-agent layer — The hermes-agent git clone (30–60s) is now in its own layer and exported to a separate
requirements-hermes.txt. Changes to other dependencies no longer trigger a full git re-clone - BuildKit cache mounts —
uv pip installnow uses--mount=type=cachefor persistent wheel caching across builds - Lockfile-driven invalidation —
build.shexportsrequirements.txtfromuv.lock, so the dependency layer only invalidates when actual dependencies change, not on version bumps - Mirror configuration — Set
UV_INDEX_URLto aliyun mirror for faster downloads in CI (uv doesn't read pip config)
Excluded backend/docker-infra/volumes/ from the Docker build context via .dockerignore, preventing large volume data from being sent to the Docker daemon during builds.
Reverted the starter docker-compose.yml image tags from 2.0.0-arm64 back to latest. A previous release publish had incorrectly pinned architecture-specific tags, breaking multi-arch deployments.
- Release workflow — Added
release-upgradeskill documenting the complete 8-phase version upgrade checklist (version bump, migration consolidation, auto-generation, Docker TAG update, commit). Addedrelease-publishskill for pushing tags, creating GitHub/Gitee releases, and uploading build artifacts - Release notes — Added v2.0.0 release notes documenting Plan Mode, Auto-Memory, Platform Memory Tools, and all changes since v1.1.1
- Sandbox environment resolution —
_get_file_opsno longer falls back to creating a container with the wrong default image when environment lookup fails. Environment is now obtained directly from thread context, raisingRuntimeErrorif unavailable - Docker Compose image tags — Reverted incorrectly-pinned
2.0.0-arm64tags in starterdocker-compose.ymlback tolatest
| Image | Tag | Pull Command |
|---|---|---|
| ainowork-backend | 2.0.1, latest |
docker pull registry.cn-zhangjiakou.aliyuncs.com/oinone/ainowork-backend:2.0.1 |
| ainowork-frontend | 2.0.1, latest |
docker pull registry.cn-zhangjiakou.aliyuncs.com/oinone/ainowork-frontend:2.0.1 |
8 commits since v2.0.0.
Full Changelog · License: AGPL-3.0