59 lines
3.3 KiB
Python
59 lines
3.3 KiB
Python
"""
|
||
core/agent —— pi agent 核心框架的 Python 1:1 重构
|
||
==================================================
|
||
模块对照(pi-main → 本包):
|
||
packages/agent/src/types.ts → types.py 数据模型(消息/事件/工具/配置)
|
||
packages/agent/src/agent-loop.ts → loop.py 核心循环(runLoop 1:1)
|
||
packages/agent/src/agent.ts → agent.py Agent 状态机(prompt/steer/followUp/abort)
|
||
packages/ai/src/api/*.ts → stream_fn.py OpenAI 兼容流式(vLLM)+ 输出预算钳制
|
||
packages/ai/src/api/simple-options→ context.py token 估算 + clampMaxTokensToContext
|
||
packages/agent/src/compaction.ts → compaction.py 上下文压缩(切分/摘要/替换)
|
||
agent-session.ts 后置恢复逻辑 → recovery.py 重试退避 + 溢出/截断压缩恢复
|
||
packages/agent/src/tools/*.ts → tools.py 工具管线 + 内置 read/bash/write/edit
|
||
|
||
使用示例(最小闭环):
|
||
from core.agent import Agent, AgentConfig, ModelConfig
|
||
from core.agent.stream_fn import openai_stream
|
||
from core.agent.recovery import AgentRunner
|
||
from core.agent.tools import default_tools
|
||
|
||
cfg = AgentConfig(model=ModelConfig(...), tools=default_tools())
|
||
agent = Agent(cfg)
|
||
agent.set_stream_fn(openai_stream)
|
||
runner = AgentRunner(agent)
|
||
result = runner.run("你好")
|
||
"""
|
||
from .types import (AgentConfig, AgentError, AgentEvent, AgentMessage,
|
||
AgentState, AgentTool, AgentToolResult, AbortSignal,
|
||
AssistantMessageEvent, ModelConfig, RetryConfig, RunResult,
|
||
ToolCall, new_id)
|
||
from .agent import Agent
|
||
from .context import (CONTEXT_SAFETY_TOKENS, calculate_context_tokens,
|
||
clamp_max_tokens_to_context,
|
||
estimate_context_tokens, estimate_message_tokens,
|
||
should_compact)
|
||
from .compaction import (CompactionSettings,
|
||
DEFAULT_COMPACTION_SETTINGS, compact_context,
|
||
find_cut_point, prepare_compaction)
|
||
from .recovery import (AgentRunner, compute_retry_delay_ms, find_last_assistant,
|
||
is_context_overflow, is_recoverable_length,
|
||
is_retryable_assistant_error)
|
||
from .stream_fn import (classify_error, from_openai_messages, openai_stream,
|
||
to_openai_messages)
|
||
from .tools import default_tools
|
||
|
||
# 🆕 版本记录:核心框架为 pi (badlogic/pi-mono) 0.81.x 时代的 Python 移植,
|
||
# 2026-09 对齐 pi 0.85.1 的估算/锚定/钳制/重试语义(P0/P1/P2/M1/M2/M3)。
|
||
__version__ = "1.0.0 (pi 0.81.x port, aligned 0.85.1 semantics)"
|
||
__all__ = [
|
||
"Agent", "AgentConfig", "AgentError", "AgentEvent", "AgentMessage",
|
||
"AgentRunner", "AgentState", "AgentTool", "AgentToolResult",
|
||
"AbortSignal", "AssistantMessageEvent", "CONTEXT_SAFETY_TOKENS",
|
||
"ModelConfig", "RetryConfig", "RunResult", "ToolCall",
|
||
"clamp_max_tokens_to_context", "calculate_context_tokens", "classify_error", "compact_context",
|
||
"compute_retry_delay_ms", "default_tools", "estimate_context_tokens",
|
||
"find_last_assistant", "find_cut_point", "is_context_overflow",
|
||
"is_recoverable_length", "is_retryable_assistant_error", "new_id",
|
||
"openai_stream", "should_compact", "to_openai_messages",
|
||
]
|