diff --git a/rootfs/agents/agent_1/agent.toml b/rootfs/agents/agent_1/agent.toml deleted file mode 100644 index 53d0605..0000000 --- a/rootfs/agents/agent_1/agent.toml +++ /dev/null @@ -1,6 +0,0 @@ -instance_id = "agent_1" -fullname = "tracy wang" - -[[prompt]] -role = "system" -content = "你是我的私人英文老师,和我用地道的美式英语进行交流。你会在和我交流的同时,调整我的输入成为更地道的美式句子,并根据你对我英文水平的预测,对可能发错英的单词标上音标。如果我给你发中文,说明我不知道这句话用美式英语怎么说,你依旧按上述规则回应我。" diff --git a/src/aios_kernel/agent.py b/src/aios_kernel/agent.py index d10eb20..fb07ac5 100644 --- a/src/aios_kernel/agent.py +++ b/src/aios_kernel/agent.py @@ -317,7 +317,7 @@ class AIAgent: prompt.append(msg_prompt) self._format_msg_by_env_value(prompt) - logger.info(f"Agent {self.agent_id} do llm token static system:{system_prompt_len},function:{function_token_len},history:{history_token_len},input:{input_len}") + logger.debug(f"Agent {self.agent_id} do llm token static system:{system_prompt_len},function:{function_token_len},history:{history_token_len},input:{input_len},totoal prompt:{system_prompt_len + function_token_len + history_token_len} ") task_result:ComputeTaskResult = await ComputeKernel.get_instance().do_llm_completion(prompt,self.llm_model_name,self.max_token_size,inner_functions) final_result = task_result.result_str diff --git a/src/aios_kernel/storage.py b/src/aios_kernel/storage.py index 5119167..d57546e 100644 --- a/src/aios_kernel/storage.py +++ b/src/aios_kernel/storage.py @@ -63,6 +63,7 @@ class UserConfig: except Exception as e: logger.warn(f"load user config from {file_path} failed!") + async def save_to_user_config(self) -> None: will_save_config = {} for key,value in self.config_table.items(): @@ -183,4 +184,19 @@ class AIStorage: def put_named_object(self,name:str,obj:Any) -> None: pass + + async def try_create_file_with_default_value(self,path:str,default_value:str): + if os.path.exists(path): + return None + + try: + directory = os.path.dirname(path) + if not os.path.exists(directory): + os.makedirs(directory) + async with aiofiles.open(path,"w") as f: + await f.write(default_value) + + except Exception as e: + logger.error(f"open or create file {path} failed! {str(e)}") + diff --git a/src/component/agent_manager/agent_manager.py b/src/component/agent_manager/agent_manager.py index 92bad31..fecead2 100644 --- a/src/component/agent_manager/agent_manager.py +++ b/src/component/agent_manager/agent_manager.py @@ -8,6 +8,10 @@ from package_manager import PackageEnv,PackageEnvManager,PackageMediaInfo,Packag logger = logging.getLogger(__name__) +default_agent_cfg = """ +main = "./" +cache = "./.agents" +""" class AgentManager: _instance = None @@ -24,12 +28,17 @@ class AgentManager: self.db_path : str = None self.loaded_agent_instance : Dict[str,AIAgent] = None - def initial(self) -> None: + async def initial(self) -> None: system_app_dir = AIStorage.get_instance().get_system_app_dir() user_data_dir = AIStorage.get_instance().get_myai_dir() self.agent_templete_env : PackageEnv = PackageEnvManager().get_env(f"{system_app_dir}/templates/templetes.cfg") - self.agent_env : PackageEnv = PackageEnvManager().get_env(f"{system_app_dir}/agents/agents.cfg") + sys_agent_env : PackageEnv = PackageEnvManager().get_env(f"{system_app_dir}/agents/agents.cfg") + user_agent_config_path = f"{user_data_dir}/agents/agents.cfg" + await AIStorage.get_instance().try_create_file_with_default_value(user_agent_config_path,default_agent_cfg) + self.agent_env : PackageEnv = PackageEnvManager().get_env(user_agent_config_path) + self.agent_env.parent_envs.append(sys_agent_env) + self.db_path = f"{user_data_dir}/messages.db" self.loaded_agent_instance = {} if self.agent_templete_env is None: diff --git a/src/component/package_manager/env.py b/src/component/package_manager/env.py index 4e1b68a..3e16c4d 100644 --- a/src/component/package_manager/env.py +++ b/src/component/package_manager/env.py @@ -16,7 +16,7 @@ class PackageEnv: self.locked_index : str = "./pkg.lock" self.is_strict : bool = True - self.parent_envs : list[PackageEnv] = None + self.parent_envs : list[PackageEnv] = [] self.index_dbs = None self.env_dir = None @@ -56,7 +56,7 @@ class PackageEnv: if media_info is None: if search_parent is True and self.parent_envs is not None: for parent_env in self.parent_envs: - media_info = parent_env.load(pkg_id,cid,False) + media_info = parent_env.load(pkg_id,False) if media_info is not None: return media_info diff --git a/src/component/workflow_manager/workflow_manager.py b/src/component/workflow_manager/workflow_manager.py index 3604327..39be2e4 100644 --- a/src/component/workflow_manager/workflow_manager.py +++ b/src/component/workflow_manager/workflow_manager.py @@ -7,6 +7,11 @@ from package_manager import PackageEnv,PackageEnvManager,PackageMediaInfo,Packag from agent_manager import AgentManager logger = logging.getLogger(__name__) +default_workflow_cfg = """ +main = "./" +cache = "./.agents" +""" + class WorkflowManager: _instance = None @@ -17,12 +22,18 @@ class WorkflowManager: return cls._instance - def initial(self) -> None: + async def initial(self) -> None: self.loaded_workflow = {} system_app_dir = AIStorage.get_instance().get_system_app_dir() user_data_dir = AIStorage.get_instance().get_myai_dir() - self.workflow_env = PackageEnvManager().get_env(f"{system_app_dir}/workflows/workflows.cfg") + sys_workflow_env = PackageEnvManager().get_env(f"{system_app_dir}/workflows/workflows.cfg") + + user_workflow_config_path = f"{user_data_dir}/workflows/workflows.cfg" + await AIStorage.get_instance().try_create_file_with_default_value(user_workflow_config_path,default_workflow_cfg) + self.workflow_env = PackageEnvManager().get_env(f"{user_data_dir}/workflows/workflows.cfg") + self.workflow_env.parent_envs.append(sys_workflow_env) + self.db_file = os.path.abspath(f"{user_data_dir}/messages.db") if self.workflow_env is None: raise Exception("WorkflowManager initial failed") diff --git a/src/service/aios_shell/aios_shell.py b/src/service/aios_shell/aios_shell.py index 41f24a0..f5b9dec 100644 --- a/src/service/aios_shell/aios_shell.py +++ b/src/service/aios_shell/aios_shell.py @@ -85,8 +85,8 @@ class AIOS_Shell: await cal_env.start() Environment.set_env_by_id("calender",cal_env) - AgentManager.get_instance().initial() - WorkflowManager.get_instance().initial() + await AgentManager.get_instance().initial() + await WorkflowManager.get_instance().initial() open_ai_node = OpenAI_ComputeNode.get_instance() if await open_ai_node.initial() is not True: