feat: v2 plan — remove autogen/crewai, add tasks and wiki

- Remove autogen and crewai backends (focus on custom only)
- Simplify CLI: remove --backend flag
- Remove optional deps from pyproject.toml
- Add .tasks/ with 7 tasks for Phase 1 refactor
- Add .wiki/concepts/meeting-room-v2.md with architecture plan
- Update .wiki/index.md and .tasks/STATUS.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-03 23:42:39 +03:00
parent 5ed79a2e95
commit 52e77bb50c
16 changed files with 289 additions and 157 deletions

View File

@@ -1,60 +0,0 @@
"""AutoGen backend — uses microsoft/autogen for multi-agent conversation."""
def check_installed():
try:
import autogen # noqa
return True
except ImportError:
return False
def run(scenario_path: str, config: dict):
if not check_installed():
print("AutoGen is not installed. Run:\n pip install meeting-room[autogen]")
return []
import yaml
import autogen
from meeting_room.api_client import init_providers
from meeting_room.scenario_loader import load_scenario
scenario = load_scenario(scenario_path)
init_providers(config)
roles = config["roles"]
participants = scenario.get("participants", list(roles.keys()))
llm_configs = {}
for prov_name, prov_cfg in config["providers"].items():
llm_configs[prov_name] = {
"base_url": prov_cfg["base_url"],
"api_key": prov_cfg["api_key"],
}
agents = []
for role_id in participants:
role = roles[role_id]
prov = role["provider"]
llm_cfg = dict(llm_configs[prov])
llm_cfg["model"] = role["model"]
agent = autogen.ConversableAgent(
name=role["name"],
system_message=role["system_prompt"].strip(),
llm_config={"config_list": [llm_cfg], "temperature": role.get("temperature", 0.7)},
human_input_mode="NEVER",
)
agents.append(agent)
groupchat = autogen.GroupChat(
agents=agents,
messages=[],
max_round=scenario.get("max_rounds", config["defaults"]["max_rounds"]),
)
manager = autogen.GroupChatManager(
groupchat=groupchat,
llm_config={"config_list": [llm_configs[participants[0]]]},
)
agents[0].initiate_chat(manager, message=scenario["problem"])
return groupchat.messages

View File

@@ -1,53 +0,0 @@
"""CrewAI backend — uses crewai for task-oriented multi-agent discussion."""
def check_installed():
try:
import crewai # noqa
return True
except ImportError:
return False
def run(scenario_path: str, config: dict):
if not check_installed():
print("CrewAI is not installed. Run:\n pip install meeting-room[crewai]")
return []
import yaml
from crewai import Agent, Task, Crew, Process
from meeting_room.scenario_loader import load_scenario
scenario = load_scenario(scenario_path)
roles = config["roles"]
participants = scenario.get("participants", list(roles.keys()))
agents = []
for role_id in participants:
role = roles[role_id]
agent = Agent(
role=role["name"],
goal=role["system_prompt"].split(".")[0] + ".",
backstory=role["system_prompt"].strip(),
llm=f"{role['provider']}/{role['model']}",
verbose=True,
)
agents.append(agent)
discuss_task = Task(
description=f"Discuss this problem as a group:\n\n{scenario['problem']}",
agent=agents[0],
expected_output="Final solution with arguments from each participant",
)
crew = Crew(
agents=agents,
tasks=[discuss_task],
process=Process.sequential,
verbose=True,
)
result = crew.kickoff()
print(f"\n{'='*60}\nCREWAI RESULT:\n{'='*60}\n")
print(result)
return str(result)

View File

@@ -223,7 +223,7 @@ def find_workspace_config() -> str | None:
return None
def run_discussion(backend: str, scenario: str, config: dict, save: bool = False):
def run_discussion(scenario: str, config: dict, save: bool = False):
scenario_path = scenario if os.path.isabs(scenario) else os.path.join(os.getcwd(), scenario)
if not os.path.exists(scenario_path):
# Try bundled scenarios
@@ -232,18 +232,8 @@ def run_discussion(backend: str, scenario: str, config: dict, save: bool = False
print(f"Scenario not found: {scenario}")
sys.exit(1)
if backend == "custom":
from meeting_room.backends.custom.run import run
conversation = run(scenario_path, config)
elif backend == "autogen":
from meeting_room.backends.autogen.run import run
conversation = run(scenario_path, config)
elif backend == "crewai":
from meeting_room.backends.crewai.run import run
conversation = run(scenario_path, config)
else:
print(f"Unknown backend: {backend}")
sys.exit(1)
from meeting_room.backends.custom.run import run
conversation = run(scenario_path, config)
if save and conversation:
# Determine sessions dir
@@ -263,12 +253,6 @@ def main():
parser = argparse.ArgumentParser(
description="Meeting Room — Multi-Agent Discussion Framework",
)
parser.add_argument(
"-b", "--backend",
choices=["custom", "autogen", "crewai"],
default="custom",
help="Discussion framework (default: custom)",
)
parser.add_argument(
"-s", "--scenario",
default="example-saas.md",
@@ -336,7 +320,7 @@ def main():
if args.workdir:
config["defaults"]["workdir"] = args.workdir
run_discussion(args.backend, args.scenario, config, save=args.save)
run_discussion(args.scenario, config, save=args.save)
if __name__ == "__main__":