๐ OpenManus โ
Manus๋ ๋๋ผ์ด ๋๊ตฌ์ง๋ง, OpenManus๋ ์ด๋ ์ฝ๋ ์์ด๋ ๋ชจ๋ ์์ด๋์ด๋ฅผ ์คํํ ์ ์์ต๋๋ค! ๐ซ
์ฐ๋ฆฌ ํ์ ๋ฉค๋ฒ์ธ @Xinbin Liang์ @Jinyu Xiang (ํต์ฌ ์์ฑ์), ๊ทธ๋ฆฌ๊ณ @Zhaoyang Yu, @Jiayi Zhang, @Sirui Hong์ด ํจ๊ป ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ @MetaGPT๋ก๋ถํฐ ์์ต๋๋ค. ํ๋กํ ํ์ ์ ๋จ 3์๊ฐ ๋ง์ ์ถ์๋์์ผ๋ฉฐ, ๊ณ์ํด์ ๋ฐ์ ํ๊ณ ์์ต๋๋ค!
์ด ํ๋ก์ ํธ๋ ๊ฐ๋จํ ๊ตฌํ์์ ์์๋์์ผ๋ฉฐ, ์ฌ๋ฌ๋ถ์ ์ ์, ๊ธฐ์ฌ ๋ฐ ํผ๋๋ฐฑ์ ํ์ํฉ๋๋ค!
OpenManus๋ฅผ ํตํด ์ฌ๋ฌ๋ถ๋ง์ ์์ด์ ํธ๋ฅผ ์ฆ๊ฒจ๋ณด์ธ์!
๋ํ OpenManus-RL์ ์๊ฐํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. OpenManus์ UIUC ์ฐ๊ตฌ์๋ค์ด ๊ณต๋ ๊ฐ๋ฐํ ์ด ์คํ์์ค ํ๋ก์ ํธ๋ LLM ์์ด์ ํธ์ ๋ํด ๊ฐํ ํ์ต(RL) ๊ธฐ๋ฐ (์: GRPO) ํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
ํ๋ก์ ํธ ๋ฐ๋ชจ โ
<video src="https://private-user-images.githubusercontent.com/61239030/420168772-6dcfd0d2-9142-45d9-b74e-d10aa75073c6.mp4?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDEzMTgwNTksIm5iZiI6MTc0MTMxNzc1OSwicGF0aCI6Ii82MTIzOTAzMC80MjAxNjg3NzItNmRjZmQwZDItOTE0Mi00NWQ5LWI3NGUtZDEwYWE3NTA3M2M2Lm1wND9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzA3VDAzMjIzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdiZjFkNjlmYWNjMmEzOTliM2Y3M2VlYjgyNDRlZDJmOWE3NWZhZjE1MzhiZWY4YmQ3NjdkNTYwYTU5ZDA2MzYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.UuHQCgWYkh0OQq9qsUWqGsUbhG3i9jcZDAMeHjLt5T4" data-canonical-src="https://private-user-images.githubusercontent.com/61239030/420168772-6dcfd0d2-9142-45d9-b74e-d10aa75073c6.mp4?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDEzMTgwNTksIm5iZiI6MTc0MTMxNzc1OSwicGF0aCI6Ii82MTIzOTAzMC80MjAxNjg3NzItNmRjZmQwZDItOTE0Mi00NWQ5LWI3NGUtZDEwYWE3NTA3M2M2Lm1wND9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzA3VDAzMjIzOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdiZjFkNjlmYWNjMmEzOTliM2Y3M2VlYjgyNDRlZDJmOWE3NWZhZjE1MzhiZWY4YmQ3NjdkNTYwYTU5ZDA2MzYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.UuHQCgWYkh0OQq9qsUWqGsUbhG3i9jcZDAMeHjLt5T4" controls="controls" muted="muted" class="d-block rounded-bottom-2 border-top width-fit" style="max-height:640px; min-height: 200px"></video>
์ค์น ๋ฐฉ๋ฒ โ
๋ ๊ฐ์ง ์ค์น ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๋ฐฉ๋ฒ 2 (uv ์ฌ์ฉ) ์ด ๋ ๋น ๋ฅธ ์ค์น์ ํจ์จ์ ์ธ ์ข ์์ฑ ๊ด๋ฆฌ๋ฅผ ์ํด ๊ถ์ฅ๋ฉ๋๋ค.
๋ฐฉ๋ฒ 1: conda ์ฌ์ฉ โ
- ์๋ก์ด conda ํ๊ฒฝ์ ์์ฑํฉ๋๋ค:
conda create -n open_manus python=3.12
conda activate open_manus- ์ ์ฅ์๋ฅผ ํด๋ก ํฉ๋๋ค:
git clone https://github.com/mannaandpoem/OpenManus.git
cd OpenManus- ์ข ์์ฑ์ ์ค์นํฉ๋๋ค:
pip install -r requirements.txt๋ฐฉ๋ฒ 2: uv ์ฌ์ฉ (๊ถ์ฅ) โ
- uv๋ฅผ ์ค์นํฉ๋๋ค. (๋น ๋ฅธ Python ํจํค์ง ์ค์น ๋ฐ ์ข ์์ฑ ๊ด๋ฆฌ ๋๊ตฌ):
curl -LsSf https://astral.sh/uv/install.sh | sh- ์ ์ฅ์๋ฅผ ํด๋ก ํฉ๋๋ค:
git clone https://github.com/mannaandpoem/OpenManus.git
cd OpenManus- ์๋ก์ด ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ๊ณ ํ์ฑํํฉ๋๋ค:
uv venv --python 3.12
source .venv/bin/activate # Unix/macOS์ ๊ฒฝ์ฐ
# Windows์ ๊ฒฝ์ฐ:
# .venv\Scripts\activate- ์ข ์์ฑ์ ์ค์นํฉ๋๋ค:
uv pip install -r requirements.txt๋ธ๋ผ์ฐ์ ์๋ํ ๋๊ตฌ (์ ํ์ฌํญ) โ
playwright install์ค์ ๋ฐฉ๋ฒ โ
OpenManus๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ์ฉํ๋ LLM API์ ๋ํ ์ค์ ์ด ํ์ํฉ๋๋ค. ์๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ์ค์ ์ ์๋ฃํ์ธ์:
config๋๋ ํ ๋ฆฌ์config.tomlํ์ผ์ ์์ฑํ์ธ์ (์์ ํ์ผ์ ๋ณต์ฌํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค):
cp config/config.example.toml config/config.tomlconfig/config.tomlํ์ผ์ ํธ์งํ์ฌ API ํค๋ฅผ ์ถ๊ฐํ๊ณ ์ค์ ์ ์ปค์คํฐ๋ง์ด์งํ์ธ์:
# ์ ์ญ LLM ์ค์
[llm]
model = "gpt-4o"
base_url = "https://api.openai.com/v1"
api_key = "sk-..." # ์ค์ API ํค๋ก ๋ณ๊ฒฝํ์ธ์
max_tokens = 4096
temperature = 0.0
# ํน์ LLM ๋ชจ๋ธ์ ๋ํ ์ ํ์ ์ค์
[llm.vision]
model = "gpt-4o"
base_url = "https://api.openai.com/v1"
api_key = "sk-..." # ์ค์ API ํค๋ก ๋ณ๊ฒฝํ์ธ์๋น ๋ฅธ ์์ โ
OpenManus๋ฅผ ์คํํ๋ ํ ์ค ๋ช ๋ น์ด:
python main.py์ดํ ํฐ๋ฏธ๋์์ ์์ด๋์ด๋ฅผ ์์ฑํ์ธ์!
MCP ๋๊ตฌ ๋ฒ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์์ ์คํํ์ธ์:
python run_mcp.py๋ถ์์ ํ ๋ฉํฐ ์์ด์ ํธ ๋ฒ์ ์ ์คํํ๋ ค๋ฉด ๋ค์์ ์คํํ ์ ์์ต๋๋ค:
python run_flow.py๊ธฐ์ฌ ๋ฐฉ๋ฒ โ
๋ชจ๋ ์น์ ํ ์ ์๊ณผ ์ ์ฉํ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค! ์ด์๋ฅผ ์์ฑํ๊ฑฐ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํด ์ฃผ์ธ์.
๋๋ ๐ง ๋ฉ์ผ๋ก ์ฐ๋ฝ์ฃผ์ธ์. @mannaandpoem : mannaandpoem@gmail.com
์ฐธ๊ณ : pull request๋ฅผ ์ ์ถํ๊ธฐ ์ ์ pre-commit ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ์ญ์์ค. pre-commit run --all-files๋ฅผ ์คํํ์ฌ ๊ฒ์ฌ๋ฅผ ์คํํฉ๋๋ค.
์ปค๋ฎค๋ํฐ ๊ทธ๋ฃน โ
Feishu ๋คํธ์ํน ๊ทธ๋ฃน์ ์ฐธ์ฌํ์ฌ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ๊ฒฝํ์ ๊ณต์ ํ์ธ์!

๊ฐ์ฌ์ ๊ธ โ
์ด ํ๋ก์ ํธ์ ๊ธฐ๋ณธ์ ์ธ ์ง์์ ์ ๊ณตํด ์ฃผ์ anthropic-computer-use์ browser-use์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๋ํ, AAAJ, MetaGPT, OpenHands, SWE-agent์ ๊น์ ๊ฐ์ฌ๋ฅผ ๋๋ฆฝ๋๋ค.
๋ํ Hugging Face ๋ฐ๋ชจ ๊ณต๊ฐ์ ์ง์ํด ์ฃผ์ ้ถ่ทๆ่พฐ (stepfun)์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
OpenManus๋ MetaGPT ๊ธฐ์ฌ์๋ค์ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค. ์ด ์์ด์ ํธ ์ปค๋ฎค๋ํฐ์ ๊น์ ๊ฐ์ฌ๋ฅผ ์ ํฉ๋๋ค!
์ธ์ฉ โ
@misc{openmanus2025,
author = {Xinbin Liang and Jinyu Xiang and Zhaoyang Yu and Jiayi Zhang and Sirui Hong},
title = {OpenManus: An open-source framework for building general AI agents},
year = {2025},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/mannaandpoem/OpenManus}},
}