foliko 1.1.13 → 1.1.14
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/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
- package/.agent/ARCHITECTURE.md +288 -0
- package/.agent/agents/ambient-agent.md +57 -0
- package/.agent/agents/debugger.md +55 -0
- package/.agent/agents/email-assistant.md +49 -0
- package/.agent/agents/file-manager.md +42 -0
- package/.agent/agents/poster-expert.md +135 -196
- package/.agent/agents/python-developer.md +60 -0
- package/.agent/agents/scheduler.md +59 -0
- package/.agent/agents/web-developer.md +45 -0
- package/.agent/data/default.json +404 -9
- package/.agent/data/plugins-state.json +172 -173
- package/.agent/data/puppeteer-sessions/undefined.json +6 -0
- package/.agent/data/weixin-media/2026-04-08/img_1775618677512.jpg +0 -0
- package/.agent/data/weixin-media/2026-04-08/img_1775619073340.jpg +0 -0
- package/.agent/data/weixin-media/2026-04-08/img_1775619097536.jpg +0 -0
- package/.agent/data/weixin-media/2026-04-08/img_1775619209388.jpg +0 -0
- package/.agent/mcp_config.json +21 -0
- package/.agent/memory/feedback/mnygjgox-ualjip.md +11 -0
- package/.agent/memory/project/mnqx54u5-loqtoe.md +9 -0
- package/.agent/memory/project/mnqx84cv-mx6dmd.md +9 -0
- package/.agent/memory/project/mnsacuyr-hgtk5n.md +20 -0
- package/.agent/memory/project/mnu5hy2x-bjsg7u.md +9 -0
- package/.agent/memory/project/mny28ot4-8qe9au.md +9 -0
- package/.agent/memory/reference/mnre3cww-penbo1.md +9 -0
- package/.agent/memory/reference/mns9wn48-luerua.md +14 -0
- package/.agent/memory/reference/mns9yz5c-thc2s0.md +16 -0
- package/.agent/memory/reference/mnsfy4um-910f1o.md +23 -0
- package/.agent/memory/reference/mnsg37dp-lmfj18.md +32 -0
- package/.agent/memory/reference/mnsll60q-0j911u.md +36 -0
- package/.agent/memory/reference/mnsmlb5y-nej31u.md +16 -0
- package/.agent/memory/reference/mnssle72-yrot96.md +9 -0
- package/.agent/memory/reference/mnygj8nb-bjthmc.md +20 -0
- package/.agent/memory/user/mnsfuon6-l416q1.md +21 -0
- package/.agent/memory/user/mnsg9kut-95m7rf.md +20 -0
- package/.agent/memory/user/mnu2eo1v-yy6fhe.md +9 -0
- package/.agent/memory/user/mnu2etuo-8u8jk8.md +9 -0
- package/.agent/memory/user/mnx0rk6g-gsznjj.md +9 -0
- package/.agent/memory/user/mnyf1riz-4yo5yz.md +9 -0
- package/.agent/plugins/puppeteer-plugin/README.md +147 -0
- package/.agent/plugins/puppeteer-plugin/index.js +1422 -0
- package/.agent/plugins/puppeteer-plugin/package.json +9 -0
- package/.agent/plugins.json +5 -11
- package/.agent/rules/GEMINI.md +273 -0
- package/.agent/rules/allow-rule.md +77 -0
- package/.agent/rules/log-rule.md +83 -0
- package/.agent/rules/security-rule.md +93 -0
- package/.agent/scripts/auto_preview.py +148 -0
- package/.agent/scripts/checklist.py +217 -0
- package/.agent/scripts/session_manager.py +120 -0
- package/.agent/scripts/verify_all.py +327 -0
- package/.agent/sessions/cli_default.json +11 -641
- package/.agent/skills/api-patterns/SKILL.md +81 -0
- package/.agent/skills/api-patterns/api-style.md +42 -0
- package/.agent/skills/api-patterns/auth.md +24 -0
- package/.agent/skills/api-patterns/documentation.md +26 -0
- package/.agent/skills/api-patterns/graphql.md +41 -0
- package/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/response.md +37 -0
- package/.agent/skills/api-patterns/rest.md +40 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/api-patterns/security-testing.md +122 -0
- package/.agent/skills/api-patterns/trpc.md +41 -0
- package/.agent/skills/api-patterns/versioning.md +22 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +71 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +40 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/.agent/skills/architecture/SKILL.md +55 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/clean-code/SKILL.md +201 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/frontend-design/SKILL.md +418 -0
- package/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/color-system.md +311 -0
- package/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/.agent/skills/frontend-design/typography-system.md +345 -0
- package/.agent/skills/frontend-design/ux-psychology.md +1116 -0
- package/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/poster-design/SKILL.md +385 -0
- package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
- package/.agent/workflows/brainstorm.md +113 -0
- package/.agent/workflows/create.md +59 -0
- package/.agent/workflows/debug.md +103 -0
- package/.agent/workflows/deploy.md +176 -0
- package/.agent/workflows/enhance.md +63 -0
- package/.agent/workflows/orchestrate.md +237 -0
- package/.agent/workflows/plan.md +89 -0
- package/.agent/workflows/preview.md +81 -0
- package/.agent/workflows/simple-test.md +42 -0
- package/.agent/workflows/status.md +86 -0
- package/.agent/workflows/structured-orchestrate.md +180 -0
- package/.agent/workflows/test.md +144 -0
- package/.agent/workflows/ui-ux-pro-max.md +296 -0
- package/.claude/settings.local.json +23 -1
- package/.env.example +56 -56
- package/README.md +441 -441
- package/cli/src/commands/chat.js +9 -15
- package/cli/src/ui/chat-ui.js +41 -71
- package/package.json +1 -1
- package/plugins/default-plugins.js +5 -5
- package/plugins/file-system-plugin.js +1 -1
- package/plugins/memory-plugin.js +12 -12
- package/plugins/plugin-manager-plugin.js +1 -0
- package/plugins/subagent-plugin.js +55 -1
- package/plugins/telegram-plugin.js +9 -6
- package/plugins/weixin-plugin.js +50 -34
- package/skills/find-skills/AGENTS.md +162 -162
- package/skills/find-skills/SKILL.md +133 -133
- package/src/core/agent-chat.js +460 -1612
- package/src/core/agent.js +53 -134
- package/src/core/chat-session.js +423 -0
- package/src/core/context-compressor.js +473 -0
- package/src/core/context-manager.js +0 -48
- package/src/core/framework.js +95 -68
- package/src/core/index.js +11 -0
- package/src/core/notification-manager.js +125 -0
- package/src/core/subagent.js +295 -0
- package/src/core/token-counter.js +190 -0
- package/src/core/tool-executor.js +270 -0
- package/src/executors/mcp-executor.js +14 -1
- package/system.md +312 -2373
- package/.agent/agents/code-assistant.json +0 -17
- package/.agent/agents/email-assistant.json +0 -14
- package/.agent/agents/file-assistant.json +0 -18
- package/.agent/agents/orchestrator-demo.md +0 -53
- package/.agent/agents/orchestrator.json +0 -7
- package/.agent/agents/system-assistant.json +0 -15
- package/.agent/agents/web-assistant.json +0 -12
- package/.agent/data/email/processed-emails.json +0 -1
- package/.agent/data/scheduler/tasks.json +0 -1
- package/.agent/data/web/web-config.json +0 -5
- package/.agent/memory/feedback/mnv3nu27-3o15pf.md +0 -9
- package/.agent/memory/feedback/mnv3o078-b959yj.md +0 -9
- package/.agent/memory/feedback/mnv3o6ej-u0fif5.md +0 -9
- package/.agent/memory/feedback/mnv3obgl-bkkjoj.md +0 -9
- package/.agent/memory/feedback/mnv4a3js-dv6onx.md +0 -9
- package/.agent/memory/feedback/mnv4aacm-sxxowp.md +0 -9
- package/.agent/memory/feedback/mnv4ahto-w40ffm.md +0 -9
- package/.agent/memory/feedback/mnv4anvp-3cs06y.md +0 -9
- package/.agent/memory/feedback/mnvzgvtd-0o2900.md +0 -9
- package/.agent/memory/feedback/mnvzhajn-swbx61.md +0 -15
- package/.agent/memory/feedback/mnvzhgsp-p5vog3.md +0 -9
- package/.agent/memory/feedback/mnvzho0c-fgql7q.md +0 -14
- package/.agent/memory/feedback/mnvzhtzq-ufr5at.md +0 -9
- package/.agent/memory/feedback/mnvzhyb3-9byq2z.md +0 -9
- package/.agent/memory/feedback/mnvzi7hp-hyeafp.md +0 -9
- package/.agent/memory/feedback/mnvzibph-z7rwp5.md +0 -9
- package/.agent/memory/feedback/mnvzilys-7h176w.md +0 -14
- package/.agent/memory/feedback/mnvziuh5-zjshci.md +0 -9
- package/.agent/memory/feedback/mnw07wde-6zqsc8.md +0 -9
- package/.agent/memory/feedback/mnw084bp-j0ba2a.md +0 -9
- package/.agent/memory/user/mnv3n62r-y0h79j.md +0 -21
- package/.agent/memory/user/mnv3n9yf-ead4g8.md +0 -13
- package/.agent/memory/user/mnv3ne3j-82tq1k.md +0 -19
- package/.agent/memory/user/mnv3nhgm-g2s2us.md +0 -11
- package/.agent/memory/user/mnv3nl9u-ejd998.md +0 -16
- package/.agent/memory/user/mnv3nofp-ya5szl.md +0 -10
- package/.agent/memory/user/mnv49qne-bhk0ki.md +0 -9
- package/.agent/memory/user/mnv49w3y-rzr8ju.md +0 -13
- package/.agent/package.json +0 -8
- package/.agent/plugins/__pycache__/file_writer.cpython-312.pyc +0 -0
- package/.agent/plugins/daytona/README.md +0 -89
- package/.agent/plugins/daytona/index.js +0 -377
- package/.agent/plugins/daytona/package.json +0 -12
- package/.agent/plugins/marknative/README.md +0 -134
- package/.agent/plugins/marknative/fonts/SegoeUI Emoji.ttf +0 -0
- package/.agent/plugins/marknative/fonts.zip +0 -0
- package/.agent/plugins/marknative/index.js +0 -256
- package/.agent/plugins/marknative/package.json +0 -12
- package/.agent/plugins/system-info/index.js +0 -387
- package/.agent/plugins/system-info/package.json +0 -4
- package/.agent/plugins/system-info/test.js +0 -40
- package/.agent/plugins/test-plugin.py +0 -123
- package/.agent/plugins/test_nested_plugin.py +0 -85
- package/.agent/python-scripts/test_sample.py +0 -24
- package/.agent/sessions/test.json +0 -16
- package/.agent/skills/agent-browser/SKILL.md +0 -311
- package/.agent/skills/agent-browser/TEST_PLAN.md +0 -200
- package/.agent/skills/sysinfo/SKILL.md +0 -38
- package/.agent/skills/sysinfo/system-info.sh +0 -130
- package/.agent/skills/workflow/SKILL.md +0 -324
- package/.agent/test-agent.js +0 -35
- package/.agent/weixin.json +0 -6
- package/.agent/workflows/email-digest.json +0 -50
- package/.agent/workflows/file-backup.json +0 -21
- package/.agent/workflows/get-ip-notify.json +0 -32
- package/.agent/workflows/news-aggregator.json +0 -93
- package/.agent/workflows/news-dashboard-v2.json +0 -94
- package/.agent/workflows/notification-batch.json +0 -32
- package/plugins/python-plugin-loader.js.bak +0 -856
- package/src/core/agent-context.js +0 -188
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# .agent/plugins/test-plugin.py
|
|
2
|
-
|
|
3
|
-
PLUGIN = {
|
|
4
|
-
"name": "test-plugin",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"description": "测试插件 - 包含问候、计算、数据处理等测试工具"
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
TOOLS = [
|
|
10
|
-
{
|
|
11
|
-
"name": "hello",
|
|
12
|
-
"description": "问候工具",
|
|
13
|
-
"params": {"name": "string"}
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"name": "calc",
|
|
17
|
-
"description": "计算器工具",
|
|
18
|
-
"params": {"a": "number", "b": "number", "op": "string"}
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"name": "reverse_text",
|
|
22
|
-
"description": "反转字符串",
|
|
23
|
-
"params": {"text": "string"}
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"name": "word_count",
|
|
27
|
-
"description": "统计文本的字符数、单词数、行数",
|
|
28
|
-
"params": {"text": "string"}
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"name": "random_number",
|
|
32
|
-
"description": "生成指定范围内的随机整数",
|
|
33
|
-
"params": {"min": "number", "max": "number"}
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
# === 工具实现 ===
|
|
38
|
-
|
|
39
|
-
def hello(params):
|
|
40
|
-
"""问候工具"""
|
|
41
|
-
name = params.get("name", "World")
|
|
42
|
-
return {"success": True, "result": f"Hello, {name}!"}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def calc(params):
|
|
46
|
-
"""计算器工具"""
|
|
47
|
-
a = params.get("a", 0)
|
|
48
|
-
b = params.get("b", 0)
|
|
49
|
-
op = params.get("op", "add")
|
|
50
|
-
|
|
51
|
-
if op == "add":
|
|
52
|
-
result = a + b
|
|
53
|
-
elif op == "sub":
|
|
54
|
-
result = a - b
|
|
55
|
-
elif op == "mul":
|
|
56
|
-
result = a * b
|
|
57
|
-
elif op == "div":
|
|
58
|
-
if b == 0:
|
|
59
|
-
return {"success": False, "error": "Division by zero"}
|
|
60
|
-
result = a / b
|
|
61
|
-
elif op == "pow":
|
|
62
|
-
result = a ** b
|
|
63
|
-
elif op == "mod":
|
|
64
|
-
if b == 0:
|
|
65
|
-
return {"success": False, "error": "Modulo by zero"}
|
|
66
|
-
result = a % b
|
|
67
|
-
else:
|
|
68
|
-
return {"success": False, "error": f"Unknown operation: {op}"}
|
|
69
|
-
|
|
70
|
-
return {"success": True, "result": result}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def reverse_text(params):
|
|
74
|
-
"""反转字符串"""
|
|
75
|
-
text = params.get("text", "")
|
|
76
|
-
return {"success": True, "result": text[::-1]}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
def word_count(params):
|
|
80
|
-
"""统计文本的字符数、单词数、行数"""
|
|
81
|
-
text = params.get("text", "")
|
|
82
|
-
|
|
83
|
-
char_count = len(text)
|
|
84
|
-
word_count = len(text.split())
|
|
85
|
-
line_count = len(text.splitlines()) if text else 0
|
|
86
|
-
|
|
87
|
-
return {
|
|
88
|
-
"success": True,
|
|
89
|
-
"result": {
|
|
90
|
-
"characters": char_count,
|
|
91
|
-
"words": word_count,
|
|
92
|
-
"lines": line_count
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def random_number(params):
|
|
98
|
-
"""生成指定范围内的随机整数"""
|
|
99
|
-
import random
|
|
100
|
-
|
|
101
|
-
min_val = params.get("min", 0)
|
|
102
|
-
max_val = params.get("max", 100)
|
|
103
|
-
|
|
104
|
-
if min_val > max_val:
|
|
105
|
-
return {"success": False, "error": "min cannot be greater than max"}
|
|
106
|
-
|
|
107
|
-
result = random.randint(min_val, max_val)
|
|
108
|
-
return {"success": True, "result": result}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
# === 工具分发器 (必须) ===
|
|
112
|
-
def execute_tool(name, params):
|
|
113
|
-
"""执行工具的分发器"""
|
|
114
|
-
tools = {
|
|
115
|
-
"hello": hello,
|
|
116
|
-
"calc": calc,
|
|
117
|
-
"reverse_text": reverse_text,
|
|
118
|
-
"word_count": word_count,
|
|
119
|
-
"random_number": random_number,
|
|
120
|
-
}
|
|
121
|
-
if name not in tools:
|
|
122
|
-
return {"success": False, "error": f"Unknown tool: {name}"}
|
|
123
|
-
return tools[name](params)
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""
|
|
3
|
-
测试嵌套参数解析的 Python 插件
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
# 插件元信息
|
|
7
|
-
PLUGIN = {
|
|
8
|
-
"name": "test_nested",
|
|
9
|
-
"description": "测试嵌套参数解析插件"
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
# 工具定义 - 使用各种嵌套格式
|
|
13
|
-
TOOLS = [
|
|
14
|
-
{
|
|
15
|
-
"name": "query_data",
|
|
16
|
-
"description": "查询数据,支持嵌套 filter",
|
|
17
|
-
"params": {
|
|
18
|
-
"table": "string",
|
|
19
|
-
"filter": {
|
|
20
|
-
"type": "object",
|
|
21
|
-
"properties": {
|
|
22
|
-
"name": "string",
|
|
23
|
-
"age": "number",
|
|
24
|
-
"tags": ["string"],
|
|
25
|
-
"address": {
|
|
26
|
-
"type": "object",
|
|
27
|
-
"properties": {
|
|
28
|
-
"city": "string",
|
|
29
|
-
"zip": "string"
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
"options": {
|
|
35
|
-
"limit": "number",
|
|
36
|
-
"sort": "string"
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"name": "search_by_ids",
|
|
42
|
-
"description": "根据ID列表搜索(数组简写)",
|
|
43
|
-
"params": {
|
|
44
|
-
"ids": "number[]",
|
|
45
|
-
"include_details": "boolean"
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"name": "complex_query",
|
|
50
|
-
"description": "复杂查询(对象简写)",
|
|
51
|
-
"params": {
|
|
52
|
-
"config": "{timeout:number,debug:boolean,retry:number}"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
]
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def query_data(params):
|
|
59
|
-
"""查询数据"""
|
|
60
|
-
return {
|
|
61
|
-
"success": True,
|
|
62
|
-
"data": {
|
|
63
|
-
"table": params.get("table"),
|
|
64
|
-
"filter": params.get("filter"),
|
|
65
|
-
"options": params.get("options")
|
|
66
|
-
},
|
|
67
|
-
"message": "查询成功"
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def search_by_ids(params):
|
|
72
|
-
"""根据ID搜索"""
|
|
73
|
-
return {
|
|
74
|
-
"success": True,
|
|
75
|
-
"ids": params.get("ids"),
|
|
76
|
-
"include_details": params.get("include_details", False)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
def complex_query(params):
|
|
81
|
-
"""复杂查询"""
|
|
82
|
-
return {
|
|
83
|
-
"success": True,
|
|
84
|
-
"config": params.get("config")
|
|
85
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
测试模块 - 2026-04-02 02:52:12
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
import unittest
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class TestMath(unittest.TestCase):
|
|
10
|
-
"""TestMath 测试类"""
|
|
11
|
-
|
|
12
|
-
def test_add(self):
|
|
13
|
-
"""测试用例: test_add"""
|
|
14
|
-
# TODO: 实现测试逻辑
|
|
15
|
-
self.assertTrue(True)
|
|
16
|
-
|
|
17
|
-
def test_subtract(self):
|
|
18
|
-
"""测试用例: test_subtract"""
|
|
19
|
-
# TODO: 实现测试逻辑
|
|
20
|
-
self.assertTrue(True)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if __name__ == "__main__":
|
|
24
|
-
unittest.main()
|
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: agent-browser
|
|
3
|
-
description: 浏览器自动化工具,用于 AI 代理的网页操作。当用户说"打开浏览器"、"访问网页"、"抓取页面"、"填写表单"、"点击按钮"、"截图"、"网页自动化"时调用此技能。
|
|
4
|
-
allowed-tools:
|
|
5
|
-
- shell
|
|
6
|
-
- execute_command
|
|
7
|
-
- read_file
|
|
8
|
-
- write_file
|
|
9
|
-
license: Apache-2.0
|
|
10
|
-
compatibility: v1.0.0
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# Agent Browser - 浏览器自动化技能
|
|
14
|
-
|
|
15
|
-
## 概述
|
|
16
|
-
|
|
17
|
-
`agent-browser` 是 Vercel Labs 开发的浏览器自动化 CLI 工具,专为 AI 代理设计。基于 Chrome/Playwright,支持完整的网页交互功能。
|
|
18
|
-
|
|
19
|
-
**官方文档**: https://agent-browser.dev
|
|
20
|
-
**GitHub**: https://github.com/vercel-labs/agent-browser
|
|
21
|
-
|
|
22
|
-
## 安装
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# 全局安装(推荐)
|
|
26
|
-
npm install -g agent-browser
|
|
27
|
-
agent-browser install # 首次下载 Chrome
|
|
28
|
-
|
|
29
|
-
# 或使用 npx(无需安装)
|
|
30
|
-
npx agent-browser install
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## 核心工作流程
|
|
34
|
-
|
|
35
|
-
### 1. 打开网页
|
|
36
|
-
```bash
|
|
37
|
-
agent-browser open <url>
|
|
38
|
-
# 示例
|
|
39
|
-
agent-browser open https://example.com
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 2. 获取页面快照(AI 推荐)
|
|
43
|
-
```bash
|
|
44
|
-
# 获取可访问性树和元素引用
|
|
45
|
-
agent-browser snapshot -i
|
|
46
|
-
|
|
47
|
-
# 输出示例:
|
|
48
|
-
# - heading "Example Domain" [ref=e1] [level=1]
|
|
49
|
-
# - button "Submit" [ref=e2]
|
|
50
|
-
# - textbox "Email" [ref=e3]
|
|
51
|
-
# - link "Learn more" [ref=e4]
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### 3. 使用引用交互
|
|
55
|
-
```bash
|
|
56
|
-
agent-browser click @e2 # 点击按钮
|
|
57
|
-
agent-browser fill @e3 "test@example.com" # 填写输入框
|
|
58
|
-
agent-browser get text @e1 # 获取文本
|
|
59
|
-
agent-browser hover @e4 # 悬停链接
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### 4. 截图
|
|
63
|
-
```bash
|
|
64
|
-
agent-browser screenshot page.png # 保存截图
|
|
65
|
-
agent-browser screenshot --full # 全页面截图
|
|
66
|
-
agent-browser screenshot --annotate # 带编号标签的截图
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### 5. 关闭浏览器
|
|
70
|
-
```bash
|
|
71
|
-
agent-browser close
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## 常用命令
|
|
75
|
-
|
|
76
|
-
### 页面导航
|
|
77
|
-
```bash
|
|
78
|
-
agent-browser open <url> # 打开 URL
|
|
79
|
-
agent-browser back # 后退
|
|
80
|
-
agent-browser forward # 前进
|
|
81
|
-
agent-browser reload # 刷新
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### 元素交互
|
|
85
|
-
```bash
|
|
86
|
-
agent-browser click <sel> # 点击元素
|
|
87
|
-
agent-browser dblclick <sel> # 双击
|
|
88
|
-
agent-browser hover <sel> # 悬停
|
|
89
|
-
agent-browser focus <sel> # 聚焦
|
|
90
|
-
agent-browser fill <sel> <text> # 清空并填写
|
|
91
|
-
agent-browser type <sel> <text> # 追加输入
|
|
92
|
-
agent-browser press <key> # 按键(Enter, Tab, Control+a)
|
|
93
|
-
agent-browser select <sel> <value> # 下拉选择
|
|
94
|
-
agent-browser check <sel> # 勾选
|
|
95
|
-
agent-browser scroll <dir> [px] # 滚动(up/down/left/right)
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### 获取信息
|
|
99
|
-
```bash
|
|
100
|
-
agent-browser get text <sel> # 获取文本
|
|
101
|
-
agent-browser get html <sel> # 获取 HTML
|
|
102
|
-
agent-browser get value <sel> # 获取输入值
|
|
103
|
-
agent-browser get attr <sel> <attr> # 获取属性
|
|
104
|
-
agent-browser get title # 获取标题
|
|
105
|
-
agent-browser get url # 获取 URL
|
|
106
|
-
agent-browser get count <sel> # 计数元素
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### 状态检查
|
|
110
|
-
```bash
|
|
111
|
-
agent-browser is visible <sel> # 是否可见
|
|
112
|
-
agent-browser is enabled <sel> # 是否可用
|
|
113
|
-
agent-browser is checked <sel> # 是否勾选
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### 语义定位器(AI 推荐)
|
|
117
|
-
```bash
|
|
118
|
-
# 按 ARIA 角色查找
|
|
119
|
-
agent-browser find role button click --name "Submit"
|
|
120
|
-
agent-browser find role link text --name "More"
|
|
121
|
-
|
|
122
|
-
# 按文本查找
|
|
123
|
-
agent-browser find text "Sign In" click
|
|
124
|
-
|
|
125
|
-
# 按标签查找
|
|
126
|
-
agent-browser find label "Email" fill "test@test.com"
|
|
127
|
-
|
|
128
|
-
# 按占位符查找
|
|
129
|
-
agent-browser find placeholder "Search..." fill "query"
|
|
130
|
-
|
|
131
|
-
# 按 testid 查找
|
|
132
|
-
agent-browser find testid "submit-btn" click
|
|
133
|
-
|
|
134
|
-
# 位置选择
|
|
135
|
-
agent-browser find first ".item" click
|
|
136
|
-
agent-browser find last "a" click
|
|
137
|
-
agent-browser find nth 2 "a" text
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### 等待
|
|
141
|
-
```bash
|
|
142
|
-
agent-browser wait <selector> # 等待元素可见
|
|
143
|
-
agent-browser wait <ms> # 等待毫秒
|
|
144
|
-
agent-browser wait --text "Welcome" # 等待文本出现
|
|
145
|
-
agent-browser wait --url "**/dash" # 等待 URL 匹配
|
|
146
|
-
agent-browser wait --load networkidle # 等待网络空闲
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### 网络拦截
|
|
150
|
-
```bash
|
|
151
|
-
agent-browser network route <url> --abort # 阻止请求
|
|
152
|
-
agent-browser network route <url> --body '<json>' # Mock 响应
|
|
153
|
-
agent-browser network requests # 查看请求
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### 键盘操作
|
|
157
|
-
```bash
|
|
158
|
-
agent-browser keyboard type "Hello" # 键盘输入
|
|
159
|
-
agent-browser keyboard inserttext "text" # 直接插入文本
|
|
160
|
-
agent-browser keydown <key> # 按键按下
|
|
161
|
-
agent-browser keyup <key> # 按键释放
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### 鼠标操作
|
|
165
|
-
```bash
|
|
166
|
-
agent-browser mouse move <x> <y> # 移动鼠标
|
|
167
|
-
agent-browser mouse down [button] # 鼠标按下
|
|
168
|
-
agent-browser mouse up [button] # 鼠标释放
|
|
169
|
-
agent-browser mouse wheel <dy> [dx] # 滚轮滚动
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### 剪贴板
|
|
173
|
-
```bash
|
|
174
|
-
agent-browser clipboard read # 读取
|
|
175
|
-
agent-browser clipboard write "Hello" # 写入
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
## 选择器类型
|
|
179
|
-
|
|
180
|
-
### 引用(推荐用于 AI)
|
|
181
|
-
```
|
|
182
|
-
@e1, @e2, @e3 # 来自 snapshot 的元素引用
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
### CSS 选择器
|
|
186
|
-
```bash
|
|
187
|
-
agent-browser click "#submit"
|
|
188
|
-
agent-browser click ".class-name"
|
|
189
|
-
agent-browser click "div > button"
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### 文本和 XPath
|
|
193
|
-
```bash
|
|
194
|
-
agent-browser click "text=Submit"
|
|
195
|
-
agent-browser click "xpath=//button"
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
## 会话管理
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
# 多会话隔离
|
|
202
|
-
agent-browser --session session1 open site-a.com
|
|
203
|
-
agent-browser --session session2 open site-b.com
|
|
204
|
-
|
|
205
|
-
# 持久化配置
|
|
206
|
-
agent-browser --profile ~/.myapp-profile open myapp.com
|
|
207
|
-
|
|
208
|
-
# 自动保存/恢复状态
|
|
209
|
-
agent-browser --session-name myapp open twitter.com
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
## 认证管理
|
|
213
|
-
|
|
214
|
-
```bash
|
|
215
|
-
# 从已有 Chrome 导入认证状态
|
|
216
|
-
agent-browser --auto-connect state save ./auth.json
|
|
217
|
-
agent-browser --state ./auth.json open app.com
|
|
218
|
-
|
|
219
|
-
# 或者用 session-name 自动持久化
|
|
220
|
-
agent-browser --session-name myapp state load ./auth.json
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
## 调试功能
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
agent-browser --headed # 显示浏览器窗口
|
|
227
|
-
agent-browser console # 查看控制台消息
|
|
228
|
-
agent-browser errors # 查看页面错误
|
|
229
|
-
agent-browser highlight <sel> # 高亮元素
|
|
230
|
-
agent-browser inspect # 打开 DevTools
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
## 选项
|
|
234
|
-
|
|
235
|
-
| 选项 | 说明 |
|
|
236
|
-
|------|------|
|
|
237
|
-
| `--session <name>` | 使用隔离会话 |
|
|
238
|
-
| `--profile <path>` | 持久化浏览器配置目录 |
|
|
239
|
-
| `--state <path>` | 加载存储状态文件 |
|
|
240
|
-
| `--headers <json>` | 设置 HTTP 头 |
|
|
241
|
-
| `--headed` | 显示浏览器窗口 |
|
|
242
|
-
| `--json` | JSON 输出(AI 推荐) |
|
|
243
|
-
| `--annotate` | 带编号标签的截图 |
|
|
244
|
-
| `--cdp <port>` | 通过 CDP 连接 |
|
|
245
|
-
| `--allowed-domains` | 限制允许的域名 |
|
|
246
|
-
| `--max-output <n>` | 最大输出字符数 |
|
|
247
|
-
|
|
248
|
-
## 最佳实践
|
|
249
|
-
|
|
250
|
-
### AI 推荐的交互流程
|
|
251
|
-
```bash
|
|
252
|
-
# 1. 打开并获取快照
|
|
253
|
-
agent-browser open example.com
|
|
254
|
-
agent-browser snapshot -i --json # AI 解析树和引用
|
|
255
|
-
|
|
256
|
-
# 2. AI 从快照识别目标元素
|
|
257
|
-
# 3. 使用引用执行操作
|
|
258
|
-
agent-browser click @e2
|
|
259
|
-
agent-browser fill @e3 "input text"
|
|
260
|
-
|
|
261
|
-
# 4. 页面变化后重新获取快照
|
|
262
|
-
agent-browser snapshot -i --json
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
### 命令链
|
|
266
|
-
```bash
|
|
267
|
-
# 使用 && 链接多个命令
|
|
268
|
-
agent-browser open example.com && agent-browser wait --load networkidle && agent-browser snapshot -i
|
|
269
|
-
|
|
270
|
-
# 管道输入批量命令
|
|
271
|
-
echo '[["open","https://example.com"],["snapshot","-i"],["click","@e1"]]' | agent-browser batch --json
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
### 处理弹窗
|
|
275
|
-
```bash
|
|
276
|
-
agent-browser dialog accept # 接受弹窗
|
|
277
|
-
agent-browser dialog dismiss # 拒绝弹窗
|
|
278
|
-
agent-browser dialog status # 检查弹窗状态
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
### 标签页操作
|
|
282
|
-
```bash
|
|
283
|
-
agent-browser tab # 列出标签
|
|
284
|
-
agent-browser tab new [url] # 新建标签
|
|
285
|
-
agent-browser tab 1 # 切换到标签 1
|
|
286
|
-
agent-browser tab close [n] # 关闭标签
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
## 注意事项
|
|
290
|
-
|
|
291
|
-
1. **首次使用**: 需要运行 `agent-browser install` 下载 Chrome
|
|
292
|
-
2. **超时**: 默认操作超时 25 秒,可通过 `AGENT_BROWSER_DEFAULT_TIMEOUT` 调整
|
|
293
|
-
3. **安全**: 敏感操作使用 `--confirm-actions eval,download` 确认
|
|
294
|
-
4. **会话**: 不同会话有独立的 cookies、历史、认证状态
|
|
295
|
-
5. **引用稳定性**: 每次 `snapshot` 后引用可能变化,需重新获取
|
|
296
|
-
|
|
297
|
-
## 故障排除
|
|
298
|
-
|
|
299
|
-
```bash
|
|
300
|
-
# 查看帮助
|
|
301
|
-
agent-browser --help
|
|
302
|
-
|
|
303
|
-
# 调试模式
|
|
304
|
-
agent-browser open example.com --debug
|
|
305
|
-
|
|
306
|
-
# 安装 Chrome
|
|
307
|
-
agent-browser install
|
|
308
|
-
|
|
309
|
-
# 升级
|
|
310
|
-
agent-browser upgrade
|
|
311
|
-
```
|