docs+style: README 隆重介绍 v1.29 AI 深度辅助(认知自由叙事);ruff format 对齐 CI

This commit is contained in:
GitHub
2026-09-02 20:23:27 +08:00
parent 4bd5b5d833
commit a9dabe4682
6 changed files with 63 additions and 26 deletions
+1 -2
View File
@@ -201,8 +201,7 @@ def resolve_config(cfg: LlmConfig | None = None) -> LlmConfig:
c.model = preset.default_model
if not c.api_url or not c.model:
raise ValueError(
f"LLM 配置不完整:provider={c.provider} 缺少 api_url 或 model"
"请在 AI 设置中补全"
f"LLM 配置不完整:provider={c.provider} 缺少 api_url 或 model请在 AI 设置中补全"
)
return c
+1 -2
View File
@@ -66,8 +66,7 @@ def session_info(now: datetime | None = None, *, tz: tzinfo | None = None) -> di
return {
"is_trading_time": is_trading_time(t),
"sessions": [
{"start": s.strftime("%H:%M"), "end": e.strftime("%H:%M")}
for s, e in SESSION_WINDOWS
{"start": s.strftime("%H:%M"), "end": e.strftime("%H:%M")} for s, e in SESSION_WINDOWS
],
"session_desc": SESSION_DESC,
"server_time": t.isoformat(timespec="seconds"),
+5 -1
View File
@@ -206,7 +206,11 @@ async def _fetch_120m(
_MAX_BARS_PER_FETCH // 2,
)
df = await client.get_security_bars(
market_from_str(market), code, category_from_str("MIN_60"), start, fetch_n,
market_from_str(market),
code,
category_from_str("MIN_60"),
start,
fetch_n,
bar_time=bar_time,
)
return _resample_pairs(df, count)
+13 -9
View File
@@ -65,12 +65,8 @@ class LlmChatRequest(BaseModel):
prompt: str = Field(..., min_length=1, max_length=200_000)
system_prompt: str | None = Field(None, description="None = 用配置里的默认系统提示")
override: LlmConfigUpdate | None = Field(
None, description="临时覆盖配置(不落盘,仅本次调用"
)
context: LlmChatContext | None = Field(
None, description="策略上下文(随成功解读一并落历史库)"
)
override: LlmConfigUpdate | None = Field(None, description="临时覆盖配置(不落盘,仅本次调用)")
context: LlmChatContext | None = Field(None, description="策略上下文(随成功解读一并落历史库")
def _merge_api_key(submitted: str, current: str) -> str:
@@ -153,7 +149,11 @@ async def update_llm_config(req: LlmConfigUpdate) -> dict[str, Any]:
def _record_history(
provider: str, model: str, prompt: str, reply: str, elapsed: float,
provider: str,
model: str,
prompt: str,
reply: str,
elapsed: float,
ctx: LlmChatContext | None,
) -> None:
"""成功解读旁路落库(llm_history.db)。失败只记日志,不影响解读结果。"""
@@ -217,8 +217,12 @@ async def llm_chat_async(req: LlmChatRequest) -> TaskSubmitResponse:
_record_history(
client.config.provider, client.config.model, req.prompt, reply, elapsed, req.context
)
return {"reply": reply, "model": client.config.model, "provider": client.config.provider,
"elapsed": elapsed}
return {
"reply": reply,
"model": client.config.model,
"provider": client.config.provider,
"elapsed": elapsed,
}
runner = get_runner()
task_id = runner.submit(_run, description=desc)