feat(standalone): 新增单机模式,KILOSTAR_MODE=standalone 时去掉 Ray 依赖

通过 StandaloneProxy 适配层让 .remote() 调用在单机模式下透明降级为
asyncio 协程调用,7 个 Actor 和 workflow task 均可在纯 asyncio 环境运行,
启动快、资源占用低。分布式模式行为完全不变。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-03 15:52:41 +00:00
parent 76a67e8237
commit 457d12834f
14 changed files with 390 additions and 108 deletions
@@ -36,7 +36,7 @@ import datetime
from dataclasses import dataclass
from typing import Any, Awaitable, Callable, Dict, List, Optional
import ray
from kilostar.utils.standalone_proxy import remote_task, _STANDALONE
from pydantic import BaseModel, Field
from pydantic_graph import BaseNode, End, Graph, GraphRunContext
from pydantic_graph.persistence import BaseStatePersistence
@@ -519,7 +519,7 @@ async def resume_workflow_graph(
return final_output
@ray.remote
@remote_task
def run_workflow_task(
workflow_data: dict, trace_id: str, resume_only: bool = False
):
@@ -575,4 +575,7 @@ def run_workflow_task(
workflow_data, trace_id, persistence=persistence
)
asyncio.run(_entry())
if _STANDALONE:
return _entry()
else:
asyncio.run(_entry())