Drop-in replacement for Claude Agent SDK with automatic code caching - just swap your import
Project description
RaySurfer Python SDK
Drop-in replacement for Claude Agent SDK with automatic code caching. Same API, 20-30x faster.
Install
pip install raysurfer
Quick Start
Swap ClaudeSDKClient for RaysurferClient - everything else stays the same:
# from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions
from raysurfer import RaysurferClient, RaysurferAgentOptions
options = RaysurferAgentOptions(
raysurfer_api_key="your-api-key",
allowed_tools=["Read", "Write", "Bash"],
model="claude-sonnet-4-20250514",
)
# async with ClaudeSDKClient(options) as client:
async with RaysurferClient(options) as client:
await client.query("Generate quarterly sales report")
async for msg in client.receive_response():
print(msg)
That's it. Your agent now automatically:
- Pre-fetches relevant cached code before each task
- Injects proven code snippets into the system prompt
- Stores successful outputs for future reuse
How It Works
- On
query(): Retrieves cached code blocks matching your task - Downloads to sandbox: Files ready for the agent to execute
- Injects into prompt: Agent sees proven code snippets
- After success: New code is cached for next time
Measured Results:
- Without RaySurfer: 34.2s, 11 iterations, 2 tool calls
- With RaySurfer: 1.4s, 1 iteration, 0 tool calls
- Speedup: 24x faster
RaysurferAgentOptions
All ClaudeAgentOptions fields are supported, plus:
RaysurferAgentOptions(
# Raysurfer-specific
raysurfer_api_key="your-api-key",
prefetch_count=5, # Code files to pre-fetch
min_verdict_score=0.3, # Quality threshold
# Standard Claude Agent SDK options
allowed_tools=["Read", "Write", "Bash"],
model="claude-sonnet-4-20250514",
system_prompt="You are helpful.",
permission_mode="acceptEdits",
# ... all other ClaudeAgentOptions
)
Low-Level API
For direct code block storage and retrieval:
from raysurfer import RaySurfer
rs = RaySurfer(api_key="your-api-key")
# Store a code block
rs.store_code_block(
name="fetch_weather",
source="def fetch_weather(city): ...",
entrypoint="fetch_weather",
language="python",
)
# Retrieve by task
results = rs.retrieve("get weather data")
for match in results.code_blocks:
print(f"{match.code_block.name}: {match.score}")
Verdict System
RaySurfer learns which code actually works through thumbs up/down verdicts:
- A technical error can be thumbs up (correct validation)
- A successful run can be thumbs down (useless output)
The system learns usefulness, not just whether code runs.
Examples
See examples/ for complete demos.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file raysurfer-0.3.0.tar.gz.
File metadata
- Download URL: raysurfer-0.3.0.tar.gz
- Upload date:
- Size: 4.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cdf84b16745bd19821ecd8e5bf4be42f6b69e2010120e4350ce8d32acaabb11
|
|
| MD5 |
2f5c9eab489cad1c95d0211b83523c8b
|
|
| BLAKE2b-256 |
45428efcd86b3d85e36350def4007509cd229b723ea59ef13c7d170bbde548f3
|
File details
Details for the file raysurfer-0.3.0-py3-none-any.whl.
File metadata
- Download URL: raysurfer-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34e689b76d55ab8fa034f94afcfacb9a9d6afac129259d64f5769b6406178a65
|
|
| MD5 |
a14f124bec851693746856fa143fa746
|
|
| BLAKE2b-256 |
86c26cf783743be7c6cb52ff7c4a0c1249a47ed1263e6cb3381488df8fd0b7d5
|