@agentunion/kite 1.3.2 → 1.5.0
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/CHANGELOG.md +302 -0
- package/cli.js +119 -4
- package/core/dependency_checker.py +250 -0
- package/core/env_checker.py +490 -0
- package/dependencies_lock.json +128 -0
- package/extensions/agents/assistant/entry.py +111 -1
- package/extensions/agents/assistant/server.py +279 -215
- package/extensions/channels/acp_channel/entry.py +111 -1
- package/extensions/channels/acp_channel/module.md +23 -22
- package/extensions/channels/acp_channel/server.py +279 -215
- package/extensions/event_hub_bench/entry.py +107 -1
- package/extensions/services/backup/entry.py +306 -21
- package/extensions/services/backup/module.md +24 -22
- package/extensions/services/evol/auth_manager.py +443 -0
- package/extensions/services/evol/config.yaml +149 -0
- package/extensions/services/evol/config_loader.py +117 -0
- package/extensions/services/evol/entry.py +406 -0
- package/extensions/services/evol/evol_api.py +173 -0
- package/extensions/services/evol/evol_config.json5 +29 -0
- package/extensions/services/evol/migrate_tokens.py +122 -0
- package/extensions/services/evol/module.md +32 -0
- package/extensions/services/evol/pairing.py +250 -0
- package/extensions/services/evol/pairing_codes.jsonl +1 -0
- package/extensions/services/evol/relay.py +682 -0
- package/extensions/services/evol/relay_config.json5 +67 -0
- package/extensions/services/evol/routes/__init__.py +1 -0
- package/extensions/services/evol/routes/routes_management_ws.py +127 -0
- package/extensions/services/evol/routes/routes_rpc.py +89 -0
- package/extensions/services/evol/routes/routes_test.py +61 -0
- package/extensions/services/evol/server.py +875 -0
- package/extensions/services/evol/static/css/style.css +1200 -0
- package/extensions/services/evol/static/index.html +781 -0
- package/extensions/services/evol/static/index_evol.html +14 -0
- package/extensions/services/evol/static/js/app.js +6304 -0
- package/extensions/services/evol/static/js/auth.js +326 -0
- package/extensions/services/evol/static/js/dialog.js +285 -0
- package/extensions/services/evol/static/js/evol-app-fixed.js +50 -0
- package/extensions/services/evol/static/js/evol-app.js +1949 -0
- package/extensions/services/evol/static/js/evol-app.js.bak +1800 -0
- package/extensions/services/evol/static/js/kernel-client-example.js +228 -0
- package/extensions/services/evol/static/js/kernel-client.js +396 -0
- package/extensions/services/evol/static/js/main.js +141 -0
- package/extensions/services/evol/static/js/registry-tests.js +585 -0
- package/extensions/services/evol/static/js/stats.js +217 -0
- package/extensions/services/evol/static/js/token-manager.js +175 -0
- package/extensions/services/evol/static/pairing.html +248 -0
- package/extensions/services/evol/static/test_registry.html +262 -0
- package/extensions/services/evol/static/test_relay.html +462 -0
- package/extensions/services/evol/stats_manager.py +240 -0
- package/extensions/services/model_service/entry.py +167 -19
- package/extensions/services/model_service/module.md +21 -22
- package/extensions/services/proxy/.claude/settings.local.json +13 -0
- package/extensions/services/proxy/CHANGELOG_20260308.md +258 -0
- package/extensions/services/proxy/_fix_prints.py +133 -0
- package/extensions/services/proxy/_fix_prints2.py +87 -0
- package/extensions/services/proxy/agentcp/LICENCE +178 -0
- package/extensions/services/proxy/agentcp/README copy.md +85 -0
- package/extensions/services/proxy/agentcp/README.md +260 -0
- package/extensions/services/proxy/agentcp/__init__.py +16 -0
- package/extensions/services/proxy/agentcp/agent.py +4 -0
- package/extensions/services/proxy/agentcp/agentcp.py +2494 -0
- package/extensions/services/proxy/agentcp/agentprofile.json +89 -0
- package/extensions/services/proxy/agentcp/ap/__init__.py +16 -0
- package/extensions/services/proxy/agentcp/ap/ap_client.py +316 -0
- package/extensions/services/proxy/agentcp/assets/images/wechat_qr.png +0 -0
- package/extensions/services/proxy/agentcp/backup/metrics.json +31 -0
- package/extensions/services/proxy/agentcp/base/__init__.py +20 -0
- package/extensions/services/proxy/agentcp/base/auth_client.py +257 -0
- package/extensions/services/proxy/agentcp/base/client.py +112 -0
- package/extensions/services/proxy/agentcp/base/env.py +34 -0
- package/extensions/services/proxy/agentcp/base/html_util.py +336 -0
- package/extensions/services/proxy/agentcp/base/log.py +98 -0
- package/extensions/services/proxy/agentcp/ca/__init__.py +17 -0
- package/extensions/services/proxy/agentcp/ca/ca_client.py +414 -0
- package/extensions/services/proxy/agentcp/ca/ca_root.py +74 -0
- package/extensions/services/proxy/agentcp/context/__init__.py +20 -0
- package/extensions/services/proxy/agentcp/context/context.py +73 -0
- package/extensions/services/proxy/agentcp/context/exceptions.py +114 -0
- package/extensions/services/proxy/agentcp/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/create_profile_weather.py +125 -0
- package/extensions/services/proxy/agentcp/db/__init__.py +15 -0
- package/extensions/services/proxy/agentcp/db/db_mananger.py +550 -0
- package/extensions/services/proxy/agentcp/docs/UDP_HEARTBEAT_FIX_REPORT.md +265 -0
- package/extensions/services/proxy/agentcp/docs/heartbeat_issue_analysis.md +291 -0
- package/extensions/services/proxy/agentcp/file/__init__.py +16 -0
- package/extensions/services/proxy/agentcp/file/file_client.py +141 -0
- package/extensions/services/proxy/agentcp/file/wss_binary_message.py +137 -0
- package/extensions/services/proxy/agentcp/hcp.py +299 -0
- package/extensions/services/proxy/agentcp/heartbeat/__init__.py +16 -0
- package/extensions/services/proxy/agentcp/heartbeat/heartbeat_client.py +360 -0
- package/extensions/services/proxy/agentcp/improved_scheduler.py +498 -0
- package/extensions/services/proxy/agentcp/llm_agent_utils.py +249 -0
- package/extensions/services/proxy/agentcp/llm_server.py +172 -0
- package/extensions/services/proxy/agentcp/mermaid.py +210 -0
- package/extensions/services/proxy/agentcp/message.py +149 -0
- package/extensions/services/proxy/agentcp/metrics.py +256 -0
- package/extensions/services/proxy/agentcp/monitoring/__init__.py +20 -0
- package/extensions/services/proxy/agentcp/monitoring/global_monitor.py +27 -0
- package/extensions/services/proxy/agentcp/monitoring/metrics_store.py +325 -0
- package/extensions/services/proxy/agentcp/monitoring/monitoring_service.py +269 -0
- package/extensions/services/proxy/agentcp/monitoring/sliding_window.py +222 -0
- package/extensions/services/proxy/agentcp/monitoring/standalone_reader.py +224 -0
- package/extensions/services/proxy/agentcp/msg/__init__.py +21 -0
- package/extensions/services/proxy/agentcp/msg/connection_manager.py +456 -0
- package/extensions/services/proxy/agentcp/msg/message_client.py +2058 -0
- package/extensions/services/proxy/agentcp/msg/message_serialize.py +263 -0
- package/extensions/services/proxy/agentcp/msg/open_ai_message.py +88 -0
- package/extensions/services/proxy/agentcp/msg/session_manager.py +1062 -0
- package/extensions/services/proxy/agentcp/msg/stream_client.py +267 -0
- package/extensions/services/proxy/agentcp/msg/websocket_file_receiver.py +89 -0
- package/extensions/services/proxy/agentcp/msg/ws_logger.py +685 -0
- package/extensions/services/proxy/agentcp/msg/wss_binary_message.py +137 -0
- package/extensions/services/proxy/agentcp/requirements.txt +7 -0
- package/extensions/services/proxy/agentcp/samples/agent_graph/README.md +37 -0
- package/extensions/services/proxy/agentcp/samples/agent_graph/agentprofile.json +89 -0
- package/extensions/services/proxy/agentcp/samples/agent_graph/create_profile.py +138 -0
- package/extensions/services/proxy/agentcp/samples/agent_graph/main.py +164 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/create_profile.py +123 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/llm/create_profile.py +129 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/llm/env.json +5 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/llm/main.py +146 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/main.py +123 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/readme.md +379 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/search/create_profile.py +129 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/search/main.py +28 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/tool/create_profile.py +129 -0
- package/extensions/services/proxy/agentcp/samples/agent_use/tool/main.py +20 -0
- package/extensions/services/proxy/agentcp/samples/ali_amap/README.md +97 -0
- package/extensions/services/proxy/agentcp/samples/ali_amap/amap_agent.py +88 -0
- package/extensions/services/proxy/agentcp/samples/ali_amap/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/compute_agent/agent/powershell.py +228 -0
- package/extensions/services/proxy/agentcp/samples/compute_agent/agent/software.py +63 -0
- package/extensions/services/proxy/agentcp/samples/compute_agent/agent/tools.py +36 -0
- package/extensions/services/proxy/agentcp/samples/compute_agent/browser_user.py +41 -0
- package/extensions/services/proxy/agentcp/samples/deepseek/README.md +79 -0
- package/extensions/services/proxy/agentcp/samples/deepseek/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/deepseek/deepseek.py +42 -0
- package/extensions/services/proxy/agentcp/samples/dify_chat/README.md +78 -0
- package/extensions/services/proxy/agentcp/samples/dify_chat/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/dify_chat/dify_chat.py +47 -0
- package/extensions/services/proxy/agentcp/samples/dify_workflow/README.md +78 -0
- package/extensions/services/proxy/agentcp/samples/dify_workflow/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/dify_workflow/dify_workflow.py +46 -0
- package/extensions/services/proxy/agentcp/samples/executor/README.md +44 -0
- package/extensions/services/proxy/agentcp/samples/executor/agentprofile.json +89 -0
- package/extensions/services/proxy/agentcp/samples/executor/create_profile.py +139 -0
- package/extensions/services/proxy/agentcp/samples/executor/main.py +160 -0
- package/extensions/services/proxy/agentcp/samples/filereader/README.md +45 -0
- package/extensions/services/proxy/agentcp/samples/filereader/agentprofile.json +90 -0
- package/extensions/services/proxy/agentcp/samples/filereader/create_profile.py +137 -0
- package/extensions/services/proxy/agentcp/samples/filereader/main.py +253 -0
- package/extensions/services/proxy/agentcp/samples/filewriter/README.md +38 -0
- package/extensions/services/proxy/agentcp/samples/filewriter/agentprofile.json +91 -0
- package/extensions/services/proxy/agentcp/samples/filewriter/create_profile.py +138 -0
- package/extensions/services/proxy/agentcp/samples/filewriter/main.py +289 -0
- package/extensions/services/proxy/agentcp/samples/hcp/README.md +85 -0
- package/extensions/services/proxy/agentcp/samples/hcp/acp_weather_agent.zip +0 -0
- package/extensions/services/proxy/agentcp/samples/hcp/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/hcp/hcp.py +237 -0
- package/extensions/services/proxy/agentcp/samples/helloworld/README.md +68 -0
- package/extensions/services/proxy/agentcp/samples/helloworld/hello_world.py +40 -0
- package/extensions/services/proxy/agentcp/samples/llm_agent/MEADME.md +117 -0
- package/extensions/services/proxy/agentcp/samples/llm_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/llm_agent/qwen_agent.py +136 -0
- package/extensions/services/proxy/agentcp/samples/local_llm_agent/README.md +90 -0
- package/extensions/services/proxy/agentcp/samples/local_llm_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/local_llm_agent/main.py +49 -0
- package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/README.md +55 -0
- package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/query_llm_from_agent/main.py +23 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/README.md +103 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_api_agent/main.py +69 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/README.md +58 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/query_weather_from_agent/main.py +25 -0
- package/extensions/services/proxy/agentcp/samples/qwen3/README.md +71 -0
- package/extensions/services/proxy/agentcp/samples/qwen3/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/qwen3/qwen3.py +37 -0
- package/extensions/services/proxy/agentcp/samples/qwen3_tools/README.md +133 -0
- package/extensions/services/proxy/agentcp/samples/qwen3_tools/create_profile.py +126 -0
- package/extensions/services/proxy/agentcp/samples/qwen3_tools/qwen3_tools.py +98 -0
- package/extensions/services/proxy/agentcp/samples/search/create_profile_qwen.py +125 -0
- package/extensions/services/proxy/agentcp/samples/search/create_profile_search.py +125 -0
- package/extensions/services/proxy/agentcp/samples/search/qwen_agent.py +136 -0
- package/extensions/services/proxy/agentcp/samples/search/search_agent.py +170 -0
- package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/README.md +89 -0
- package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/create_profile.py +125 -0
- package/extensions/services/proxy/agentcp/samples/wrapper_agently_to_agent/main.py +44 -0
- package/extensions/services/proxy/agentcp/utils/__init__.py +15 -0
- package/extensions/services/proxy/agentcp/utils/file_util.py +117 -0
- package/extensions/services/proxy/agentcp/utils/proxy_bypass.py +99 -0
- package/extensions/services/proxy/agentcp/workflow.py +203 -0
- package/extensions/services/proxy/console_auth.py +109 -0
- package/extensions/services/proxy/evol/__init__.py +1 -0
- package/extensions/services/proxy/evol/config.py +37 -0
- package/extensions/services/proxy/evol/http/__init__.py +1 -0
- package/extensions/services/proxy/evol/http/async_http.py +551 -0
- package/extensions/services/proxy/evol/log.py +28 -0
- package/extensions/services/proxy/evol/presenter/__init__.py +2 -0
- package/extensions/services/proxy/evol/presenter/agentIdPresenter.py +1031 -0
- package/extensions/services/proxy/evol/presenter/apikeyPresenter.py +106 -0
- package/extensions/services/proxy/evol/presenter/configPresenter.py +1281 -0
- package/extensions/services/proxy/evol/presenter/userPresenter.py +477 -0
- package/extensions/services/proxy/evol/server/__init__.py +1 -0
- package/extensions/services/proxy/evol/server/claude_proxy_async.py +3430 -0
- package/extensions/services/proxy/evol/server/openclaw_proxy.py +1861 -0
- package/extensions/services/proxy/evol/server/proxy_config.py +15 -0
- package/extensions/services/proxy/evol/server/proxy_engine.py +501 -0
- package/extensions/services/proxy/evol/version.py +24 -0
- package/extensions/services/proxy/logs/websocket.log +260 -0
- package/extensions/services/proxy/main.py +240 -0
- package/extensions/services/proxy/requirements.txt +13 -0
- package/extensions/services/proxy/server.py +271 -0
- package/extensions/services/watchdog/entry.py +215 -26
- package/extensions/services/watchdog/module.md +1 -0
- package/extensions/services/watchdog/monitor.py +178 -38
- package/extensions/services/web/WEBSOCKET_STATUS.md +143 -0
- package/extensions/services/web/config_example.py +35 -0
- package/extensions/services/web/config_loader.py +110 -0
- package/extensions/services/web/entry.py +114 -26
- package/extensions/services/web/module.md +35 -24
- package/extensions/services/web/pairing.py +250 -0
- package/extensions/services/web/pairing_codes.jsonl +16 -0
- package/extensions/services/web/relay.py +643 -0
- package/extensions/services/web/relay_config.json5 +67 -0
- package/extensions/services/web/routes/routes_management_ws.py +127 -0
- package/extensions/services/web/routes/routes_rpc.py +89 -0
- package/extensions/services/web/routes/routes_test.py +61 -0
- package/extensions/services/web/routes/schemas.py +0 -22
- package/extensions/services/web/server.py +434 -99
- package/extensions/services/web/static/css/style.css +67 -28
- package/extensions/services/web/static/index.html +234 -44
- package/extensions/services/web/static/js/app.js +1335 -48
- package/extensions/services/web/static/js/kernel-client-example.js +161 -0
- package/extensions/services/web/static/js/kernel-client.js +383 -0
- package/extensions/services/web/static/js/registry-tests.js +558 -0
- package/extensions/services/web/static/js/token-manager.js +175 -0
- package/extensions/services/web/static/pairing.html +248 -0
- package/extensions/services/web/static/test_registry.html +262 -0
- package/extensions/services/web/web_config.json5 +29 -0
- package/kernel/entry.py +120 -32
- package/kernel/event_hub.py +141 -16
- package/kernel/module.md +60 -33
- package/kernel/registry_store.py +45 -36
- package/kernel/rpc_router.py +152 -59
- package/kernel/server.py +322 -26
- package/kite_cli/__init__.py +3 -0
- package/kite_cli/__main__.py +5 -0
- package/kite_cli/commands/__init__.py +1 -0
- package/kite_cli/commands/clean.py +101 -0
- package/kite_cli/commands/deps_install.py +67 -0
- package/kite_cli/commands/doctor.py +35 -0
- package/kite_cli/commands/env_check.py +45 -0
- package/kite_cli/commands/history.py +111 -0
- package/kite_cli/commands/info.py +96 -0
- package/kite_cli/commands/install.py +313 -0
- package/kite_cli/commands/list.py +143 -0
- package/kite_cli/commands/log.py +81 -0
- package/kite_cli/commands/prepare.py +49 -0
- package/kite_cli/commands/rollback.py +88 -0
- package/kite_cli/commands/search.py +73 -0
- package/kite_cli/commands/uninstall.py +85 -0
- package/kite_cli/commands/update.py +118 -0
- package/kite_cli/commands/venv_setup.py +56 -0
- package/kite_cli/core/__init__.py +1 -0
- package/kite_cli/core/checker.py +142 -0
- package/kite_cli/core/dependency.py +229 -0
- package/kite_cli/core/downloader.py +209 -0
- package/kite_cli/core/install_info.py +40 -0
- package/kite_cli/core/tool_installer.py +397 -0
- package/kite_cli/core/validator.py +78 -0
- package/kite_cli/main.py +317 -0
- package/kite_cli/utils/__init__.py +1 -0
- package/kite_cli/utils/i18n.py +252 -0
- package/kite_cli/utils/interactive.py +63 -0
- package/kite_cli/utils/operation_log.py +77 -0
- package/kite_cli/utils/paths.py +34 -0
- package/kite_cli/utils/version.py +308 -0
- package/launcher/entry.py +1124 -178
- package/launcher/logging_setup.py +104 -0
- package/launcher/module.md +46 -37
- package/launcher/module_scanner.py +11 -1
- package/main.py +4 -1
- package/package.json +9 -1
- package/python_version.json +4 -0
- package/requirements.txt +38 -0
- package/scripts/env-manager.js +328 -0
- package/scripts/plan_manager.py +315 -0
- package/scripts/python-env.js +79 -0
- package/scripts/scan_dependencies.py +461 -0
- package/scripts/setup-python-env.js +191 -0
- package/extensions/services/web/routes/routes_modules.py +0 -249
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"publisherInfo": {
|
|
4
|
+
"publisherAid": "122asad.agentunion.cn",
|
|
5
|
+
"organization": "agentunion.cn",
|
|
6
|
+
"certificationSignature": "agentunion.cn"
|
|
7
|
+
},
|
|
8
|
+
"lastUpdated": "2025-05-08T09:26:53Z",
|
|
9
|
+
"name": "文件读取",
|
|
10
|
+
"description": "读取agent目录下的文件",
|
|
11
|
+
"avaUrl": "https://t8.baidu.com/it/u=3471576641,3316469023&fm=193",
|
|
12
|
+
"capabilities": {
|
|
13
|
+
"core": [
|
|
14
|
+
"读取文件",
|
|
15
|
+
"查询文件列表"
|
|
16
|
+
],
|
|
17
|
+
"extended": []
|
|
18
|
+
},
|
|
19
|
+
"llm": {
|
|
20
|
+
"model": "qwen-plus",
|
|
21
|
+
"num_parameters": "",
|
|
22
|
+
"quantization_bits": "",
|
|
23
|
+
"context_length": ""
|
|
24
|
+
},
|
|
25
|
+
"references": {
|
|
26
|
+
"knowledgeBases": [
|
|
27
|
+
""
|
|
28
|
+
],
|
|
29
|
+
"tools": [
|
|
30
|
+
""
|
|
31
|
+
],
|
|
32
|
+
"companyInfo": [
|
|
33
|
+
""
|
|
34
|
+
],
|
|
35
|
+
"productInfo": [
|
|
36
|
+
""
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"authorization": {
|
|
40
|
+
"modes": [
|
|
41
|
+
"free"
|
|
42
|
+
],
|
|
43
|
+
"fee": {},
|
|
44
|
+
"description": "当前智能体免费使用,无费用",
|
|
45
|
+
"sla": {}
|
|
46
|
+
},
|
|
47
|
+
"input": {
|
|
48
|
+
"types": [
|
|
49
|
+
"content"
|
|
50
|
+
],
|
|
51
|
+
"formats": [
|
|
52
|
+
"json"
|
|
53
|
+
],
|
|
54
|
+
"examples": {
|
|
55
|
+
"type": "content",
|
|
56
|
+
"format": "text",
|
|
57
|
+
"content": "查询文件列表"
|
|
58
|
+
},
|
|
59
|
+
"semantics": [
|
|
60
|
+
""
|
|
61
|
+
],
|
|
62
|
+
"compatibleAids": [
|
|
63
|
+
"*"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"output": {
|
|
67
|
+
"types": [
|
|
68
|
+
"content"
|
|
69
|
+
],
|
|
70
|
+
"formats": [
|
|
71
|
+
"markdown"
|
|
72
|
+
],
|
|
73
|
+
"examples": {
|
|
74
|
+
"type": "content",
|
|
75
|
+
"format": "markdown",
|
|
76
|
+
"content": ""
|
|
77
|
+
},
|
|
78
|
+
"semantics": [
|
|
79
|
+
""
|
|
80
|
+
],
|
|
81
|
+
"compatibleAids": [
|
|
82
|
+
""
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"supportStream": true,
|
|
86
|
+
"supportAsync": true,
|
|
87
|
+
"permission": [
|
|
88
|
+
"*"
|
|
89
|
+
]
|
|
90
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Copyright 2025 ModelUnion Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from datetime import datetime, timezone
|
|
16
|
+
import agentcp
|
|
17
|
+
from pathlib import Path # 新增导入
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
def create_financial_analyzer_json(publisherInfo):
|
|
21
|
+
"""创建智能体能力、权限描述"""
|
|
22
|
+
data = {
|
|
23
|
+
"version": "1.0.0",
|
|
24
|
+
"publisherInfo": publisherInfo,
|
|
25
|
+
"lastUpdated": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
|
|
26
|
+
"name": "文件读取",
|
|
27
|
+
"description": "读取agent目录下的文件",
|
|
28
|
+
"avaUrl": "https://t8.baidu.com/it/u=3471576641,3316469023&fm=193",
|
|
29
|
+
"capabilities": {"core": ["读取文件", "查询文件列表"], "extended": []},
|
|
30
|
+
"llm": {
|
|
31
|
+
"model": "qwen-plus", # 模型名称,或使用aid
|
|
32
|
+
"num_parameters": "", # 模型参数量(如"7B"表示70亿参数)
|
|
33
|
+
"quantization_bits": "", # 量化位数(如Q4表示4位量化)
|
|
34
|
+
"context_length": "", # 上下文长度(如"4096"表示4096个token)
|
|
35
|
+
},
|
|
36
|
+
"references": {
|
|
37
|
+
"knowledgeBases": [""],
|
|
38
|
+
"tools": [""],
|
|
39
|
+
"companyInfo": [""],
|
|
40
|
+
"productInfo": [""],
|
|
41
|
+
},
|
|
42
|
+
"authorization": {
|
|
43
|
+
"modes": ["free"],
|
|
44
|
+
"fee": {},
|
|
45
|
+
"description": "当前智能体免费使用,无费用",
|
|
46
|
+
"sla": {},
|
|
47
|
+
},
|
|
48
|
+
"input": {
|
|
49
|
+
"types": [
|
|
50
|
+
"content"
|
|
51
|
+
], # 目前支持"content", "search", "reasoning_content", "error", 'file',后续会支持语音视频流
|
|
52
|
+
"formats": ["json"], # 详细类型
|
|
53
|
+
"examples": {
|
|
54
|
+
"type": "content",
|
|
55
|
+
"format": "text",
|
|
56
|
+
"content": "查询文件列表",
|
|
57
|
+
},
|
|
58
|
+
"semantics": [""],
|
|
59
|
+
"compatibleAids": ["*"],
|
|
60
|
+
},
|
|
61
|
+
"output": {
|
|
62
|
+
"types": ["content"],
|
|
63
|
+
"formats": ["markdown"],
|
|
64
|
+
"examples": {"type": "content", "format": "markdown", "content": ""},
|
|
65
|
+
"semantics": [""],
|
|
66
|
+
"compatibleAids": [""],
|
|
67
|
+
},
|
|
68
|
+
"supportStream": True, # False代表当前智能体不支持流式输出
|
|
69
|
+
"supportAsync": True,
|
|
70
|
+
"permission": ["*"],
|
|
71
|
+
}
|
|
72
|
+
return data
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def write_agent_profile_json(json_data):
|
|
76
|
+
try:
|
|
77
|
+
import os
|
|
78
|
+
|
|
79
|
+
json_path = Path(__file__).resolve()
|
|
80
|
+
json_dir = json_path.parent
|
|
81
|
+
json_file = os.path.join(json_dir, "agentprofile.json")
|
|
82
|
+
with open(json_file, "w", encoding="utf-8") as f:
|
|
83
|
+
json.dump(json_data, f, ensure_ascii=False, indent=2)
|
|
84
|
+
print("智能体描述文件已保存至当前目录下agentprofile.json")
|
|
85
|
+
except Exception as e:
|
|
86
|
+
print(f"文件写入失败: {str(e)}")
|
|
87
|
+
exit(1)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
if __name__ == "__main__":
|
|
91
|
+
# 创建JSON数据
|
|
92
|
+
# 将加密种子修改为自己的加密种子,可以是随机字符串,也可以是固定字符串,只要保证一致即可。
|
|
93
|
+
acp = agentcp.AgentCP(".", seed_password="888777", debug=False)
|
|
94
|
+
agentid_list = acp.get_aid_list()
|
|
95
|
+
agentid: agentcp.AgentID = None
|
|
96
|
+
while agentid is None:
|
|
97
|
+
print("请选择一个身份(aid):")
|
|
98
|
+
for i, agentid in enumerate(agentid_list):
|
|
99
|
+
print(f"{i+1}. {agentid}")
|
|
100
|
+
print(f"{len(agentid_list)+1}. 创建一个新的身份(aid)")
|
|
101
|
+
choice = input("请输入数字选择一个身份(aid): ")
|
|
102
|
+
try:
|
|
103
|
+
choice = int(choice) - 1
|
|
104
|
+
if choice < 0 or choice > len(agentid_list):
|
|
105
|
+
raise ValueError
|
|
106
|
+
if choice == len(agentid_list):
|
|
107
|
+
aid = input("请输入名称: ")
|
|
108
|
+
agentid = acp.create_aid("agentunion.cn", aid)
|
|
109
|
+
if agentid is None:
|
|
110
|
+
print("创建身份(aid)失败,请打开日志查看原因")
|
|
111
|
+
exit(1)
|
|
112
|
+
agentid_list = acp.get_aid_list()
|
|
113
|
+
else:
|
|
114
|
+
agentid = acp.load_aid(agentid_list[choice])
|
|
115
|
+
if agentid is None:
|
|
116
|
+
print("加载身份(aid)失败,请打开日志查看原因")
|
|
117
|
+
exit(1)
|
|
118
|
+
except ValueError:
|
|
119
|
+
print("无效的选择,请重新输入。")
|
|
120
|
+
print(f"当前选择的身份(aid)是: {str(agentid)}")
|
|
121
|
+
agentid.init_ap_client()
|
|
122
|
+
json_data = create_financial_analyzer_json(agentid.get_publisher_info())
|
|
123
|
+
write_agent_profile_json(json_data)
|
|
124
|
+
select_result = input("是否将文件拷贝到agent公有数据目录下(Y/N): ")
|
|
125
|
+
if select_result.upper() != "Y":
|
|
126
|
+
print("程序运行结束")
|
|
127
|
+
exit(1)
|
|
128
|
+
agentid.create_agent_profile(json_data)
|
|
129
|
+
select_result = input("拷贝成功,是否同步到接入服务器(Y/N): ")
|
|
130
|
+
if select_result.upper() != "Y":
|
|
131
|
+
print("程序运行结束")
|
|
132
|
+
exit(1)
|
|
133
|
+
result = agentid.sync_public_files()
|
|
134
|
+
if result:
|
|
135
|
+
print("文件同步成功!")
|
|
136
|
+
else:
|
|
137
|
+
print("文件同步失败,请初始化ACP时打开日志查看")
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
# Copyright 2025 ModelUnion Inc.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from agentcp import AgentCP
|
|
16
|
+
import asyncio
|
|
17
|
+
import os
|
|
18
|
+
import re
|
|
19
|
+
import os
|
|
20
|
+
import json
|
|
21
|
+
|
|
22
|
+
class FileOperator:
|
|
23
|
+
"""文件操作类,负责安全地读取文本文件内容"""
|
|
24
|
+
|
|
25
|
+
def __init__(self, sandbox_root: str = None):
|
|
26
|
+
self.sandbox_root = sandbox_root or os.getcwd() # 默认使用当前工作目录
|
|
27
|
+
|
|
28
|
+
def is_text_file(self, file_path: str) -> bool:
|
|
29
|
+
"""
|
|
30
|
+
通过检查文件内容判断是否为文本文件
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
file_path: 文件路径
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
bool: 是否为文本文件
|
|
37
|
+
"""
|
|
38
|
+
try:
|
|
39
|
+
# 尝试以文本模式打开文件
|
|
40
|
+
with open(file_path, 'r', encoding='utf-8') as f:
|
|
41
|
+
# 读取前1024个字符
|
|
42
|
+
f.read(1024)
|
|
43
|
+
return True
|
|
44
|
+
except UnicodeDecodeError:
|
|
45
|
+
# 如果解码失败,说明不是文本文件
|
|
46
|
+
return False
|
|
47
|
+
except Exception:
|
|
48
|
+
# 处理其他异常,如文件不存在等,默认不是文本文件
|
|
49
|
+
return False
|
|
50
|
+
|
|
51
|
+
def extract_file_path(self, text: str) -> str:
|
|
52
|
+
"""从文本中提取文件名(不需要完整路径)"""
|
|
53
|
+
match = re.search(r"(?:读取|打开|查看)文件\s*([^\s\/\\]+)", text)
|
|
54
|
+
return match.group(1) if match else None
|
|
55
|
+
|
|
56
|
+
def sanitize_path(self, filename: str) -> str:
|
|
57
|
+
"""遍历sandbox目录,找到这个文件"""
|
|
58
|
+
def recursive_search(root_dir):
|
|
59
|
+
try:
|
|
60
|
+
for root, dirs, files in os.walk(root_dir):
|
|
61
|
+
if filename in files:
|
|
62
|
+
full_path = os.path.join(root, filename)
|
|
63
|
+
normalized_path = os.path.normpath(full_path)
|
|
64
|
+
return normalized_path
|
|
65
|
+
except:
|
|
66
|
+
return None
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
return recursive_search(self.sandbox_root)
|
|
70
|
+
|
|
71
|
+
def walk_directory(self):
|
|
72
|
+
"""
|
|
73
|
+
遍历目录并打印所有文件和文件夹
|
|
74
|
+
"""
|
|
75
|
+
filenamess = []
|
|
76
|
+
for root, dirs, files in os.walk(self.sandbox_root):
|
|
77
|
+
for file in files:
|
|
78
|
+
filenamess.append(file)
|
|
79
|
+
return filenamess
|
|
80
|
+
|
|
81
|
+
def exist_file(self, filename):
|
|
82
|
+
"""
|
|
83
|
+
检查文件是否存在
|
|
84
|
+
"""
|
|
85
|
+
safe_path = self.sanitize_path(filename)
|
|
86
|
+
return os.path.exists(safe_path)
|
|
87
|
+
|
|
88
|
+
def read_file(self, file_path: str) -> str:
|
|
89
|
+
"""
|
|
90
|
+
安全地读取文本文件内容
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
file_path: 文件路径
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
文件内容字符串
|
|
97
|
+
|
|
98
|
+
Raises:
|
|
99
|
+
ValueError: 如果文件不是文本格式
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
safe_path = self.sanitize_path(file_path)
|
|
103
|
+
if not safe_path:
|
|
104
|
+
raise ValueError("文件不存在")
|
|
105
|
+
if not self.is_text_file(safe_path):
|
|
106
|
+
raise ValueError("只能读取文本文件")
|
|
107
|
+
with open(safe_path, "r") as file:
|
|
108
|
+
return file.read()
|
|
109
|
+
|
|
110
|
+
def parse_command(text):
|
|
111
|
+
if not text:
|
|
112
|
+
return False
|
|
113
|
+
if text.find("查询") >=0 or text.find("列表") >=0:
|
|
114
|
+
return 'list'
|
|
115
|
+
if text.find("读取") >=0 or text.find("查看") >=0:
|
|
116
|
+
return 'read'
|
|
117
|
+
|
|
118
|
+
class FileAgent:
|
|
119
|
+
def __init__(self, endpoint: str, name: str):
|
|
120
|
+
"""
|
|
121
|
+
初始化文件Agent
|
|
122
|
+
"""
|
|
123
|
+
self.acp = AgentCP("./", seed_password="888777")
|
|
124
|
+
self.endpoint = endpoint
|
|
125
|
+
self.name = name
|
|
126
|
+
self.aid = None
|
|
127
|
+
self.last_command = ''
|
|
128
|
+
|
|
129
|
+
async def message_handler(self, msg):
|
|
130
|
+
"""
|
|
131
|
+
消息处理器 - 根据消息内容安全地读取文件
|
|
132
|
+
{
|
|
133
|
+
'session_id': '1831173476580327424',
|
|
134
|
+
'request_id': '', 'message_id': '9',
|
|
135
|
+
'ref_msg_id': '', 'sender': 'samplesdeveloper.agentunion.cn',
|
|
136
|
+
'receiver': 'guest_1831158907166261248.agentunion.cn',
|
|
137
|
+
'message': '[{"type": "text", "status": "success", "timestamp": 1746343146261,
|
|
138
|
+
"content": "{\\"text\\":\\"\\u8bfb\\u53d6\\u6587\\u4ef6agentprofile.json\\",\\"files\\":[],\\"links\\":[],\\"search\\":false,\\"think\\":false}",
|
|
139
|
+
"stream": false, "prompt": null, "extra": null, "artifact": null}]',
|
|
140
|
+
'timestamp': '1746343146265'
|
|
141
|
+
}
|
|
142
|
+
"""
|
|
143
|
+
try:
|
|
144
|
+
ref_msg_id = msg.get("ref_msg_id")
|
|
145
|
+
content = msg.get("message", "\"{}\"")
|
|
146
|
+
content = json.loads(content)[0]["content"]
|
|
147
|
+
content = json.loads(content)
|
|
148
|
+
text = content.get("text", "")
|
|
149
|
+
command = parse_command(text)
|
|
150
|
+
print(f"收到消息: {content}")
|
|
151
|
+
|
|
152
|
+
if self.last_command == 'read':
|
|
153
|
+
self.last_command = ''
|
|
154
|
+
return await self.read_file(msg, text)
|
|
155
|
+
elif command == 'list':
|
|
156
|
+
files = self.file_operator.walk_directory()
|
|
157
|
+
if not files:
|
|
158
|
+
await self._send_reply(msg, "当前目录下没有文件")
|
|
159
|
+
return True
|
|
160
|
+
to = "文件列表<br>" + "<br>".join(files)
|
|
161
|
+
await self._send_reply(msg, to)
|
|
162
|
+
return True
|
|
163
|
+
elif command == 'read':
|
|
164
|
+
self.last_command = 'read'
|
|
165
|
+
files = self.file_operator.walk_directory()
|
|
166
|
+
if not files:
|
|
167
|
+
await self._send_reply(msg, "当前目录下没有文件")
|
|
168
|
+
return True
|
|
169
|
+
to = "读取哪一个文件?<br>" + "<br>".join(files)
|
|
170
|
+
print(f'send message: {to}')
|
|
171
|
+
await self._send_reply(msg, to)
|
|
172
|
+
return True
|
|
173
|
+
else:
|
|
174
|
+
await self._send_reply(msg, "你可以对我说: <br>读取文件<br>查询文件")
|
|
175
|
+
except Exception as e:
|
|
176
|
+
print(f"处理消息出错: {str(e)}")
|
|
177
|
+
await self._send_reply(msg, f"处理文件时出错: {str(e)}")
|
|
178
|
+
return False
|
|
179
|
+
|
|
180
|
+
async def read_file(self, msg, text):
|
|
181
|
+
try:
|
|
182
|
+
filename = self.file_operator.extract_file_path(text) # 现在只获取文件名
|
|
183
|
+
if not filename:
|
|
184
|
+
try:
|
|
185
|
+
print(f'未提供文件名尝试读取: {text}')
|
|
186
|
+
file_content = self.file_operator.read_file(text) # 直接传入文件名
|
|
187
|
+
await self._send_reply(msg, f"文件内容:<br>{file_content}")
|
|
188
|
+
return
|
|
189
|
+
except Exception as e:
|
|
190
|
+
print(f"处理消息出错: {str(e)}")
|
|
191
|
+
try:
|
|
192
|
+
file_content = self.file_operator.read_file(filename) # 直接传入文件名
|
|
193
|
+
await self._send_reply(msg, f"文件内容:<br>{file_content}")
|
|
194
|
+
except PermissionError:
|
|
195
|
+
await self._send_reply(msg, "访问文件被拒绝")
|
|
196
|
+
except FileNotFoundError:
|
|
197
|
+
await self._send_reply(msg, f"文件不存在: {filename}")
|
|
198
|
+
except ValueError as e:
|
|
199
|
+
await self._send_reply(msg, f"{str(e)}")
|
|
200
|
+
return True
|
|
201
|
+
except Exception as e:
|
|
202
|
+
print(f"处理消息出错: {str(e)}")
|
|
203
|
+
await self._send_reply(msg, f"处理文件时出错: {str(e)}")
|
|
204
|
+
return False
|
|
205
|
+
|
|
206
|
+
async def _send_reply(self, original_msg, content: str):
|
|
207
|
+
"""
|
|
208
|
+
发送回复消息
|
|
209
|
+
"""
|
|
210
|
+
try:
|
|
211
|
+
self.aid.send_message_content(
|
|
212
|
+
to_aid_list=[original_msg.get("sender")],
|
|
213
|
+
session_id=original_msg.get("session_id"),
|
|
214
|
+
llm_content=content)
|
|
215
|
+
except Exception as e:
|
|
216
|
+
print(f"发送回复消息出错: {str(e)}")
|
|
217
|
+
|
|
218
|
+
async def run(self):
|
|
219
|
+
"""
|
|
220
|
+
运行Agent
|
|
221
|
+
"""
|
|
222
|
+
try:
|
|
223
|
+
print("正在启动Agent...", self.endpoint, self.name)
|
|
224
|
+
self.aid = self.acp.create_aid(self.endpoint, self.name)
|
|
225
|
+
self.aid.add_message_handler(self.message_handler)
|
|
226
|
+
self.aid.online()
|
|
227
|
+
self.file_operator = FileOperator(self.aid.get_agent_public_path())
|
|
228
|
+
|
|
229
|
+
print("Agent已上线,等待文件读取指令...")
|
|
230
|
+
|
|
231
|
+
while True:
|
|
232
|
+
await asyncio.sleep(1)
|
|
233
|
+
|
|
234
|
+
except Exception as e:
|
|
235
|
+
print(f"发生错误: {str(e)}")
|
|
236
|
+
finally:
|
|
237
|
+
if self.aid:
|
|
238
|
+
self.aid.offline()
|
|
239
|
+
print("Agent已下线")
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
if __name__ == "__main__":
|
|
243
|
+
# 配置参数
|
|
244
|
+
ENDPOINT = "agentunion.cn"
|
|
245
|
+
AGENT_NAME = "122asad" # 请输入你的agent名称
|
|
246
|
+
|
|
247
|
+
# 创建并运行Agent
|
|
248
|
+
agent = FileAgent(
|
|
249
|
+
ENDPOINT,
|
|
250
|
+
AGENT_NAME,
|
|
251
|
+
)
|
|
252
|
+
# agent.test()
|
|
253
|
+
asyncio.run(agent.run())
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 文件操作Agent
|
|
2
|
+
|
|
3
|
+
这是一个基于ACP协议的文件操作Agent,可以实现文件读取、写入和查询功能。
|
|
4
|
+
```
|
|
5
|
+
# 安装依赖
|
|
6
|
+
pip install agentcp
|
|
7
|
+
```
|
|
8
|
+
## 功能特性
|
|
9
|
+
|
|
10
|
+
- ✅ 安全的文件读取和写入
|
|
11
|
+
- 🔄 支持文本文件内容检查
|
|
12
|
+
- 📂 支持遍历目录查看文件列表
|
|
13
|
+
- 🤖 交互式消息处理
|
|
14
|
+
|
|
15
|
+
## 使用说明
|
|
16
|
+
|
|
17
|
+
1. 启动Agent:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# 创建身份
|
|
21
|
+
python create_profile.py
|
|
22
|
+
|
|
23
|
+
# 修改main.py里的 AGENT_NAME 为你创建的身份信息
|
|
24
|
+
python main.py
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 交互说明
|
|
28
|
+
|
|
29
|
+
发送指令格式:
|
|
30
|
+
|
|
31
|
+
- 查询文件列表: "查询文件" 或 "列表"
|
|
32
|
+
- 读取文件内容: "读取文件" 或 "查看文件" (会进入交互模式)
|
|
33
|
+
- 写入文件内容: "写入文件" (会进入交互模式)
|
|
34
|
+
|
|
35
|
+
## 注意事项
|
|
36
|
+
|
|
37
|
+
- 文件操作限制在沙箱目录内(AgentID的共有数据目录)
|
|
38
|
+
- 只能操作文本文件
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"publisherInfo": {
|
|
3
|
+
"publisherAid": "w212.agentunion.cn",
|
|
4
|
+
"organization": "agentunion.cn",
|
|
5
|
+
"certificationSignature": "agentunion.cn"
|
|
6
|
+
},
|
|
7
|
+
"version": "1.0.0",
|
|
8
|
+
"lastUpdated": "2025-05-08T09:28:08Z",
|
|
9
|
+
"name": "文件读写",
|
|
10
|
+
"description": "读写agent目录下的文件",
|
|
11
|
+
"avaUrl": "https://t8.baidu.com/it/u=655275816,1648044724&fm=193",
|
|
12
|
+
"capabilities": {
|
|
13
|
+
"core": [
|
|
14
|
+
"读取文件",
|
|
15
|
+
"写入文件",
|
|
16
|
+
"查询文件列表"
|
|
17
|
+
],
|
|
18
|
+
"extended": []
|
|
19
|
+
},
|
|
20
|
+
"llm": {
|
|
21
|
+
"model": "qwen-plus",
|
|
22
|
+
"num_parameters": "",
|
|
23
|
+
"quantization_bits": "",
|
|
24
|
+
"context_length": ""
|
|
25
|
+
},
|
|
26
|
+
"references": {
|
|
27
|
+
"knowledgeBases": [
|
|
28
|
+
""
|
|
29
|
+
],
|
|
30
|
+
"tools": [
|
|
31
|
+
""
|
|
32
|
+
],
|
|
33
|
+
"companyInfo": [
|
|
34
|
+
""
|
|
35
|
+
],
|
|
36
|
+
"productInfo": [
|
|
37
|
+
""
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"authorization": {
|
|
41
|
+
"modes": [
|
|
42
|
+
"free"
|
|
43
|
+
],
|
|
44
|
+
"fee": {},
|
|
45
|
+
"description": "",
|
|
46
|
+
"sla": {}
|
|
47
|
+
},
|
|
48
|
+
"input": {
|
|
49
|
+
"types": [
|
|
50
|
+
"content"
|
|
51
|
+
],
|
|
52
|
+
"formats": [
|
|
53
|
+
"json"
|
|
54
|
+
],
|
|
55
|
+
"examples": {
|
|
56
|
+
"type": "content",
|
|
57
|
+
"format": "text",
|
|
58
|
+
"content": "查询文件列表"
|
|
59
|
+
},
|
|
60
|
+
"semantics": [
|
|
61
|
+
""
|
|
62
|
+
],
|
|
63
|
+
"compatibleAids": [
|
|
64
|
+
"*"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"output": {
|
|
68
|
+
"types": [
|
|
69
|
+
"content"
|
|
70
|
+
],
|
|
71
|
+
"formats": [
|
|
72
|
+
"markdown"
|
|
73
|
+
],
|
|
74
|
+
"examples": {
|
|
75
|
+
"type": "content",
|
|
76
|
+
"format": "markdown",
|
|
77
|
+
"content": ""
|
|
78
|
+
},
|
|
79
|
+
"semantics": [
|
|
80
|
+
""
|
|
81
|
+
],
|
|
82
|
+
"compatibleAids": [
|
|
83
|
+
""
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
"supportStream": true,
|
|
87
|
+
"supportAsync": true,
|
|
88
|
+
"permission": [
|
|
89
|
+
"*"
|
|
90
|
+
]
|
|
91
|
+
}
|