vibesurf 0.1.28__tar.gz → 0.1.29__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of vibesurf might be problematic. Click here for more details.
- {vibesurf-0.1.28 → vibesurf-0.1.29}/PKG-INFO +55 -23
- {vibesurf-0.1.28 → vibesurf-0.1.29}/README.md +54 -22
- {vibesurf-0.1.28 → vibesurf-0.1.29}/README_zh.md +54 -22
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/_version.py +3 -3
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/shared_state.py +2 -2
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/config.js +8 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/ui-manager.js +146 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/sidepanel.html +2 -16
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibesurf.egg-info/PKG-INFO +55 -23
- {vibesurf-0.1.28 → vibesurf-0.1.29}/.env.example +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/.github/workflows/publish.yml +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/.gitignore +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/.python-version +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/LICENSE +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/MANIFEST.in +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/docs/EXECUTABLE_BUILD.md +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/docs/PYPI_SETUP.md +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/pyproject.toml +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/scripts/build-local.bat +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/scripts/build-local.sh +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/setup.cfg +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/tests/test_agents.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/tests/test_backend_api.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/tests/test_browser.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/tests/test_tools.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/tests/test_voice_api.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/agents/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/agents/browser_use_agent.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/agents/prompts/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/agents/prompts/report_writer_prompt.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/agents/prompts/vibe_surf_prompt.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/agents/report_writer_agent.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/agents/vibe_surf_agent.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/agents/views.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/api/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/api/activity.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/api/agent.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/api/browser.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/api/config.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/api/files.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/api/models.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/api/task.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/api/voices.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/manager.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/migrations/v001_initial_schema.sql +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/migrations/v002_add_agent_mode.sql +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/migrations/v003_fix_task_status_case.sql +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/migrations/v004_add_voice_profiles.sql +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/models.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/queries.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/schemas.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/llm_config.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/main.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/utils/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/utils/encryption.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/utils/llm_factory.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/voice_model_config.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/browser/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/browser/agen_browser_profile.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/browser/agent_browser_session.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/browser/browser_manager.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/browser/utils.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/browser/watchdogs/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/browser/watchdogs/action_watchdog.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/browser/watchdogs/dom_watchdog.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/background.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/content.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/dev-reload.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/icons/logo.icns +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/icons/logo.png +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/manifest.json +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/permission-iframe.html +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/permission-request.html +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/popup.html +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/api-client.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/file-manager.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/history-manager.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/main.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/markdown-it.min.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/modal-manager.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/permission-iframe-request.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/permission-request.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/session-manager.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/settings-manager.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/user-settings-storage.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/voice-recorder.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/activity.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/animations.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/base.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/components.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/history-modal.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/input.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/layout.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/responsive.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/settings-environment.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/settings-forms.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/settings-modal.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/settings-profiles.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/settings-responsive.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/settings-utilities.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/variables.css +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/cli.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/common.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/llm/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/llm/openai_compatible.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/logger.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/browser_use_tools.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/file_system.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/finance_tools.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/mcp_client.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/report_writer_tools.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/vibesurf_registry.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/vibesurf_tools.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/views.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/voice_asr.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/douyin/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/douyin/client.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/douyin/douyin.js +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/douyin/helpers.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/weibo/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/weibo/client.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/weibo/helpers.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/xhs/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/xhs/client.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/xhs/helpers.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/youtube/__init__.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/youtube/client.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/tools/website_api/youtube/helpers.py +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibesurf.egg-info/SOURCES.txt +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibesurf.egg-info/dependency_links.txt +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibesurf.egg-info/entry_points.txt +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibesurf.egg-info/requires.txt +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibesurf.egg-info/top_level.txt +0 -0
- {vibesurf-0.1.28 → vibesurf-0.1.29}/vibesurf.spec +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vibesurf
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.29
|
|
4
4
|
Summary: VibeSurf: A powerful browser assistant for vibe surfing
|
|
5
5
|
Author: Shao Warm
|
|
6
6
|
License: Apache-2.0
|
|
@@ -71,56 +71,88 @@ If you're as excited about open-source AI browsing as I am, give it a star! ⭐
|
|
|
71
71
|
|
|
72
72
|
## 🛠️ Installation
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
Install uv from [https://docs.astral.sh/uv/getting-started/installation/](https://docs.astral.sh/uv/getting-started/installation/):
|
|
74
|
+
Get VibeSurf up and running in just three simple steps. No complex configuration required.
|
|
76
75
|
|
|
76
|
+
### 1. Install uv
|
|
77
|
+
Install uv package manager from the official website
|
|
78
|
+
|
|
79
|
+
**MacOS/Linux**
|
|
77
80
|
```bash
|
|
78
|
-
# On macOS and Linux
|
|
79
81
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
82
|
+
```
|
|
80
83
|
|
|
81
|
-
|
|
84
|
+
**Windows**
|
|
85
|
+
```bash
|
|
82
86
|
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
83
87
|
```
|
|
84
88
|
|
|
85
|
-
###
|
|
89
|
+
### 2. Setup Environment
|
|
90
|
+
Install VibeSurf
|
|
91
|
+
|
|
86
92
|
```bash
|
|
87
|
-
uv venv --python 3.12
|
|
88
93
|
uv pip install vibesurf -U
|
|
89
94
|
```
|
|
90
95
|
|
|
91
|
-
###
|
|
96
|
+
### 3. Launch VibeSurf
|
|
97
|
+
Start the VibeSurf browser assistant
|
|
98
|
+
|
|
92
99
|
```bash
|
|
93
100
|
uv run vibesurf
|
|
94
101
|
```
|
|
95
102
|
|
|
96
103
|
## 👩💻 For Contributors
|
|
97
104
|
|
|
98
|
-
Want to contribute to VibeSurf?
|
|
105
|
+
Want to contribute to VibeSurf? Follow these steps to set up your development environment:
|
|
99
106
|
|
|
100
|
-
###
|
|
101
|
-
Run the backend server directly using uvicorn:
|
|
107
|
+
### 1. Clone Repository
|
|
102
108
|
```bash
|
|
103
|
-
|
|
109
|
+
git clone https://github.com/vibesurf-ai/VibeSurf.git
|
|
110
|
+
cd VibeSurf
|
|
104
111
|
```
|
|
105
112
|
|
|
106
|
-
###
|
|
107
|
-
|
|
113
|
+
### 2. Setup Environment
|
|
114
|
+
**MacOS/Linux**
|
|
108
115
|
```bash
|
|
116
|
+
uv venv --python 3.12
|
|
117
|
+
source .venv/bin/activate
|
|
109
118
|
uv pip install -e .
|
|
110
|
-
uv run vibesurf
|
|
111
119
|
```
|
|
112
120
|
|
|
113
|
-
|
|
114
|
-
|
|
121
|
+
**Windows**
|
|
122
|
+
```bash
|
|
123
|
+
uv venv --python 3.12
|
|
124
|
+
.venv\Scripts\activate
|
|
125
|
+
uv pip install -e .
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 3. Start Debugging
|
|
129
|
+
**Option 1: Direct Server**
|
|
130
|
+
```bash
|
|
131
|
+
uvicorn vibe_surf.backend.main:app --host 127.0.0.1 --port 9335
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Option 2: CLI Entry**
|
|
135
|
+
```bash
|
|
136
|
+
uv run vibesurf
|
|
137
|
+
```
|
|
138
|
+
## 🗺️ Roadmap
|
|
115
139
|
|
|
116
140
|
We're building VibeSurf to be your ultimate AI browser companion. Here's what's coming next:
|
|
117
141
|
|
|
118
|
-
- [x] **Smart Skills System
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
- [ ] **
|
|
122
|
-
|
|
123
|
-
|
|
142
|
+
- [x] **Smart Skills System** - *Completed*
|
|
143
|
+
Add `/search` for quick information search and `/crawl` for automatic website data extraction. Integrated native APIs for Xiaohongshu, Douyin, Weibo, and YouTube.
|
|
144
|
+
|
|
145
|
+
- [ ] **Powerful Coding Agent** - *In Progress*
|
|
146
|
+
Build a comprehensive coding assistant for data processing and analysis directly in your browser
|
|
147
|
+
|
|
148
|
+
- [ ] **Agentic Browser Workflow** - *Planned*
|
|
149
|
+
Create custom drag-and-drop workflows for auto-login, data collection, and complex browser automation tasks
|
|
150
|
+
|
|
151
|
+
- [ ] **Third-Party Integrations** - *Planned*
|
|
152
|
+
Connect with n8n workflows and other tools to combine browsing with automation
|
|
153
|
+
|
|
154
|
+
- [ ] **Intelligent Memory & Personalization** - *Planned*
|
|
155
|
+
Transform VibeSurf into a truly human-like companion with persistent memory that learns your preferences, habits, and browsing patterns over time
|
|
124
156
|
|
|
125
157
|
|
|
126
158
|
## 🎬 Demo
|
|
@@ -22,56 +22,88 @@ If you're as excited about open-source AI browsing as I am, give it a star! ⭐
|
|
|
22
22
|
|
|
23
23
|
## 🛠️ Installation
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
Install uv from [https://docs.astral.sh/uv/getting-started/installation/](https://docs.astral.sh/uv/getting-started/installation/):
|
|
25
|
+
Get VibeSurf up and running in just three simple steps. No complex configuration required.
|
|
27
26
|
|
|
27
|
+
### 1. Install uv
|
|
28
|
+
Install uv package manager from the official website
|
|
29
|
+
|
|
30
|
+
**MacOS/Linux**
|
|
28
31
|
```bash
|
|
29
|
-
# On macOS and Linux
|
|
30
32
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
33
|
+
```
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
**Windows**
|
|
36
|
+
```bash
|
|
33
37
|
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
34
38
|
```
|
|
35
39
|
|
|
36
|
-
###
|
|
40
|
+
### 2. Setup Environment
|
|
41
|
+
Install VibeSurf
|
|
42
|
+
|
|
37
43
|
```bash
|
|
38
|
-
uv venv --python 3.12
|
|
39
44
|
uv pip install vibesurf -U
|
|
40
45
|
```
|
|
41
46
|
|
|
42
|
-
###
|
|
47
|
+
### 3. Launch VibeSurf
|
|
48
|
+
Start the VibeSurf browser assistant
|
|
49
|
+
|
|
43
50
|
```bash
|
|
44
51
|
uv run vibesurf
|
|
45
52
|
```
|
|
46
53
|
|
|
47
54
|
## 👩💻 For Contributors
|
|
48
55
|
|
|
49
|
-
Want to contribute to VibeSurf?
|
|
56
|
+
Want to contribute to VibeSurf? Follow these steps to set up your development environment:
|
|
50
57
|
|
|
51
|
-
###
|
|
52
|
-
Run the backend server directly using uvicorn:
|
|
58
|
+
### 1. Clone Repository
|
|
53
59
|
```bash
|
|
54
|
-
|
|
60
|
+
git clone https://github.com/vibesurf-ai/VibeSurf.git
|
|
61
|
+
cd VibeSurf
|
|
55
62
|
```
|
|
56
63
|
|
|
57
|
-
###
|
|
58
|
-
|
|
64
|
+
### 2. Setup Environment
|
|
65
|
+
**MacOS/Linux**
|
|
59
66
|
```bash
|
|
67
|
+
uv venv --python 3.12
|
|
68
|
+
source .venv/bin/activate
|
|
60
69
|
uv pip install -e .
|
|
61
|
-
uv run vibesurf
|
|
62
70
|
```
|
|
63
71
|
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
**Windows**
|
|
73
|
+
```bash
|
|
74
|
+
uv venv --python 3.12
|
|
75
|
+
.venv\Scripts\activate
|
|
76
|
+
uv pip install -e .
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 3. Start Debugging
|
|
80
|
+
**Option 1: Direct Server**
|
|
81
|
+
```bash
|
|
82
|
+
uvicorn vibe_surf.backend.main:app --host 127.0.0.1 --port 9335
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Option 2: CLI Entry**
|
|
86
|
+
```bash
|
|
87
|
+
uv run vibesurf
|
|
88
|
+
```
|
|
89
|
+
## 🗺️ Roadmap
|
|
66
90
|
|
|
67
91
|
We're building VibeSurf to be your ultimate AI browser companion. Here's what's coming next:
|
|
68
92
|
|
|
69
|
-
- [x] **Smart Skills System
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
- [ ] **
|
|
73
|
-
|
|
74
|
-
|
|
93
|
+
- [x] **Smart Skills System** - *Completed*
|
|
94
|
+
Add `/search` for quick information search and `/crawl` for automatic website data extraction. Integrated native APIs for Xiaohongshu, Douyin, Weibo, and YouTube.
|
|
95
|
+
|
|
96
|
+
- [ ] **Powerful Coding Agent** - *In Progress*
|
|
97
|
+
Build a comprehensive coding assistant for data processing and analysis directly in your browser
|
|
98
|
+
|
|
99
|
+
- [ ] **Agentic Browser Workflow** - *Planned*
|
|
100
|
+
Create custom drag-and-drop workflows for auto-login, data collection, and complex browser automation tasks
|
|
101
|
+
|
|
102
|
+
- [ ] **Third-Party Integrations** - *Planned*
|
|
103
|
+
Connect with n8n workflows and other tools to combine browsing with automation
|
|
104
|
+
|
|
105
|
+
- [ ] **Intelligent Memory & Personalization** - *Planned*
|
|
106
|
+
Transform VibeSurf into a truly human-like companion with persistent memory that learns your preferences, habits, and browsing patterns over time
|
|
75
107
|
|
|
76
108
|
|
|
77
109
|
## 🎬 Demo
|
|
@@ -23,57 +23,89 @@ VibeSurf 是一个开源的 AI 代理浏览器,它革新了浏览器自动化
|
|
|
23
23
|
|
|
24
24
|
## 🛠️ 安装
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
从 [https://docs.astral.sh/uv/getting-started/installation/](https://docs.astral.sh/uv/getting-started/installation/) 安装 uv:
|
|
26
|
+
仅需三个简单步骤即可启动并运行 VibeSurf。无需复杂配置。
|
|
28
27
|
|
|
28
|
+
### 1. 安装 uv
|
|
29
|
+
从官方网站安装 uv 包管理器
|
|
30
|
+
|
|
31
|
+
**MacOS/Linux**
|
|
29
32
|
```bash
|
|
30
|
-
# 在 macOS 和 Linux 上
|
|
31
33
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
34
|
+
```
|
|
32
35
|
|
|
33
|
-
|
|
36
|
+
**Windows**
|
|
37
|
+
```bash
|
|
34
38
|
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
35
39
|
```
|
|
36
40
|
|
|
37
|
-
###
|
|
41
|
+
### 2. 设置环境
|
|
42
|
+
安装 VibeSurf
|
|
43
|
+
|
|
38
44
|
```bash
|
|
39
|
-
uv venv --python 3.12
|
|
40
45
|
uv pip install vibesurf -U
|
|
41
46
|
```
|
|
42
47
|
|
|
43
|
-
###
|
|
48
|
+
### 3. 启动 VibeSurf
|
|
49
|
+
启动 VibeSurf 浏览器助手
|
|
50
|
+
|
|
44
51
|
```bash
|
|
45
52
|
uv run vibesurf
|
|
46
53
|
```
|
|
47
54
|
|
|
48
|
-
## 👩💻
|
|
55
|
+
## 👩💻 贡献者指南
|
|
49
56
|
|
|
50
|
-
想为 VibeSurf
|
|
57
|
+
想为 VibeSurf 做贡献?请按照以下步骤设置您的开发环境:
|
|
51
58
|
|
|
52
|
-
###
|
|
53
|
-
使用 uvicorn 直接运行后端服务器:
|
|
59
|
+
### 1. 克隆仓库
|
|
54
60
|
```bash
|
|
55
|
-
|
|
61
|
+
git clone https://github.com/vibesurf-ai/VibeSurf.git
|
|
62
|
+
cd VibeSurf
|
|
56
63
|
```
|
|
57
64
|
|
|
58
|
-
###
|
|
59
|
-
|
|
65
|
+
### 2. 设置环境
|
|
66
|
+
**MacOS/Linux**
|
|
60
67
|
```bash
|
|
68
|
+
uv venv --python 3.12
|
|
69
|
+
source .venv/bin/activate
|
|
61
70
|
uv pip install -e .
|
|
62
|
-
uv run vibesurf
|
|
63
71
|
```
|
|
64
72
|
|
|
65
|
-
|
|
73
|
+
**Windows**
|
|
74
|
+
```bash
|
|
75
|
+
uv venv --python 3.12
|
|
76
|
+
.venv\Scripts\activate
|
|
77
|
+
uv pip install -e .
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 3. 开始调试
|
|
81
|
+
**选项 1:直接服务器**
|
|
82
|
+
```bash
|
|
83
|
+
uvicorn vibe_surf.backend.main:app --host 127.0.0.1 --port 9335
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**选项 2:CLI 入口**
|
|
87
|
+
```bash
|
|
88
|
+
uv run vibesurf
|
|
89
|
+
```
|
|
66
90
|
|
|
67
91
|
## 🗺️ 路线图
|
|
68
92
|
|
|
69
93
|
我们正在构建 VibeSurf,使其成为您终极的 AI 浏览器伴侣。以下是接下来的计划:
|
|
70
94
|
|
|
71
|
-
- [x]
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
- [ ]
|
|
75
|
-
|
|
76
|
-
|
|
95
|
+
- [x] **智能技能系统** - *已完成*
|
|
96
|
+
添加 `/search` 用于快速信息搜索,`/crawl` 用于自动网站数据提取。集成了小红书、抖音、微博和 YouTube 的原生 API。
|
|
97
|
+
|
|
98
|
+
- [ ] **强大的编码代理** - *进行中*
|
|
99
|
+
构建一个全面的编码助手,用于在浏览器中直接进行数据处理和分析
|
|
100
|
+
|
|
101
|
+
- [ ] **智能浏览器工作流** - *计划中*
|
|
102
|
+
创建自定义拖拽式工作流,用于自动登录、数据收集和复杂的浏览器自动化任务
|
|
103
|
+
|
|
104
|
+
- [ ] **第三方集成** - *计划中*
|
|
105
|
+
与 n8n 工作流和其他工具连接,将浏览与自动化结合
|
|
106
|
+
|
|
107
|
+
- [ ] **智能记忆与个性化** - *计划中*
|
|
108
|
+
将 VibeSurf 转变为真正的人性化伴侣,具备持久记忆功能,能够学习您的偏好、习惯和浏览模式
|
|
77
109
|
|
|
78
110
|
## 🎬 演示
|
|
79
111
|
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.1.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
31
|
+
__version__ = version = '0.1.29'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 1, 29)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g468e636fb'
|
|
@@ -353,13 +353,13 @@ async def initialize_vibesurf_components():
|
|
|
353
353
|
browser_execution_path = os.getenv("BROWSER_EXECUTION_PATH", "")
|
|
354
354
|
assert os.path.exists(browser_execution_path), "Please set the BROWSER_EXECUTION_PATH environment variable"
|
|
355
355
|
browser_user_data = os.getenv("BROWSER_USER_DATA", "")
|
|
356
|
-
if not browser_user_data:
|
|
356
|
+
if not browser_user_data or not os.path.exists(browser_user_data):
|
|
357
357
|
browser_user_data = os.path.join(workspace_dir, "browser_user_data",
|
|
358
358
|
f"{os.path.basename(browser_execution_path)}-profile")
|
|
359
359
|
|
|
360
360
|
# Get VibeSurf extension path
|
|
361
361
|
vibesurf_extension = os.getenv("VIBESURF_EXTENSION", "")
|
|
362
|
-
if not vibesurf_extension.strip():
|
|
362
|
+
if not vibesurf_extension.strip() or not os.path.exists(vibesurf_extension):
|
|
363
363
|
current_file = Path(__file__)
|
|
364
364
|
project_root = current_file.parent.parent.absolute()
|
|
365
365
|
vibesurf_extension = str(project_root / "chrome_extension")
|
|
@@ -27,6 +27,14 @@ const VIBESURF_CONFIG = {
|
|
|
27
27
|
autoScroll: true,
|
|
28
28
|
compactMode: false
|
|
29
29
|
},
|
|
30
|
+
|
|
31
|
+
// Social media links
|
|
32
|
+
SOCIAL_LINKS: {
|
|
33
|
+
github: "https://github.com/vibesurf-ai/VibeSurf",
|
|
34
|
+
discord: "https://discord.gg/EZ2YnUXP",
|
|
35
|
+
x: "https://x.com/warmshao",
|
|
36
|
+
website: "https://vibe-surf.com/"
|
|
37
|
+
},
|
|
30
38
|
|
|
31
39
|
// Debug mode
|
|
32
40
|
DEBUG: false
|
|
@@ -31,6 +31,7 @@ class VibeSurfUIManager {
|
|
|
31
31
|
this.initializeManagers();
|
|
32
32
|
this.bindEvents();
|
|
33
33
|
this.setupSessionListeners();
|
|
34
|
+
this.initializeSocialLinks();
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
bindElements() {
|
|
@@ -3468,6 +3469,151 @@ class VibeSurfUIManager {
|
|
|
3468
3469
|
return skills.length > 0 ? skills : null;
|
|
3469
3470
|
}
|
|
3470
3471
|
|
|
3472
|
+
// Initialize social links from config
|
|
3473
|
+
initializeSocialLinks() {
|
|
3474
|
+
const socialLinksContainer = document.getElementById('social-links-container');
|
|
3475
|
+
if (!socialLinksContainer) {
|
|
3476
|
+
console.warn('[UIManager] Social links container not found');
|
|
3477
|
+
return;
|
|
3478
|
+
}
|
|
3479
|
+
|
|
3480
|
+
// Get social links from config
|
|
3481
|
+
const socialLinks = window.VIBESURF_CONFIG?.SOCIAL_LINKS;
|
|
3482
|
+
if (!socialLinks) {
|
|
3483
|
+
console.warn('[UIManager] Social links not found in config');
|
|
3484
|
+
return;
|
|
3485
|
+
}
|
|
3486
|
+
|
|
3487
|
+
// Clear existing content
|
|
3488
|
+
socialLinksContainer.innerHTML = '';
|
|
3489
|
+
|
|
3490
|
+
// Handle website link separately by making VibeSurf logo/text clickable
|
|
3491
|
+
const websiteUrl = socialLinks.website;
|
|
3492
|
+
if (websiteUrl) {
|
|
3493
|
+
this.initializeVibeSurfWebsiteLink(websiteUrl);
|
|
3494
|
+
}
|
|
3495
|
+
|
|
3496
|
+
// Create social link elements (excluding website)
|
|
3497
|
+
Object.entries(socialLinks).forEach(([platform, url]) => {
|
|
3498
|
+
if (platform !== 'website') {
|
|
3499
|
+
const link = this.createSocialLink(platform, url);
|
|
3500
|
+
if (link) {
|
|
3501
|
+
socialLinksContainer.appendChild(link);
|
|
3502
|
+
}
|
|
3503
|
+
}
|
|
3504
|
+
});
|
|
3505
|
+
}
|
|
3506
|
+
|
|
3507
|
+
// Make VibeSurf text clickable to link to website
|
|
3508
|
+
initializeVibeSurfWebsiteLink(websiteUrl) {
|
|
3509
|
+
// Only find elements that contain "VibeSurf" text specifically
|
|
3510
|
+
const allElements = document.querySelectorAll('*');
|
|
3511
|
+
const vibeSurfTextElements = [];
|
|
3512
|
+
|
|
3513
|
+
allElements.forEach(element => {
|
|
3514
|
+
// Only target elements that contain "VibeSurf" text and are likely text elements
|
|
3515
|
+
if (element.textContent &&
|
|
3516
|
+
element.textContent.trim() === 'VibeSurf' &&
|
|
3517
|
+
element.children.length === 0) { // Only leaf text nodes, not containers
|
|
3518
|
+
vibeSurfTextElements.push(element);
|
|
3519
|
+
}
|
|
3520
|
+
});
|
|
3521
|
+
|
|
3522
|
+
// Make only VibeSurf text elements clickable
|
|
3523
|
+
vibeSurfTextElements.forEach(element => {
|
|
3524
|
+
if (element && !element.querySelector('a')) { // Don't double-wrap already linked elements
|
|
3525
|
+
element.style.cursor = 'pointer';
|
|
3526
|
+
element.style.transition = 'opacity 0.2s ease';
|
|
3527
|
+
element.setAttribute('title', 'Login to early access alpha features');
|
|
3528
|
+
|
|
3529
|
+
// Add hover effect
|
|
3530
|
+
element.addEventListener('mouseenter', () => {
|
|
3531
|
+
element.style.opacity = '0.8';
|
|
3532
|
+
});
|
|
3533
|
+
|
|
3534
|
+
element.addEventListener('mouseleave', () => {
|
|
3535
|
+
element.style.opacity = '1';
|
|
3536
|
+
});
|
|
3537
|
+
|
|
3538
|
+
// Add click handler
|
|
3539
|
+
element.addEventListener('click', (e) => {
|
|
3540
|
+
e.preventDefault();
|
|
3541
|
+
e.stopPropagation();
|
|
3542
|
+
this.openWebsiteLink(websiteUrl);
|
|
3543
|
+
});
|
|
3544
|
+
}
|
|
3545
|
+
});
|
|
3546
|
+
}
|
|
3547
|
+
|
|
3548
|
+
// Open website link in new tab
|
|
3549
|
+
async openWebsiteLink(url) {
|
|
3550
|
+
try {
|
|
3551
|
+
console.log('[UIManager] Opening VibeSurf website:', url);
|
|
3552
|
+
|
|
3553
|
+
const result = await chrome.runtime.sendMessage({
|
|
3554
|
+
type: 'OPEN_FILE_URL',
|
|
3555
|
+
data: { fileUrl: url }
|
|
3556
|
+
});
|
|
3557
|
+
|
|
3558
|
+
if (!result || !result.success) {
|
|
3559
|
+
throw new Error(result?.error || 'Failed to open website');
|
|
3560
|
+
}
|
|
3561
|
+
|
|
3562
|
+
console.log('[UIManager] Successfully opened website tab:', result.tabId);
|
|
3563
|
+
} catch (error) {
|
|
3564
|
+
console.error('[UIManager] Error opening website:', error);
|
|
3565
|
+
this.showNotification(`Failed to open website: ${error.message}`, 'error');
|
|
3566
|
+
}
|
|
3567
|
+
}
|
|
3568
|
+
|
|
3569
|
+
// Create individual social link element
|
|
3570
|
+
createSocialLink(platform, url) {
|
|
3571
|
+
const link = document.createElement('a');
|
|
3572
|
+
link.href = url;
|
|
3573
|
+
link.className = 'social-link';
|
|
3574
|
+
link.setAttribute('data-platform', platform);
|
|
3575
|
+
link.setAttribute('target', '_blank');
|
|
3576
|
+
link.setAttribute('rel', 'noopener noreferrer');
|
|
3577
|
+
|
|
3578
|
+
// Set title and tooltip based on platform
|
|
3579
|
+
let title = '';
|
|
3580
|
+
let svg = '';
|
|
3581
|
+
|
|
3582
|
+
switch (platform.toLowerCase()) {
|
|
3583
|
+
case 'github':
|
|
3584
|
+
title = 'GitHub';
|
|
3585
|
+
svg = `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3586
|
+
<path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z" fill="currentColor"/>
|
|
3587
|
+
</svg>`;
|
|
3588
|
+
break;
|
|
3589
|
+
|
|
3590
|
+
case 'discord':
|
|
3591
|
+
title = 'Discord';
|
|
3592
|
+
svg = `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3593
|
+
<path d="M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z" fill="currentColor"/>
|
|
3594
|
+
</svg>`;
|
|
3595
|
+
break;
|
|
3596
|
+
|
|
3597
|
+
case 'x':
|
|
3598
|
+
case 'twitter':
|
|
3599
|
+
title = 'X (Twitter)';
|
|
3600
|
+
svg = `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3601
|
+
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" fill="currentColor"/>
|
|
3602
|
+
</svg>`;
|
|
3603
|
+
break;
|
|
3604
|
+
|
|
3605
|
+
|
|
3606
|
+
default:
|
|
3607
|
+
console.warn(`[UIManager] Unknown social platform: ${platform}`);
|
|
3608
|
+
return null;
|
|
3609
|
+
}
|
|
3610
|
+
|
|
3611
|
+
link.setAttribute('title', title);
|
|
3612
|
+
link.innerHTML = svg;
|
|
3613
|
+
|
|
3614
|
+
return link;
|
|
3615
|
+
}
|
|
3616
|
+
|
|
3471
3617
|
// Export for use in other modules
|
|
3472
3618
|
static exportToWindow() {
|
|
3473
3619
|
if (typeof window !== 'undefined') {
|
|
@@ -36,22 +36,8 @@
|
|
|
36
36
|
<div class="logo-brand">
|
|
37
37
|
<img src="icons/logo.png" alt="VibeSurf" class="logo-image">
|
|
38
38
|
<span class="logo-text">VibeSurf</span>
|
|
39
|
-
<div class="social-links">
|
|
40
|
-
|
|
41
|
-
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
42
|
-
<path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z" fill="currentColor"/>
|
|
43
|
-
</svg>
|
|
44
|
-
</a>
|
|
45
|
-
<a href="https://discord.gg/WSeRwW2M" class="social-link" title="Discord" data-platform="discord" target="_blank" rel="noopener noreferrer">
|
|
46
|
-
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
47
|
-
<path d="M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z" fill="currentColor"/>
|
|
48
|
-
</svg>
|
|
49
|
-
</a>
|
|
50
|
-
<a href="https://x.com/warmshao" class="social-link" title="X (Twitter)" data-platform="x" target="_blank" rel="noopener noreferrer">
|
|
51
|
-
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
52
|
-
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" fill="currentColor"/>
|
|
53
|
-
</svg>
|
|
54
|
-
</a>
|
|
39
|
+
<div class="social-links" id="social-links-container">
|
|
40
|
+
<!-- Social links will be populated dynamically from config -->
|
|
55
41
|
</div>
|
|
56
42
|
</div>
|
|
57
43
|
<div class="session-info">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vibesurf
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.29
|
|
4
4
|
Summary: VibeSurf: A powerful browser assistant for vibe surfing
|
|
5
5
|
Author: Shao Warm
|
|
6
6
|
License: Apache-2.0
|
|
@@ -71,56 +71,88 @@ If you're as excited about open-source AI browsing as I am, give it a star! ⭐
|
|
|
71
71
|
|
|
72
72
|
## 🛠️ Installation
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
Install uv from [https://docs.astral.sh/uv/getting-started/installation/](https://docs.astral.sh/uv/getting-started/installation/):
|
|
74
|
+
Get VibeSurf up and running in just three simple steps. No complex configuration required.
|
|
76
75
|
|
|
76
|
+
### 1. Install uv
|
|
77
|
+
Install uv package manager from the official website
|
|
78
|
+
|
|
79
|
+
**MacOS/Linux**
|
|
77
80
|
```bash
|
|
78
|
-
# On macOS and Linux
|
|
79
81
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
82
|
+
```
|
|
80
83
|
|
|
81
|
-
|
|
84
|
+
**Windows**
|
|
85
|
+
```bash
|
|
82
86
|
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
83
87
|
```
|
|
84
88
|
|
|
85
|
-
###
|
|
89
|
+
### 2. Setup Environment
|
|
90
|
+
Install VibeSurf
|
|
91
|
+
|
|
86
92
|
```bash
|
|
87
|
-
uv venv --python 3.12
|
|
88
93
|
uv pip install vibesurf -U
|
|
89
94
|
```
|
|
90
95
|
|
|
91
|
-
###
|
|
96
|
+
### 3. Launch VibeSurf
|
|
97
|
+
Start the VibeSurf browser assistant
|
|
98
|
+
|
|
92
99
|
```bash
|
|
93
100
|
uv run vibesurf
|
|
94
101
|
```
|
|
95
102
|
|
|
96
103
|
## 👩💻 For Contributors
|
|
97
104
|
|
|
98
|
-
Want to contribute to VibeSurf?
|
|
105
|
+
Want to contribute to VibeSurf? Follow these steps to set up your development environment:
|
|
99
106
|
|
|
100
|
-
###
|
|
101
|
-
Run the backend server directly using uvicorn:
|
|
107
|
+
### 1. Clone Repository
|
|
102
108
|
```bash
|
|
103
|
-
|
|
109
|
+
git clone https://github.com/vibesurf-ai/VibeSurf.git
|
|
110
|
+
cd VibeSurf
|
|
104
111
|
```
|
|
105
112
|
|
|
106
|
-
###
|
|
107
|
-
|
|
113
|
+
### 2. Setup Environment
|
|
114
|
+
**MacOS/Linux**
|
|
108
115
|
```bash
|
|
116
|
+
uv venv --python 3.12
|
|
117
|
+
source .venv/bin/activate
|
|
109
118
|
uv pip install -e .
|
|
110
|
-
uv run vibesurf
|
|
111
119
|
```
|
|
112
120
|
|
|
113
|
-
|
|
114
|
-
|
|
121
|
+
**Windows**
|
|
122
|
+
```bash
|
|
123
|
+
uv venv --python 3.12
|
|
124
|
+
.venv\Scripts\activate
|
|
125
|
+
uv pip install -e .
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 3. Start Debugging
|
|
129
|
+
**Option 1: Direct Server**
|
|
130
|
+
```bash
|
|
131
|
+
uvicorn vibe_surf.backend.main:app --host 127.0.0.1 --port 9335
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Option 2: CLI Entry**
|
|
135
|
+
```bash
|
|
136
|
+
uv run vibesurf
|
|
137
|
+
```
|
|
138
|
+
## 🗺️ Roadmap
|
|
115
139
|
|
|
116
140
|
We're building VibeSurf to be your ultimate AI browser companion. Here's what's coming next:
|
|
117
141
|
|
|
118
|
-
- [x] **Smart Skills System
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
- [ ] **
|
|
122
|
-
|
|
123
|
-
|
|
142
|
+
- [x] **Smart Skills System** - *Completed*
|
|
143
|
+
Add `/search` for quick information search and `/crawl` for automatic website data extraction. Integrated native APIs for Xiaohongshu, Douyin, Weibo, and YouTube.
|
|
144
|
+
|
|
145
|
+
- [ ] **Powerful Coding Agent** - *In Progress*
|
|
146
|
+
Build a comprehensive coding assistant for data processing and analysis directly in your browser
|
|
147
|
+
|
|
148
|
+
- [ ] **Agentic Browser Workflow** - *Planned*
|
|
149
|
+
Create custom drag-and-drop workflows for auto-login, data collection, and complex browser automation tasks
|
|
150
|
+
|
|
151
|
+
- [ ] **Third-Party Integrations** - *Planned*
|
|
152
|
+
Connect with n8n workflows and other tools to combine browsing with automation
|
|
153
|
+
|
|
154
|
+
- [ ] **Intelligent Memory & Personalization** - *Planned*
|
|
155
|
+
Transform VibeSurf into a truly human-like companion with persistent memory that learns your preferences, habits, and browsing patterns over time
|
|
124
156
|
|
|
125
157
|
|
|
126
158
|
## 🎬 Demo
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/migrations/v001_initial_schema.sql
RENAMED
|
File without changes
|
{vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/backend/database/migrations/v002_add_agent_mode.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/permission-iframe-request.js
RENAMED
|
File without changes
|
{vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/permission-request.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/scripts/user-settings-storage.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/settings-environment.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/settings-responsive.css
RENAMED
|
File without changes
|
{vibesurf-0.1.28 → vibesurf-0.1.29}/vibe_surf/chrome_extension/styles/settings-utilities.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|