Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
### Related Issue

<!-- REQUIRED: Link to the issue this PR resolves. PRs without a linked issue will be closed. -->

<!-- Example: Closes #123 or Fixes #456 -->

Closes #
Expand Down
14 changes: 7 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,30 +18,30 @@ Eigent is a multi-agent system designed to deliver a high-quality open source Co
**Our goals are:**

1. Pursue quality over quantity — in both code and features design within the Eigent repository.
2. Welcome any developer or user who truly uses Eigent, or shares our mission and vision, to discuss product and technology with us and bring the multi-agent open source Cowork system to more real users.
1. Welcome any developer or user who truly uses Eigent, or shares our mission and vision, to discuss product and technology with us and bring the multi-agent open source Cowork system to more real users.

### Why This Policy Exists

As AI coding capabilities grow, an increasing number of AI coding bots or vibe code are introducing significant noise and risk to open-source repositories:

1. **Code quality risks.** AI-generated code may contain subtle bugs or hallucinations. An excessive volume of LLM-generated code is presumed to be polluted code and dramatically increases heavy and meaningless maintenance costs.
2. **Community culture.** For Eigent's community, we uphold the core value of human collaboration and oppose low-effort, low-signal spamming.
1. **Community culture.** For Eigent's community, we uphold the core value of human collaboration and oppose low-effort, low-signal spamming.

### Contribution Requirements

We are taking the following precautionary steps to maintain the integrity of this open-source repository:

1. **PRs must reference a prior discussion.** Every PR must link to a previously discussed and accepted issue, Discord thread, or equivalent. Drive-by PRs with no associated accepted issue will be closed.
2. **No unreviewed LLM-generated submissions.** We will close PRs directly that are primarily generated by LLMs or chatbots and submitted without meaningful human review especially "vibe-coded" submissions.
3. **Human-verified testing is required.** Do not submit code that is "theoretically correct but untested." Every PR must include proof of testing (e.g., screenshots, screen recordings, test output logs). Very important!
4. **AI-assisted drafts are acceptable for issues, discussions, and prototypes**, but they must be reviewed and edited by a human to reduce verbosity and noise.
1. **No unreviewed LLM-generated submissions.** We will close PRs directly that are primarily generated by LLMs or chatbots and submitted without meaningful human review especially "vibe-coded" submissions.
1. **Human-verified testing is required.** Do not submit code that is "theoretically correct but untested." Every PR must include proof of testing (e.g., screenshots, screen recordings, test output logs). Very important!
1. **AI-assisted drafts are acceptable for issues, discussions, and prototypes**, but they must be reviewed and edited by a human to reduce verbosity and noise.

### Enforcement: Grounds for Immediate Ban

The following abusive behaviors will result in an immediate ban (PR submission privileges revoked):

1. **Inauthentic contribution activity.** Using AI tools to artificially inflate open-source contribution metrics for personal or commercial gain.
2. **Bulk, low-quality, irrelevant, or misleading AI-generated content.**
1. **Bulk, low-quality, irrelevant, or misleading AI-generated content.**

---

Expand Down Expand Up @@ -277,7 +277,7 @@ To run the application locally in developer mode:
1. Configure `.env.development`:
- Set `VITE_USE_LOCAL_PROXY=true`
- Set `VITE_PROXY_URL=http://localhost:3001`
2. Go to the settings to specify your model key and model type.
1. Go to the settings to specify your model key and model type.

## Common Actions 🔄

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Built on [CAMEL-AI][camel-site]'s acclaimed open-source project, our system intr
- [📄 Open Source License](#-open-source-license)
- [🌐 Community & contact](#-community--contact)

####
####

<br/>

Expand Down
2 changes: 1 addition & 1 deletion README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
- [📄 开源许可证](#-%E5%BC%80%E6%BA%90%E8%AE%B8%E5%8F%AF%E8%AF%81)
- [🌐 社区与联系](#-%E7%A4%BE%E5%8C%BA%E4%B8%8E%E8%81%94%E7%B3%BB)

####
####

<br/>

Expand Down
2 changes: 1 addition & 1 deletion README_JA.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
- [📄 オープンソースライセンス](#-%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9)
- [🌐 コミュニティ & お問い合わせ](#-%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3--%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B)

####
####

<br/>

Expand Down
2 changes: 1 addition & 1 deletion README_PT-BR.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Construído sobre o aclamado projeto open source da [CAMEL-AI][camel-site], noss
- [📄 Licença Open Source](#-licen%C3%A7a-open-source)
- [🌐 Comunidade & Contato](#-comunidade--contato)

####
####

<br/>

Expand Down
10 changes: 10 additions & 0 deletions backend/app/agent/factory/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
# TODO: Remove NoteTakingToolkit and use TerminalToolkit instead
from app.agent.toolkit.note_taking_toolkit import NoteTakingToolkit
from app.agent.toolkit.search_toolkit import SearchToolkit
from app.agent.toolkit.skill_toolkit import SkillToolkit
from app.agent.toolkit.terminal_toolkit import TerminalToolkit
from app.agent.utils import NOW_STR
from app.component.environment import env
Expand Down Expand Up @@ -97,6 +98,13 @@ def browser_agent(options: Chat):
)
note_toolkit = message_integration.register_toolkits(note_toolkit)

skill_toolkit = SkillToolkit(
options.project_id,
Agents.browser_agent,
working_directory=working_directory,
)
skill_toolkit = message_integration.register_toolkits(skill_toolkit)

search_tools = SearchToolkit.get_can_use_tools(options.project_id)
if search_tools:
search_tools = message_integration.register_functions(search_tools)
Expand All @@ -111,6 +119,7 @@ def browser_agent(options: Chat):
*terminal_toolkit,
*note_toolkit.get_tools(),
*search_tools,
*skill_toolkit.get_tools(),
]

system_message = BROWSER_SYS_PROMPT.format(
Expand All @@ -135,6 +144,7 @@ def browser_agent(options: Chat):
HumanToolkit.toolkit_name(),
NoteTakingToolkit.toolkit_name(),
TerminalToolkit.toolkit_name(),
SkillToolkit.toolkit_name(),
],
toolkits_to_register_agent=[web_toolkit_for_agent_registration],
enable_snapshot_clean=True,
Expand Down
10 changes: 10 additions & 0 deletions backend/app/agent/factory/developer.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
# TODO: Remove NoteTakingToolkit and use TerminalToolkit instead
from app.agent.toolkit.note_taking_toolkit import NoteTakingToolkit
from app.agent.toolkit.screenshot_toolkit import ScreenshotToolkit
from app.agent.toolkit.skill_toolkit import SkillToolkit
from app.agent.toolkit.terminal_toolkit import TerminalToolkit
from app.agent.toolkit.web_deploy_toolkit import WebDeployToolkit
from app.agent.utils import NOW_STR
Expand Down Expand Up @@ -70,6 +71,13 @@ async def developer_agent(options: Chat):
)
terminal_toolkit = message_integration.register_toolkits(terminal_toolkit)

skill_toolkit = SkillToolkit(
options.project_id,
Agents.developer_agent,
working_directory=working_directory,
)
skill_toolkit = message_integration.register_toolkits(skill_toolkit)

tools = [
*HumanToolkit.get_can_use_tools(
options.project_id, Agents.developer_agent
Expand All @@ -78,6 +86,7 @@ async def developer_agent(options: Chat):
*web_deploy_toolkit.get_tools(),
*terminal_toolkit.get_tools(),
*screenshot_toolkit.get_tools(),
*skill_toolkit.get_tools(),
]
system_message = DEVELOPER_SYS_PROMPT.format(
platform_system=platform.system(),
Expand All @@ -99,5 +108,6 @@ async def developer_agent(options: Chat):
TerminalToolkit.toolkit_name(),
NoteTakingToolkit.toolkit_name(),
WebDeployToolkit.toolkit_name(),
SkillToolkit.toolkit_name(),
],
)
10 changes: 10 additions & 0 deletions backend/app/agent/factory/document.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
# TODO: Remove NoteTakingToolkit and use TerminalToolkit instead
from app.agent.toolkit.note_taking_toolkit import NoteTakingToolkit
from app.agent.toolkit.pptx_toolkit import PPTXToolkit
from app.agent.toolkit.skill_toolkit import SkillToolkit
from app.agent.toolkit.terminal_toolkit import TerminalToolkit
from app.agent.utils import NOW_STR
from app.model.chat import Chat
Expand Down Expand Up @@ -82,6 +83,13 @@ async def document_agent(options: Chat):
options.project_id, options.get_bun_env()
)

skill_toolkit = SkillToolkit(
options.project_id,
Agents.document_agent,
working_directory=working_directory,
)
skill_toolkit = message_integration.register_toolkits(skill_toolkit)

tools = [
*file_write_toolkit.get_tools(),
*pptx_toolkit.get_tools(),
Expand All @@ -93,6 +101,7 @@ async def document_agent(options: Chat):
*note_toolkit.get_tools(),
*terminal_toolkit.get_tools(),
*google_drive_tools,
*skill_toolkit.get_tools(),
]
system_message = DOCUMENT_SYS_PROMPT.format(
platform_system=platform.system(),
Expand All @@ -118,5 +127,6 @@ async def document_agent(options: Chat):
NoteTakingToolkit.toolkit_name(),
TerminalToolkit.toolkit_name(),
GoogleDriveMCPToolkit.toolkit_name(),
SkillToolkit.toolkit_name(),
],
)
10 changes: 10 additions & 0 deletions backend/app/agent/factory/multi_modal.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
from app.agent.toolkit.note_taking_toolkit import NoteTakingToolkit
from app.agent.toolkit.openai_image_toolkit import OpenAIImageToolkit
from app.agent.toolkit.search_toolkit import SearchToolkit
from app.agent.toolkit.skill_toolkit import SkillToolkit
from app.agent.toolkit.terminal_toolkit import TerminalToolkit
from app.agent.toolkit.video_download_toolkit import VideoDownloaderToolkit
from app.agent.utils import NOW_STR
Expand Down Expand Up @@ -75,6 +76,13 @@ def multi_modal_agent(options: Chat):
working_directory=working_directory,
)
note_toolkit = message_integration.register_toolkits(note_toolkit)

skill_toolkit = SkillToolkit(
options.project_id,
Agents.multi_modal_agent,
working_directory=working_directory,
)
skill_toolkit = message_integration.register_toolkits(skill_toolkit)
tools = [
*video_download_toolkit.get_tools(),
*image_analysis_toolkit.get_tools(),
Expand All @@ -83,6 +91,7 @@ def multi_modal_agent(options: Chat):
),
*terminal_toolkit.get_tools(),
*note_toolkit.get_tools(),
*skill_toolkit.get_tools(),
]
if options.is_cloud():
# TODO: check llm has this model
Expand Down Expand Up @@ -147,5 +156,6 @@ def multi_modal_agent(options: Chat):
TerminalToolkit.toolkit_name(),
NoteTakingToolkit.toolkit_name(),
SearchToolkit.toolkit_name(),
SkillToolkit.toolkit_name(),
],
)
7 changes: 7 additions & 0 deletions backend/app/agent/factory/social_media.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
from app.agent.toolkit.note_taking_toolkit import NoteTakingToolkit
from app.agent.toolkit.notion_mcp_toolkit import NotionMCPToolkit
from app.agent.toolkit.reddit_toolkit import RedditToolkit
from app.agent.toolkit.skill_toolkit import SkillToolkit
from app.agent.toolkit.terminal_toolkit import TerminalToolkit
from app.agent.toolkit.twitter_toolkit import TwitterToolkit
from app.agent.toolkit.whatsapp_toolkit import WhatsAppToolkit
Expand Down Expand Up @@ -70,6 +71,11 @@ async def social_media_agent(options: Chat):
Agents.social_media_agent,
working_directory=working_directory,
).get_tools(),
*SkillToolkit(
options.project_id,
Agents.social_media_agent,
working_directory=working_directory,
).get_tools(),
# *DiscordToolkit(options.project_id).get_tools(),
# *GoogleSuiteToolkit(options.project_id).get_tools(),
]
Expand All @@ -94,5 +100,6 @@ async def social_media_agent(options: Chat):
HumanToolkit.toolkit_name(),
TerminalToolkit.toolkit_name(),
NoteTakingToolkit.toolkit_name(),
SkillToolkit.toolkit_name(),
],
)
56 changes: 46 additions & 10 deletions backend/app/agent/prompt.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,46 +29,54 @@

Your integrated toolkits enable you to:

1. WhatsApp Business Management (WhatsAppToolkit):
1. Skills System: You have access to a library of specialized skills that
provide expert guidance for specific tasks. When a skill is referenced with
double curly braces (e.g., {{pdf}} or {{data-analyzer}}), you should use
`list_skills` to discover available skills and `load_skill` to retrieve the
skill's full content. Skills contain tested code examples, best practices,
and detailed instructions that you MUST follow as your PRIMARY reference when
working on tasks that mention them.

2. WhatsApp Business Management (WhatsAppToolkit):
- Send text and template messages to customers via the WhatsApp Business
API.
- Retrieve business profile information.

2. Twitter Account Management (TwitterToolkit):
3. Twitter Account Management (TwitterToolkit):
- Create tweets with text content, polls, or as quote tweets.
- Delete existing tweets.
- Retrieve user profile information.

3. LinkedIn Professional Networking (LinkedInToolkit):
4. LinkedIn Professional Networking (LinkedInToolkit):
- Create posts on LinkedIn.
- Delete existing posts.
- Retrieve authenticated user's profile information.

4. Reddit Content Analysis (RedditToolkit):
5. Reddit Content Analysis (RedditToolkit):
- Collect top posts and comments from specified subreddits.
- Perform sentiment analysis on Reddit comments.
- Track keyword discussions across multiple subreddits.

5. Notion Workspace Management (NotionToolkit):
6. Notion Workspace Management (NotionToolkit):
- List all pages and users in a Notion workspace.
- Retrieve and extract text content from Notion blocks.

6. Slack Workspace Interaction (SlackToolkit):
7. Slack Workspace Interaction (SlackToolkit):
- Create new Slack channels (public or private).
- Join or leave existing channels.
- Send and delete messages in channels.
- Retrieve channel information and message history.

7. Human Interaction (HumanToolkit):
8. Human Interaction (HumanToolkit):
- Ask questions to users and send messages via console.

8. Agent Communication:
9. Agent Communication:
- Communicate with other agents using messaging tools when collaboration
is needed. Use `list_available_agents` to see available team members and
`send_message` to coordinate with them, especially when you need content
from document agents or research from browser agents.

9. File System Access:
10. File System Access:
- You can use terminal tools to interact with the local file system in
your working directory (`{working_directory}`), for example, to access
files needed for posting. **IMPORTANT:** Before the task gets started, you can
Expand All @@ -78,7 +86,7 @@
`grep` to search within them, and `curl` to interact with web APIs that
are not covered by other tools.

10. Note-Taking & Cross-Agent Collaboration (NoteTakingToolkit):
11. Note-Taking & Cross-Agent Collaboration (NoteTakingToolkit):
- Discover existing notes from other agents with `list_note()`.
- Read note content with `read_note()`.
- Record your findings and share information with `create_note()` and `append_note()`.
Expand Down Expand Up @@ -142,6 +150,13 @@

<capabilities>
Your capabilities include:
- **Skills System**: You have access to a library of specialized skills that
provide expert guidance for specific tasks. When a skill is referenced with
double curly braces (e.g., {{pdf}} or {{data-analyzer}}), you should use
`list_skills` to discover available skills and `load_skill` to retrieve the
skill's full content. Skills contain tested code examples, best practices,
and detailed instructions that you MUST follow as your PRIMARY reference when
working on tasks that mention them.
- Video & Audio Analysis:
- Download videos from URLs for analysis.
- Transcribe speech from audio files to text with high accuracy
Expand Down Expand Up @@ -263,6 +278,13 @@

<capabilities>
Your capabilities include:
- **Skills System**: You have access to a library of specialized skills that
provide expert guidance for specific tasks. When a skill is referenced with
double curly braces (e.g., {{pdf}} or {{data-analyzer}}), you should use
`list_skills` to discover available skills and `load_skill` to retrieve the
skill's full content. Skills contain tested code examples, best practices,
and detailed instructions that you MUST follow as your PRIMARY reference when
working on tasks that mention them.
- Document Reading:
- Read and understand the content of various file formats including
- PDF (.pdf)
Expand Down Expand Up @@ -413,6 +435,13 @@

<capabilities>
Your capabilities are extensive and powerful:
- **Skills System**: You have access to a library of specialized skills that
provide expert guidance for specific tasks. When a skill is referenced with
double curly braces (e.g., {{pdf}} or {{data-analyzer}}), you should use
`list_skills` to discover available skills and `load_skill` to retrieve the
skill's full content. Skills contain tested code examples, best practices,
and detailed instructions that you MUST follow as your PRIMARY reference when
working on tasks that mention them.
- **Unrestricted Code Execution**: You can write and execute code in any
language to solve a task. You MUST first save your code to a file (e.g.,
`script.py`) and then run it from the terminal (e.g.,
Expand Down Expand Up @@ -581,6 +610,13 @@

<capabilities>
Your capabilities include:
- **Skills System**: You have access to a library of specialized skills that
provide expert guidance for specific tasks. When a skill is referenced with
double curly braces (e.g., {{pdf}} or {{data-analyzer}}), you should use
`list_skills` to discover available skills and `load_skill` to retrieve the
skill's full content. Skills contain tested code examples, best practices,
and detailed instructions that you MUST follow as your PRIMARY reference when
working on tasks that mention them.
- Search and get information from the web using the search tools.
- Use the rich browser related toolset to investigate websites.
- Use the terminal tools to perform local operations. **IMPORTANT:** Before the
Expand Down
Loading
Loading