feat: add a web UI server (#1345)

* update rdagent cmd

* fix log error message

* use multiProcessing.Process instead of subprocess.Popen

* add traces to gitignore

* add user interactor in RDLoop (finance scenarios)

* add interactor (feedback, hypothesis) for quant scens

* fix the test_end in qlib conf

* add features init config, general instruction to qlib scenarios

* set base features for based exp

* fix bug when combine factors

* move traces folder to git_ignore_folder

* fix bug in features init

* fix quant interact bug

* fix logger warning error

* bug fixes

* modify rdagent logger, now it can set file output

* adjust cli functions and fix logger bug

* fix server port transport problem

* update server_ui in cli

* add web code

* fix CI problem

* black fix

* update web ui README

* update README

* update readme
This commit is contained in:
XianBW
2026-03-18 14:04:52 +08:00
committed by GitHub
parent 7cd64a26fd
commit 14395488b9
141 changed files with 12852 additions and 279 deletions
+6 -2
View File
@@ -11,6 +11,7 @@ Postscripts:
import asyncio
import concurrent.futures
import copy
import multiprocessing.queues
import os
import pickle
from collections import defaultdict
@@ -528,8 +529,11 @@ class LoopBase:
def __getstate__(self) -> dict[str, Any]:
res = {}
for k, v in self.__dict__.items():
if k not in ["queue", "semaphores", "_pbar"]:
res[k] = v
if k in ["queue", "semaphores", "_pbar"]:
continue
if isinstance(v, multiprocessing.queues.Queue): # interaction queues are not picklable
continue
res[k] = v
return res
def __setstate__(self, state: dict[str, Any]) -> None: