Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Reopening a failed durable session returns opaque internal_error

未关闭
#1,925 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
52/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
javascript, rust, wasm
领域
api, backend

调研方向

从复现中描述的 durable-session openSession/getSession 生命周期和 RivetKit actor API 开始;使用受限的 JavaScript 运行时预算复现失败会话的重新打开路径。完成标准是:重新打开能够恢复或重置失败的适配器,或者返回包含已存储序列化失败信息的类型化 session_failed 错误,而不是 internal_error。

由索引模型根据 Issue 内容生成。

描述

Problem

A durable session can enter state.status === "failed" after its ACP adapter exits during a prompt—for example, after exceeding limits.jsRuntime.cpuTimeLimitMs. getSession({ sessionId }) correctly preserves a useful serialized failure such as prompt_interrupted.

Calling openSession(...) again with the same durable sessionId does not restore or reset the adapter. Through the RivetKit actor API it instead returns only:

group=rivetkit code=internal_error message="An internal error occurred"

The stored failure explaining why the session cannot be reopened is lost at the action boundary. A fresh session on the same actor still opens successfully.

Expected behavior

One of the following would make this lifecycle recoverable:

  1. openSession restores or resets a session whose durable state is failed; or
  2. it returns a typed terminal error such as session_failed, including the stored serialized failure and documenting that callers must call deleteSession before recreating it.

It should not collapse this state into a generic internal_error.

Reproduction outline

  1. Create a durable Pi session with a stable sessionId.
  2. Cause the adapter to exit during a prompt, such as by using a small JavaScript CPU-time budget.
  3. Confirm getSession({ sessionId }) reports state.status === "failed".
  4. Call openSession again with the same sessionId and original options.
  5. Observe the opaque RivetKit internal_error.
  6. Open a new session ID and observe that it succeeds.

Observed with @rivet-dev/[email protected] on the RivetKit actor path.

主要语言
Rust
星标
4.7k
派生
263
平均合并
8 小时 57 分钟
30 天内合并 PR
30

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

rivet-dev/agentos 的其他 Issue

查看 rivet-dev/agentos 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。