MCPcopy Create free account
hub / github.com/Louisym/MiniCC / ConversationRuntime

Class ConversationRuntime

tutorials/05_agentic_loop_complete.py:232–386  ·  view source on GitHub ↗

对话运行时 —— 把 API、工具、权限、Session 全部组合在一起。 这就是 Claude Code 的核心引擎。 对应源码: conversation.rs:100-168 在 Rust 源码里它是泛型的:ConversationRuntime C = ApiClient 类型, T = ToolExecutor 类型 Python 里我们直接用 Protocol,效果一样。

Source from the content-addressed store, hash-verified

230
231
232class ConversationRuntime:
233 """
234 对话运行时 —— 把 API、工具、权限、Session 全部组合在一起。
235
236 这就是 Claude Code 的核心引擎。
237 对应源码: conversation.rs:100-168
238
239 在 Rust 源码里它是泛型的:ConversationRuntime<C, T>
240 C = ApiClient 类型, T = ToolExecutor 类型
241 Python 里我们直接用 Protocol,效果一样。
242 """
243
244 def __init__(
245 self,
246 session: Session,
247 api_client: ApiClient,
248 tool_executor: ToolExecutor,
249 permission_policy: PermissionPolicy,
250 system_prompt: list[str],
251 max_iterations: int = 10,
252 ):
253 self.session = session
254 self.api_client = api_client
255 self.tool_executor = tool_executor
256 self.permission_policy = permission_policy
257 self.system_prompt = system_prompt
258 self.max_iterations = max_iterations
259 self.usage_tracker = UsageTracker()
260
261 def run_turn(
262 self,
263 user_input: str,
264 prompter: Optional[PermissionPrompter] = None,
265 ) -> TurnSummary:
266 """
267 执行一个完整的对话轮次。
268
269 这就是 Tutorial 01 里的 run_turn,但现在是完整版!
270
271 对应源码: conversation.rs:170-283
272 """
273 # 步骤 1: 添加用户消息
274 self.session.messages.append(ConversationMessage.user_text(user_input))
275
276 assistant_messages: list[ConversationMessage] = []
277 tool_results: list[ConversationMessage] = []
278 iterations = 0
279
280 # 步骤 2: Agentic Loop
281 while True:
282 iterations += 1
283 if iterations > self.max_iterations:
284 raise RuntimeError("exceeded maximum iterations")
285
286 # 步骤 2a: 调用 API
287 request = ApiRequest(
288 system_prompt=self.system_prompt,
289 messages=self.session.messages,

Callers 1

mainFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected