google / google/adk-python

Feature Request: Declarative initial session state for `adk web`

Đang mở
#4,961 1 bình luận 0 reaction 1 người được giao Được @GWeale nhận Xem trên GitHub
needs review web
Ngôn ngữ chính
Python
Star
21.5k
Fork
4k
Merge trung bình
1 ngày 14 giờ
Pull request đã merge (30 ngày)
37

Mô tả

## 🔴 Required Information

### Is your feature request related to a specific problem?

`adk run` supports pre-loading session state via the `--replay` option with a JSON file, but `adk web` has no equivalent mechanism. When iteratively developing and testing agents that depend on session state, I have to either manually enter state through the Web UI on every new session, or write custom injection logic in callbacks. A simpler, declarative option would improve the development experience.

Related discussion: https://github.com/google/adk-python/discussions/2753

### Describe the Solution You'd Like

Allow developers to place an `initial_state.json` file in the agent directory. When `adk web` creates a new session, it automatically merges the file's contents into the session state.

```
my_agent/
├── __init__.py
├── agent.py
└── initial_state.json # new
```

```json
{
"city": "New York",
"time": "10:30"
}
```

- **JSON format** — consistent with `adk run --replay`
- **Client state takes precedence** — values passed from the client overwrite file-based defaults
- **Zero impact when absent** — if the file doesn't exist, behavior is unchanged

### Impact on your work

This would streamline my iterative development workflow. Every time I create a new session in `adk web`, I currently re-enter the same state values manually. Not critical, but it would be a nice quality-of-life improvement.

### Willingness to contribute

Yes — happy to open a PR if this direction looks reasonable.

---

## 🟡 Recommended Information

### Describe Alternatives You've Considered

- **Manual entry via Web UI** — works, but repetitive across sessions
- **`before_agent_callback`** — requires boilerplate code that isn't part of the agent's core logic

### Proposed API / Implementation

- Add a `_load_initial_state()` method to `AdkWebServer` that reads `{agents_dir}/{app_name}/initial_state.json` if present, otherwise returns an empty dict
- Merge into `_create_session()` with client state taking precedence: `{**file_state, **(client_state or {})}`

### Additional Context

N/A

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.