Merge branch 'feature-swe-agent' into 'mgx_ops'

update: 移除 swe agent window 的实时配置,固定为 100 行

See merge request pub/MetaGPT!220
This commit is contained in:
张雷 2024-07-10 11:44:00 +00:00
commit 806540bba5
2 changed files with 3 additions and 23 deletions

View file

@ -7,7 +7,7 @@ https://github.com/princeton-nlp/SWE-agent/tree/main/config/configs
SWE_AGENT_SYSTEM_TEMPLATE = """
SETTING: You are an autonomous programmer, and you're working directly in the environment line with a special interface.Let's work step by step.
The special interface consists of a file editor that shows you {WINDOW} lines of a file at a time.
The special interface consists of a file editor that shows you 100 lines of a file at a time.
Please note that THE EDIT COMMAND REQUIRES PROPER INDENTATION. Pay attention to the original indentation when replacing the function.
If you'd like to add the line ' print(x)' you must fully write that out, with all those spaces before the code! Indentation is important and code that is not indented correctly will fail and require fixing before it can be run.

View file

@ -1,5 +1,4 @@
import json
import os
from pydantic import Field
@ -18,9 +17,7 @@ class SWEAgent(RoleZero):
name: str = "Swen"
profile: str = "Issue Solver"
goal: str = "Resolve GitHub issue"
_bash_window_size: int = 100
_system_msg: str = SWE_AGENT_SYSTEM_TEMPLATE
system_msg: list[str] = [_system_msg.format(WINDOW=_bash_window_size)]
system_msg: str = [SWE_AGENT_SYSTEM_TEMPLATE]
_instruction: str = NEXT_STEP_TEMPLATE
tools: list[str] = [
"Bash",
@ -35,7 +32,6 @@ class SWEAgent(RoleZero):
run_eval: bool = False
async def _think(self) -> bool:
self._update_system_msg()
await self._format_instruction()
res = await super()._think()
if self.run_eval:
@ -51,17 +47,6 @@ class SWEAgent(RoleZero):
}
)
def _update_system_msg(self):
"""
Sets the system message for the SWE agent.
Sets the `_bash_window_size` from the environment variable `WINDOW` if it exists.
Formats the `_system_msg` template with the current `_bash_window_size`.
"""
if os.getenv("WINDOW"):
self._bash_window_size = int(os.getenv("WINDOW"))
self.system_msg = [self._system_msg.format(WINDOW=self._bash_window_size)]
async def _format_instruction(self):
"""
Formats the instruction message for the SWE agent.
@ -71,12 +56,7 @@ class SWEAgent(RoleZero):
"""
state_output = await self.terminal.run("state")
bash_state = json.loads(state_output)
self.instruction = self._instruction.format(
WINDOW=self._bash_window_size, examples=MINIMAL_EXAMPLE, **bash_state
).strip()
return self.instruction
self.instruction = self._instruction.format(**bash_state).strip()
async def _parse_commands_for_eval(self):
"""