ai-python-custom-loop
Use when building custom agent loops. Modify tool dispatch, history management, hooks, control flow.
소스 정보
- 저장소
- vercel-labs/seal
- 최근 소스 활동
- 2026년 7월 17일 17:25
- 감지된 SKILL.md 언어
- 영어
- 스타
- 8
- 포크
- 3
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기- name
- ai-python-custom-loop
- description
- Use when building custom agent loops. Modify tool dispatch, history management, hooks, control flow.
- metadata
- {"sdk-version":"0.2.1"}
# ai-python-custom-loop
Keep the default shape unless you must change control flow:
```python
class MyAgent(ai.Agent):
async def loop(self, context: ai.Context):
while context.keep_running():
async with (
ai.stream(context=context) as stream,
ai.ToolRunner() as runner,
):
async for event in ai.util.merge(stream, runner.events()):
yield event
if isinstance(event, ai.events.ToolEnd):
runner.schedule(context.resolve(event.tool_call))
context.add(stream.message)
context.add(runner.get_tool_message())
```
Rules:
- Call `context.keep_running()` at the top of each turn.
- Use `ai.stream(context=context)` so model, messages, tools, output type, and params stay together.
- Yield events from the loop. `Agent.run` hides replay events from callers.
- On `ToolEnd`, use `context.resolve(event.tool_call)`. It handles validation, approval gates, and cached replay results.
- Do not call `tool.fn` directly unless you also handle validation, approvals, and cached results.
- Schedule resolved calls with `ToolRunner.schedule(...)`.
- `ToolRunner.schedule(...)` also accepts a zero-arg async callable that returns `ai.events.ToolCallResult`.
- If you make a result yourself, use `runner.add_result(ai.tool_result(...))`.
- Add `stream.message`, then `runner.get_tool_message()`. `context.add(...)` skips replay messages.
- Every tool call must get one tool result.
- For hooks, let `context.resolve(...)` build the gated call. Use `ai-python-serverless-execution` for request boundaries.
- For durable calls, keep this shape and wrap only model or tool I/O. Use `ai-python-durable-execution`.
GitHub에서 보기