diff --git a/README.md b/README.md index 32b7c76..4b26f1c 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,31 @@ autoMate定义了三种角色: # OKR工作体系 -市面上的大模型是对任务理解不透彻,如何解决这个问题呢?我想到了OKR工作体系,把上层的O向下拆解成KR,并且中间不断对焦!我认为这是一个非常高效的工作体系,AutoMate 引入OKR就像是给整个团队配上了高级导航系统,各agent都能清清楚楚知道自己要完成的任务,同时不断与上级对焦能够避免任务失真。 +大模型的回答内容缺少精准度,本质上是对任务理解不透彻,如何解决这个问题呢?我想到了OKR工作体系,把上层的O向下拆解成KR,并且中间不断对焦!我认为这是一个非常高效的工作体系,AutoMate 引入OKR就像是给整个团队配上了高级导航系统,各agent都能清清楚楚知道自己要完成的任务,同时不断与上级对焦能够避免任务失真。 +在 o_kr.py 中定义了目标(Objective)并为每个目标关联多个关键成果(Key Results),用户可以通过实例化`OKR_Object`来创建一个目标,然后通过`add_key_result`方法添加关联的关键成果。每个关键成果的进度可以通过`set_progress`方法单独更新。目标的总体进度将根据其所有关键成果的进度自动更新,示例代码如下: + +```python +from o_kr import OKR_Object, OKR_KeyResult + +# 创建一个目标 +objective = OKR_Object("提升品牌知名度") + +# 创建关键成果并添加到目标中 +kr1 = OKR_KeyResult("完成市场调研") +kr2 = OKR_KeyResult("开展线上营销活动") +objective.add_key_result(kr1) +objective.add_key_result(kr2) + +# 更新关键成果的进度 +kr1.set_progress(50) +kr2.set_progress(75) + +# 打印目标的进度 +print(objective.progress) # 输出应该是两个关键成果进度的平均值 +``` # 工具 -使用selenium工具操作浏览器进行网络搜索和内容爬取。 \ No newline at end of file +使用selenium工具操作浏览器进行网络搜索和内容爬取。 + + diff --git a/main.py b/main.py index 69d8f86..a066853 100644 --- a/main.py +++ b/main.py @@ -1,12 +1,15 @@ +from o_kr import OKR + + class AutoMate: def __init__(self): pass def rule_define(self): - pass - + o_kr = OKR() + o_kr.set_objective(input("请输入任务: ")) diff --git a/o_kr.py b/o_kr.py new file mode 100644 index 0000000..b0a1b62 --- /dev/null +++ b/o_kr.py @@ -0,0 +1,54 @@ +from o_kr import OKR_KeyResult +class OKR_Object: + """ + Represents an objective in an Objectives and Key Results (OKR) tracker. + + Attributes: + name (str): The name of the objective. + key_results (list): A list of KeyResult objects representing the key results of the objective. + progress (int): The progress of the objective, calculated based on the progress of its key results. + """ + + def __init__(self, name): + self.name = name + self.key_results = [] + self.progress = 0 + + def add_key_result(self, key_result:OKR_KeyResult): + self.key_results.append(key_result) + key_result.set_objective(self) + + def update_progress(self): + key_results_progress = [kr.progress for kr in self.key_results] + if all(progress == 100 for progress in key_results_progress): + self.progress = 100 + else: + self.progress = sum(key_results_progress) / len(key_results_progress) + + +class OKR_KeyResult: + """ + Represents a key result in an Objectives and Key Results (OKR) tracker. + + Attributes: + name (str): The name of the key result. + progress (int): The progress of the key result,progress is a number between 0 and 100. + + Methods: + set_progress(progress): Updates the progress of the key result. + set_objective(objective): Sets the objective for the key result. + """ + + def __init__(self, name): + self.name = name + self.progress = 0 + self.objective = None + + def set_objective(self, objective): + self.objective = objective + + + def set_progress(self, progress): + self.progress = progress + if self.objective: + self.objective.update_progress() \ No newline at end of file diff --git a/okr_define.py b/okr_define.py deleted file mode 100644 index 77984fc..0000000 --- a/okr_define.py +++ /dev/null @@ -1,35 +0,0 @@ -class OKR: - """ - Represents an Objectives and Key Results (OKR) tracker. - - Attributes: - objectives (dict): A dictionary to store the objectives and their progress. - key_results (dict): A dictionary to store the key results for each objective. - - Methods: - set_objective(objective): Sets a new objective with initial progress of 0. - set_key_result(objective, key_result): Sets a new key result for the given objective. - set_objective_progress(objective, progress): Updates the progress of the given objective. - set_key_result_progress(objective, key_result, progress): Updates the progress of the given key result. - """ - - def __init__(self): - self.objectives = {} - self.key_results = {} - - def set_objective(self, objective): - self.objectives[objective] = 0 - - def set_key_result(self, objective, key_result): - if objective in self.objectives: - if objective not in self.key_results: - self.key_results[objective] = [] - self.key_results[objective].append(key_result) - - def set_objective_progress(self, objective, progress): - if objective in self.objectives: - self.objectives[objective] = progress - - def set_key_result_progress(self, objective, key_result, progress): - if objective in self.key_results and key_result in self.key_results[objective]: - self.key_results[objective][key_result] = progress