feat: resolve conflicts

This commit is contained in:
geekan 2023-12-14 23:54:38 +08:00 committed by 莘权 马
parent ad0ac94093
commit b97ca3af7e
12 changed files with 120 additions and 90 deletions

View file

@ -72,7 +72,7 @@ class Engineer(Role):
name: str = "Alex",
profile: str = "Engineer",
goal: str = "write elegant, readable, extensible, efficient code",
constraints: str = "the code should conform to standards like PEP8 and be modular and maintainable. "
constraints: str = "the code should conform to standards like google-style and be modular and maintainable. "
"Use same language as user requirement",
n_borg: int = 1,
use_code_review: bool = False,
@ -105,7 +105,9 @@ class Engineer(Role):
coding_context = await todo.run()
# Code review
if review:
coding_context = await WriteCodeReview(context=coding_context, llm=self._llm).run()
action = WriteCodeReview(context=coding_context, llm=self._llm)
self._init_action_system_message(action)
coding_context = await action.run()
await src_file_repo.save(
coding_context.filename,
dependencies={coding_context.design_doc.root_relative_path, coding_context.task_doc.root_relative_path},
@ -224,6 +226,7 @@ class Engineer(Role):
task_doc = await task_file_repo.get(i.name)
elif str(i.parent) == SYSTEM_DESIGN_FILE_REPO:
design_doc = await design_file_repo.get(i.name)
# FIXME: design doc没有加载进来是None
context = CodingContext(filename=filename, design_doc=design_doc, task_doc=task_doc, code_doc=old_code_doc)
return context

View file

@ -134,6 +134,7 @@ class Role:
self._setting = RoleSetting(
name=name, profile=profile, goal=goal, constraints=constraints, desc=desc, is_human=is_human
)
self._llm.system_prompt = self._get_prefix()
self._states = []
self._actions = []
self._role_id = str(self._setting)
@ -144,6 +145,9 @@ class Role:
self._states = []
self._actions = []
def _init_action_system_message(self, action: Action):
action.set_prefix(self._get_prefix(), self.profile)
def _init_actions(self, actions):
self._reset()
for idx, action in enumerate(actions):
@ -158,7 +162,7 @@ class Role:
)
i = action
# i.set_env(self._rc.env)
i.set_prefix(self._get_prefix(), self.profile)
self._init_action_system_message(i)
self._actions.append(i)
self._states.append(f"{idx}. {action}")
@ -408,7 +412,7 @@ class Role:
logger.debug(f"{self._setting}: no news. waiting.")
return
rsp = await self._react()
rsp = await self.react()
# Reset the next action to be taken.
self._rc.todo = None