Merge branch 'MVP' into MVP

This commit is contained in:
Liu Zhicong
2023-09-18 00:37:41 -07:00
committed by GitHub
48 changed files with 3596 additions and 615 deletions
+17
View File
@@ -0,0 +1,17 @@
import daemon
from time import sleep
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(filename="daemon_test.log",filemode="w",encoding='utf-8',force=True,
level=logging.INFO,
format='[%(asctime)s]%(name)s[%(levelname)s]: %(message)s')
def main_program():
while True:
logger.info("hello world")
sleep(1)
with daemon.DaemonContext():
main_program()
+32
View File
@@ -0,0 +1,32 @@
import asyncio
import os
import sys
directory = os.path.dirname(__file__)
sys.path.append(directory + '/../src')
from aios_kernel import CalenderEnvironment,WorkflowEnvironment
async def test_buildin_envs():
c_env = CalenderEnvironment("calender")
c_env.start()
print(c_env.get_value("now"))
async def show_event(eventid,event):
print(event.data)
c_env.attach_event_handler("timer",show_event)
w_env = WorkflowEnvironment("workflow",os.path.abspath(directory + "/../rootfs/workflow_env.db"))
w_env.set_value("test","test_aaaa")
print(w_env.get_value("test"))
await asyncio.sleep(10)
if __name__ == "__main__":
#test_rstr = "abc is {abc}"
#values = {"abc":"123"}
#new_str = test_rstr.format_map(values)
#print(new_str)
asyncio.run(test_buildin_envs())
+80 -12
View File
@@ -1,15 +1,83 @@
# workflow实例场景
# 能展示sub workflow
# 能展示env的整合
# 能展示filter的使用
# 能展示function的调用
# 能展示基于工作目标/KPI的sub workflow迭代流程
# 多人场景安排
[authors]
"buckyos.org" = {public="aaaa",name="BuckyOS Core Dev Team"}
[authors."cyfs.com"]
public="bbbb"
name="CYFS Core Dev Team"
# 例子:举办一个团队活动
# 方案讨论(通过交互引导的方式收集主人的需求)与确定
[env]
is_strict = false
prefixs = ["default","../m/s","abc"]
obj2 = {k1="bb",k2=300}
[env.obj]
k1="aa"
k2=200
# 活动前:
# 通讯员,对接管理参加活动的人的情况 (email spider)
# 酒店预订 简单:搜索(酒店评价) 处理异常
# 行程(票务)预订 :搜索,处理异常
# 餐饮预订:给出方案,确定细节,预订
# 活动中:
# 进行统计和分析,调整设备
# 安保,空调,音乐,拍照,录像
# 响应紧急情况
# 活动结束后:
# 整理照片,视频,进行必要的二次创作,发送给相关人员
# 对活动进行总结,提出改件意见(指导下一次活动)
# 1. 人员
# 主管,负责和客户沟通,并对每个环境的结果进行总结
# 嘉宾对接
# 酒店组
# 行程组
# 财务组
# 多媒体组
[filter]
"*" = "manager"
[roles.manager]
fullname = "经理"
agent="manager"
[[roles.manager.prompt]]
role="system"
content="""你是一个活动策划公司的经理,与客户对接并向团队下达指令。你的团队分为下面几个小组:嘉宾对接组,酒店预定组,行程预订组,财务组,活动摄像组。活动策划分为四个阶段:方案讨论,活动前,活动中,活动后。你会根据客户的需求,对团队进行分工,分别完成各个阶段的工作。你的基本工作模式是:\
1. 收到客户的明确的指令后,基于客户的已有信息和客户商量活动方案,和活动策划公司无关的业务你会回答‘与我无关’。当和客户完成活动方案的确认后,你会将拆解后的任务分配给各个小组 \
2. 根据目前已经确认的活动方案,你要根据时间适时的检查不同小组的工作情况。当收到小组的工作情况反馈后,你会站在全局的角度判断是否需要调整活动方案,如果需要调整,你会和客户商量重新确定方案,然后再将调整后的方案分配给各个小组。\
3. 有时工作小组会主动与你沟通,反馈一些问题。你会站在全局的角度给与指导,适当的调整工作小组的工作目标。如果反馈的问题需要你和客户沟通,你会和客户沟通后重新确定方案。再将调整后的方案分配给受到影响各个小组。\
4. 当你决定要和工作小组通信时,请使用`send_message({小组名称},{内容}`)的形式。"""}]
[sub_workflows]
[sub_workflows."嘉宾对接组"]
# 展现读取email和发送email与嘉宾沟通的能力
[sub_workflows."嘉宾对接组".environments.email]
new_mail = "收到来自{event.data.from},标题为{event.data.subject}的邮件,内容为{event.data.content}的电子邮件" # 这里将new_mail事件转换为了一个来自环境的message
[sub_workflows."嘉宾对接组".roles.leader]
name = "嘉宾对接组组长"
[[sub_workflows."嘉宾对接组".roles.leader.prompt]]
role="system"
content="""你是一家活动策划公司的嘉宾对接组的组长,你的工作是基于已知信息,当前活动信息、公司经理的指令与嘉宾沟通,收集嘉宾的信息,然后将信息反馈给经理。在你看来,参加活动的多少有成员都是嘉宾,你可以通过你知道的信息给不同的成员进行分级。你的基本工作模式是:\
1. 处理收到的邮件,如果邮件来自嘉宾,你会尝试从邮件的表态和内容中分享嘉宾的需要,并结合你对当前活动方案的理解判断是否需要和经理沟通,如果需要和经理沟通,你会将嘉宾的需求总结和告诉经理。不需要沟通的事项可以直接回复嘉宾。\
2. 你总是通过`call_function(get_env,'parent.topic'`的形式查询当前的活动方案。等待函数返回后,你会根据函数的返回结果继续处理上一个对话。\
3. 当你决定要和经理通信时,请使用`send_message(manager,{内容}`)的形式,内容的长度不超过200字。\
4. 当你决定要回复嘉宾时,请使用`call_function(sendmail,{嘉宾邮件地址},{标题},{内容})的形式,内容的长度不超过500字。"""
# 这里是孤立工作模式,组长只和经理沟通,也可以赋予其和其它组沟通的能力
[sub_workflows."酒店预定组"]
# 展现使用搜索引擎,并调用预订酒店的能力
[sub_workflows."酒店预定组".environments.email]
[sub_workflows."酒店预定组".roles.leader]
name="酒店预定组组长"
prompt = [{role="xxx",content="yyy"}]
[sub_workflows."酒店预定组".roles.research]
name="酒店搜索专家"
[sub_workflows."行程预订组"]
# 展现处理冲突并反推
nam3="3"