myagent-ai 1.2.2 → 1.3.1
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.
- package/agents/main_agent.py +7 -0
- package/communication/__init__.py +0 -0
- package/communication/channel.py +0 -0
- package/communication/crypto.py +0 -0
- package/communication/manager.py +0 -0
- package/communication/peer.py +0 -0
- package/core/config_broadcast.py +0 -0
- package/core/config_validator.py +0 -0
- package/core/context_manager.py +0 -0
- package/core/deps_checker.py +473 -0
- package/core/permissions.py +0 -0
- package/core/task_persistence.py +0 -0
- package/core/update_manager.py +0 -0
- package/core/version.py +1 -1
- package/departments/__init__.py +0 -0
- package/departments/manager.py +0 -0
- package/docs//351/205/215/347/275/256/344/275/277/347/224/250/350/257/264/346/230/216.md +0 -0
- package/groups/__init__.py +0 -0
- package/groups/manager.py +0 -0
- package/install/install.ps1 +88 -24
- package/install/install.sh +134 -16
- package/knowledge/__init__.py +0 -0
- package/knowledge/rag.py +0 -0
- package/main.py +34 -2
- package/organization/__init__.py +0 -0
- package/organization/manager.py +0 -0
- package/package.json +1 -1
- package/requirements.txt +22 -15
- package/setup.py +14 -3
- package/skills/browser_skill.py +704 -80
- package/skills/gui_skill.py +908 -0
- package/start.sh +22 -9
- package/web/__init__.py +0 -0
- package/web/api_server.py +20 -16
- package/web/tts_handler.py +0 -0
- package/web/ui/chat.html +11 -6
- package/web/ui/index.html +0 -0
package/start.sh
CHANGED
|
@@ -56,13 +56,14 @@ echo ""
|
|
|
56
56
|
|
|
57
57
|
# ── 获取 Python 命令 ───────────────────────────────
|
|
58
58
|
get_python() {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
hash -r 2>/dev/null || true
|
|
60
|
+
if command -v python3 &>/dev/null; then
|
|
61
|
+
echo "python3"
|
|
62
|
+
elif command -v python &>/dev/null; then
|
|
63
|
+
echo "python"
|
|
64
|
+
else
|
|
65
|
+
echo ""
|
|
66
|
+
fi
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
PY="$(get_python)"
|
|
@@ -115,6 +116,8 @@ pip_install() {
|
|
|
115
116
|
|
|
116
117
|
# ── 检查核心依赖 ─────────────────────────────────
|
|
117
118
|
check_deps() {
|
|
119
|
+
# 刷新命令缓存
|
|
120
|
+
hash -r 2>/dev/null || true
|
|
118
121
|
local missing=0
|
|
119
122
|
|
|
120
123
|
# 必需依赖
|
|
@@ -127,12 +130,22 @@ check_deps() {
|
|
|
127
130
|
fi
|
|
128
131
|
done
|
|
129
132
|
|
|
133
|
+
# 内置技能依赖(缺一不可,启动时自动安装)
|
|
134
|
+
for mod in duckduckgo_search bs4 psutil playwright mss pynput; do
|
|
135
|
+
if $PY -c "import $mod" 2>/dev/null; then
|
|
136
|
+
success "$mod"
|
|
137
|
+
else
|
|
138
|
+
warn "$mod 未安装"
|
|
139
|
+
missing=1
|
|
140
|
+
fi
|
|
141
|
+
done
|
|
142
|
+
|
|
130
143
|
# 可选依赖(不阻断启动)
|
|
131
|
-
for mod in
|
|
144
|
+
for mod in pygetwindow PIL edge_tts pystray; do
|
|
132
145
|
if $PY -c "import $mod" 2>/dev/null; then
|
|
133
146
|
success "$mod"
|
|
134
147
|
else
|
|
135
|
-
info "$mod
|
|
148
|
+
info "$mod 未安装(可选,不影响核心功能)"
|
|
136
149
|
fi
|
|
137
150
|
done
|
|
138
151
|
|
package/web/__init__.py
CHANGED
|
File without changes
|
package/web/api_server.py
CHANGED
|
@@ -100,22 +100,22 @@ class ApiServer:
|
|
|
100
100
|
r.add_get("/api/agents/tree", self.handle_agents_tree)
|
|
101
101
|
r.add_post("/api/agents", self.handle_create_agent)
|
|
102
102
|
# ── Agent 子资源路由(必须在通用 {name} 路由之前注册) ──
|
|
103
|
-
r.add_get("/api/agents/{name:[
|
|
104
|
-
r.add_put("/api/agents/{name:[
|
|
105
|
-
r.add_get("/api/agents/{name:[
|
|
106
|
-
r.add_put("/api/agents/{name:[
|
|
107
|
-
r.add_get("/api/agents/{name:[
|
|
108
|
-
r.add_put("/api/agents/{name:[
|
|
109
|
-
r.add_get("/api/agents/{name:[
|
|
110
|
-
r.add_get("/api/agents/{name:[
|
|
111
|
-
r.add_post("/api/agents/{name:[
|
|
112
|
-
r.add_get("/api/agents/{name:[
|
|
113
|
-
r.add_get("/api/agents/{name:[
|
|
114
|
-
r.add_post("/api/agents/{name:[
|
|
115
|
-
r.add_delete("/api/agents/{name:[
|
|
103
|
+
r.add_get("/api/agents/{name:[^/]+}/soul", self.handle_get_soul)
|
|
104
|
+
r.add_put("/api/agents/{name:[^/]+}/soul", self.handle_set_soul)
|
|
105
|
+
r.add_get("/api/agents/{name:[^/]+}/identity", self.handle_get_identity)
|
|
106
|
+
r.add_put("/api/agents/{name:[^/]+}/identity", self.handle_set_identity)
|
|
107
|
+
r.add_get("/api/agents/{name:[^/]+}/user", self.handle_get_user)
|
|
108
|
+
r.add_put("/api/agents/{name:[^/]+}/user", self.handle_set_user)
|
|
109
|
+
r.add_get("/api/agents/{name:[^/]+}/sessions", self.handle_agent_sessions)
|
|
110
|
+
r.add_get("/api/agents/{name:[^/]+}/children", self.handle_list_children)
|
|
111
|
+
r.add_post("/api/agents/{name:[^/]+}/children", self.handle_create_child)
|
|
112
|
+
r.add_get("/api/agents/{name:[^/]+}/bindings", self.handle_agent_bindings)
|
|
113
|
+
r.add_get("/api/agents/{name:[^/]+}/knowledge", self.handle_list_agent_knowledge)
|
|
114
|
+
r.add_post("/api/agents/{name:[^/]+}/knowledge/upload", self.handle_upload_agent_knowledge)
|
|
115
|
+
r.add_delete("/api/agents/{name:[^/]+}/knowledge", self.handle_delete_agent_knowledge)
|
|
116
116
|
# ── Agent 通用 CRUD(放在子资源之后,name 不含斜杠避免吞掉子路由) ──
|
|
117
|
-
r.add_get("/api/agents/{name:[
|
|
118
|
-
r.add_put("/api/agents/{name:[
|
|
117
|
+
r.add_get("/api/agents/{name:[^/]+}", self.handle_get_agent)
|
|
118
|
+
r.add_put("/api/agents/{name:[^/]+}", self.handle_update_agent)
|
|
119
119
|
r.add_delete("/api/agents/{name:.+}", self.handle_delete_agent)
|
|
120
120
|
# ── 平台管理 ──
|
|
121
121
|
r.add_get("/api/platforms", self.handle_list_platforms)
|
|
@@ -243,14 +243,18 @@ class ApiServer:
|
|
|
243
243
|
r.add_post("/api/execution-lock", self.handle_execution_lock)
|
|
244
244
|
r.add_post("/api/chat/check-text-size", self.handle_check_text_size)
|
|
245
245
|
r.add_post("/api/chat/save-to-knowledge", self.handle_save_to_knowledge)
|
|
246
|
+
r.add_get("/ui/", self.handle_ui_index)
|
|
247
|
+
r.add_get("/", self.handle_index)
|
|
246
248
|
ui_dir = Path(__file__).parent / "ui"
|
|
247
249
|
if ui_dir.exists():
|
|
248
250
|
r.add_static("/ui", str(ui_dir))
|
|
249
|
-
r.add_get("/", self.handle_index)
|
|
250
251
|
|
|
251
252
|
async def handle_index(self, request):
|
|
252
253
|
raise web.HTTPFound("/ui/chat.html")
|
|
253
254
|
|
|
255
|
+
async def handle_ui_index(self, request):
|
|
256
|
+
raise web.HTTPFound("/ui/index.html")
|
|
257
|
+
|
|
254
258
|
def _get_group_manager(self):
|
|
255
259
|
"""获取群聊管理器实例(懒加载)"""
|
|
256
260
|
if not hasattr(self, '_group_manager'):
|
package/web/tts_handler.py
CHANGED
|
File without changes
|
package/web/ui/chat.html
CHANGED
|
@@ -3067,14 +3067,19 @@ function newChat() {
|
|
|
3067
3067
|
document.getElementById('headerTitle').textContent = '新对话';
|
|
3068
3068
|
const agent = findAgentByPath(state.activeAgent);
|
|
3069
3069
|
if (agent) {
|
|
3070
|
-
document.getElementById('welcomeEmoji')
|
|
3071
|
-
|
|
3072
|
-
document.getElementById('
|
|
3070
|
+
const emojiEl = document.getElementById('welcomeEmoji');
|
|
3071
|
+
if (emojiEl) emojiEl.textContent = agent.avatar_emoji || '👋';
|
|
3072
|
+
const titleEl = document.getElementById('welcomeTitle');
|
|
3073
|
+
if (titleEl) titleEl.textContent = `你好,我是 ${agent.name}`;
|
|
3074
|
+
const subEl = document.getElementById('welcomeSubtitle');
|
|
3075
|
+
if (subEl) subEl.textContent = agent.description || '你的 AI 助手';
|
|
3073
3076
|
}
|
|
3074
|
-
document.getElementById('welcomeCard')
|
|
3077
|
+
const welcomeCard = document.getElementById('welcomeCard');
|
|
3078
|
+
if (welcomeCard) welcomeCard.style.display = '';
|
|
3075
3079
|
renderMessages();
|
|
3076
3080
|
renderSessions();
|
|
3077
|
-
document.getElementById('userInput')
|
|
3081
|
+
const userInput = document.getElementById('userInput');
|
|
3082
|
+
if (userInput) userInput.focus();
|
|
3078
3083
|
}
|
|
3079
3084
|
|
|
3080
3085
|
async function selectSession(id) {
|
|
@@ -3565,7 +3570,7 @@ function showConfigModal() {
|
|
|
3565
3570
|
+ '<div class="config-action-row">'
|
|
3566
3571
|
+ '<button class="config-action-btn primary" onclick="hotReloadConfig()" id="reloadBtn">'
|
|
3567
3572
|
+ '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="23 4 23 10 17 10"/><path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"/></svg>'
|
|
3568
|
-
+ '
|
|
3573
|
+
+ '热重载配置</button>'
|
|
3569
3574
|
+ '</div>'
|
|
3570
3575
|
+ '<div class="config-status" id="reloadStatus"></div>'
|
|
3571
3576
|
+ '</div>'
|
package/web/ui/index.html
CHANGED
|
File without changes
|