Conversation
Signed-off-by: YaoZengzeng <yaozengzeng@huawei.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Code Review
This pull request introduces the initial release notes for AgentCube v0.1.0, detailing the project's architecture, core features like session-based microVM routing and the PicoD runtime daemon, and its integration with Kubernetes via new CRDs. Review feedback identifies several issues in the documentation that require correction: multiple dependency versions (including Go and Kubernetes components) appear to be incorrect or non-existent, placeholder contributor tags are used repeatedly across feature sections, and the 'AgentD' component is mentioned without being previously defined or explained.
There was a problem hiding this comment.
Pull request overview
Adds an initial draft of the AgentCube v0.1.0 release notes to support the v0.1.0 release checklist in #263.
Changes:
- Introduces
docs/release-notes/v0.1.0.mdwith a v0.1.0 summary, feature highlights, API overview, dependencies, and install/usage snippets. - Documents Router/session flow, CRDs (
AgentRuntime,CodeInterpreter), PicoD, warm pools, and JWT auth chain. - Includes contributor acknowledgements and a placeholder “Full Changelog” section.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #266 +/- ##
==========================================
+ Coverage 35.60% 43.34% +7.73%
==========================================
Files 29 30 +1
Lines 2533 2727 +194
==========================================
+ Hits 902 1182 +280
+ Misses 1505 1416 -89
- Partials 126 129 +3
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Signed-off-by: YaoZengzeng <yaozengzeng@huawei.com>
|
@hzxuzhonghu ptal |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Yao Zengzeng <yaozengzeng@huawei.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Yao Zengzeng <yaozengzeng@huawei.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Yao Zengzeng <yaozengzeng@huawei.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Yao Zengzeng <yaozengzeng@huawei.com>
hzxuzhonghu
left a comment
There was a problem hiding this comment.
Thanks for putting together the v0.1.0 release notes! I did a quick check of the technical claims against the codebase — most are accurate, but I spotted one issue in the install example.
Bug: command field must be an array, not a string
The "Invoke the interpreter" snippet in the Upgrade Instructions section sends command as a single string:
-d '{"command": "python3 -c \"print(1+1)\""}'However, ExecuteRequest.Command is defined as []string in pkg/picod/execute.go:
Command []string `json:"command" binding:"required"` // The command and its arguments to execute. The first element is the executable.Sending a JSON string will cause a 400 binding error. The correct form is:
curl -X POST \
http://<router-host>/v1/namespaces/default/code-interpreters/my-interpreter/invocations/api/execute \
-H "Content-Type: application/json" \
-d '{"command": ["python3", "-c", "print(1+1)"]}'Everything else I checked matches the code:
- Helm value
redis.addr✓ - JWT expiry 5 minutes (
jwtExpiration = 5 * time.Minuteinpkg/router/jwt.go) ✓ - Secret name
picod-router-identity✓ sigs.k8s.io/agent-sandbox v0.1.1prerequisite ✓- 32 MB body limit ✓
Please fix the curl example before merging.
hzxuzhonghu
left a comment
There was a problem hiding this comment.
Reading through this note, i feel this is more like a proposal, especially the L55 section
|
|
||
| ### Key Feature Details | ||
|
|
||
| ### Session-Based MicroVM Agent Routing |
There was a problem hiding this comment.
The heading hierarchy is inconsistent: "### Key Feature Details" is immediately followed by another level-3 heading ("### Session-Based MicroVM Agent Routing"), which makes it look like a sibling section rather than a subsection. Consider making the feature sections level-4 under "Key Feature Details" (or removing the extra "Key Feature Details" heading) so the structure is unambiguous in rendered Markdown/TOC.
| ### Session-Based MicroVM Agent Routing | |
| #### Session-Based MicroVM Agent Routing |
Signed-off-by: YaoZengzeng <yaozengzeng@huawei.com> Signed-off-by: YaoZengzeng <yaozengzeng@huawei.com>
3dbdebb to
29b1b2b
Compare
Signed-off-by: YaoZengzeng <yaozengzeng@huawei.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Yao Zengzeng <yaozengzeng@huawei.com>
| helm install agentcube manifests/charts/base \ | ||
| --namespace agentcube-system --create-namespace \ | ||
| --set redis.addr=<redis-or-valkey-host>:6379 \ | ||
| --set redis.password="''''" \ | ||
| --set router.rbac.create=true |
There was a problem hiding this comment.
The install command sets redis.password to the literal value '''' (four quote characters). If the intent is “no password” or an empty password, this will configure the chart with the wrong password and break connectivity. Prefer --set redis.password="" (empty) or omit the flag entirely, and optionally add a note that users should set it only when Redis requires AUTH.
| namespace: default | ||
| spec: | ||
| template: | ||
| image: ghcr.io/volcano-sh/picod:latest |
There was a problem hiding this comment.
This v0.1.0 release doc uses ghcr.io/volcano-sh/picod:latest in the CodeInterpreter example. Using :latest makes the instructions non-reproducible and can diverge from the v0.1.0 behavior over time. Consider pinning the example image tag to v0.1.0 (or the exact release tag you publish).
| image: ghcr.io/volcano-sh/picod:latest | |
| image: ghcr.io/volcano-sh/picod:v0.1.0 |
|
|
||
| ### Warm Pool for Fast Cold Starts | ||
|
|
||
| Creating a microVM sandbox from scratch on every session request incurs a cold-start penalty that is unacceptable for interactive workloads. AgentCube introduces a warm pool mechanism: the Workload Manager pre-creates a configurable number of idle `Sandbox` pods and keeps them ready. When an invocation arrives, the Router claims a pre-warmed pod via a `SandboxClaim` CR instead of waiting for a new pod to start. The pool is automatically replenished after each claim. |
There was a problem hiding this comment.
Warm pool flow is described as “the Router claims a pre-warmed pod via a SandboxClaim CR”. In the current implementation, the Router asks the Workload Manager to create a sandbox (Router -> Workload Manager HTTP call), and the Workload Manager creates the SandboxClaim when warmPool is enabled. Rewording this avoids implying the Router talks to the Kubernetes API / SandboxClaim CR directly.
| Creating a microVM sandbox from scratch on every session request incurs a cold-start penalty that is unacceptable for interactive workloads. AgentCube introduces a warm pool mechanism: the Workload Manager pre-creates a configurable number of idle `Sandbox` pods and keeps them ready. When an invocation arrives, the Router claims a pre-warmed pod via a `SandboxClaim` CR instead of waiting for a new pod to start. The pool is automatically replenished after each claim. | |
| Creating a microVM sandbox from scratch on every session request incurs a cold-start penalty that is unacceptable for interactive workloads. AgentCube introduces a warm pool mechanism: the Workload Manager pre-creates a configurable number of idle `Sandbox` pods and keeps them ready. When an invocation arrives, the Router requests sandbox creation from the Workload Manager; when warm pools are enabled, the Workload Manager can satisfy that request by creating a `SandboxClaim` CR for a pre-warmed pod instead of waiting for a new pod to start. The pool is automatically replenished after each claim. |
| - **LangChain integration**: `CodeInterpreterClient` can be wrapped as a `@tool` and wired into LangGraph ReAct agents — see [devguide](https://github.com/volcano-sh/agentcube/blob/main/docs/devguide/code-interpreter-using-langchain.md) | ||
| - **Dify plugin**: `integrations/dify-plugin/` — AgentCube tool integration for the Dify AI application platform | ||
| - **pcap-analyzer example**: `example/pcap-analyzer/` — end-to-end example agent that analyzes packet captures using code interpreter | ||
| - **Redis and ValKey backends**: pluggable session store (`pkg/store`) with implementations for both Redis and ValKey; selected via configuration |
There was a problem hiding this comment.
The post uses both "Valkey" and "ValKey" to refer to the same backend (e.g., "Redis/Valkey" earlier vs "Redis and ValKey backends" here). Please standardize the capitalization within this post to avoid reader confusion.
| - **Redis and ValKey backends**: pluggable session store (`pkg/store`) with implementations for both Redis and ValKey; selected via configuration | |
| - **Redis and Valkey backends**: pluggable session store (`pkg/store`) with implementations for both Redis and Valkey; selected via configuration |
hzxuzhonghu
left a comment
There was a problem hiding this comment.
we still need a solid tile
| @@ -0,0 +1,248 @@ | |||
| # v0.1.0 | |||
There was a problem hiding this comment.
A more specific tile?
Like Introducing AgentCube 0.1.0
Signed-off-by: YaoZengzeng <yaozengzeng@huawei.com>
What type of PR is this?
/kind documentation
What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes part of #263
Special notes for your reviewer:
Does this PR introduce a user-facing change?: