Feature Request: Declarative dependency management with pyproject.toml
First off — thanks for building GenericAgent. The minimalist architecture and self-evolving skill system are really elegant. I've been using it and enjoying the experience.
The issue: Currently there's no pyproject.toml or requirements.txt, so new users need to manually figure out which pip install commands to run. The README lists different pip install lines scattered across sections (streamlit, pywebview, pycryptodome, lark-oapi, etc.), and it's easy to miss one or install unnecessary packages.
For example, a user who just wants the Telegram bot frontend still needs to know to install requests and streamlit as a baseline, which isn't immediately obvious from the Bot section alone. The self-evolving code_run mechanism mitigates this nicely at runtime, but having a declarative manifest upfront would give a smoother first-run experience.
Proposal: Add a pyproject.toml with optional dependency groups so users can install exactly what they need in one command:
uv pip install -e . # core (requests, streamlit, pywebview, beautifulsoup4)
uv pip install -e ".[tg]" # + telegram
uv pip install -e ".[browser]" # + browser automation
uv pip install -e ".[all]" # everything
This keeps the project's zero-config philosophy — users still just clone and run. The manifest simply makes the implicit dependency graph explicit. The agent's self-install capability via code_run remains untouched.
Optional groups I had in mind:
| Group |
Packages |
| core (default) |
requests, streamlit, pywebview, beautifulsoup4 |
qt |
PySide6 |
browser |
bottle, simple-websocket-server |
tg |
python-telegram-bot |
qq |
qq-botpy |
wechat |
qrcode, pycryptodome |
feishu |
lark-oapi |
wecom |
wecom-aibot-sdk |
dingtalk |
dingtalk-stream |
ocr |
rapidocr-onnxruntime, pillow |
vision |
ultralytics, pillow, numpy |
langfuse |
langfuse |
Happy to submit a PR if this direction aligns. Thoughts?
Feature Request: Declarative dependency management with pyproject.toml
First off — thanks for building GenericAgent. The minimalist architecture and self-evolving skill system are really elegant. I've been using it and enjoying the experience.
The issue: Currently there's no
pyproject.tomlorrequirements.txt, so new users need to manually figure out whichpip installcommands to run. The README lists differentpip installlines scattered across sections (streamlit, pywebview, pycryptodome, lark-oapi, etc.), and it's easy to miss one or install unnecessary packages.For example, a user who just wants the Telegram bot frontend still needs to know to install
requestsandstreamlitas a baseline, which isn't immediately obvious from the Bot section alone. The self-evolvingcode_runmechanism mitigates this nicely at runtime, but having a declarative manifest upfront would give a smoother first-run experience.Proposal: Add a
pyproject.tomlwith optional dependency groups so users can install exactly what they need in one command:This keeps the project's zero-config philosophy — users still just clone and run. The manifest simply makes the implicit dependency graph explicit. The agent's self-install capability via
code_runremains untouched.Optional groups I had in mind:
qtbrowsertgqqwechatfeishuwecomdingtalkocrvisionlangfuseHappy to submit a PR if this direction aligns. Thoughts?