equip engineer2 with terminal

This commit is contained in:
garylin2099 2024-08-04 17:33:04 +08:00
parent 99c440b17a
commit dbdfd29cea
3 changed files with 8 additions and 3 deletions

View file

@ -1,9 +1,12 @@
from __future__ import annotations
from pydantic import Field
from metagpt.actions.write_code_review import ReviewAndRewriteCode
from metagpt.prompts.di.engineer2 import ENGINEER2_INSTRUCTION
from metagpt.roles.di.role_zero import RoleZero
from metagpt.strategy.experience_retriever import ENGINEER_EXAMPLE
from metagpt.tools.libs.terminal import Terminal
class Engineer2(RoleZero):
@ -12,13 +15,16 @@ class Engineer2(RoleZero):
goal: str = "Take on game, app, and web development."
instruction: str = ENGINEER2_INSTRUCTION
tools: list[str] = ["Plan", "Editor:write,read", "RoleZero", "ReviewAndRewriteCode"]
terminal: Terminal = Field(default_factory=Terminal, exclude=True)
tools: list[str] = ["Plan", "Editor:write,read", "RoleZero", "Terminal:run_command", "ReviewAndRewriteCode"]
def _update_tool_execution(self):
review = ReviewAndRewriteCode()
self.tool_execution_map.update(
{
"Terminal.run_command": self.terminal.run_command,
"ReviewAndRewriteCode.run": review.run,
"ReviewAndRewriteCode": review.run,
}

View file

@ -64,7 +64,6 @@ class RoleZero(Role):
# Equipped with three basic tools by default for optional use
editor: Editor = Editor()
browser: Browser = Browser()
# terminal: Terminal = Terminal() # FIXME: TypeError: cannot pickle '_thread.lock' object
# Experience
experience_retriever: ExpRetriever = DummyExpRetriever()