echo-agent 0.1.0__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.
- echo_agent-0.1.0/.gitignore +41 -0
- echo_agent-0.1.0/PKG-INFO +286 -0
- echo_agent-0.1.0/README.md +219 -0
- echo_agent-0.1.0/echo_agent/__init__.py +5 -0
- echo_agent-0.1.0/echo_agent/__main__.py +538 -0
- echo_agent-0.1.0/echo_agent/a2a/__init__.py +5 -0
- echo_agent-0.1.0/echo_agent/a2a/client.py +66 -0
- echo_agent-0.1.0/echo_agent/a2a/models.py +98 -0
- echo_agent-0.1.0/echo_agent/a2a/protocol.py +85 -0
- echo_agent-0.1.0/echo_agent/a2a/server.py +71 -0
- echo_agent-0.1.0/echo_agent/agent/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/agent/approval_gate.py +326 -0
- echo_agent-0.1.0/echo_agent/agent/compression/__init__.py +14 -0
- echo_agent-0.1.0/echo_agent/agent/compression/assembler.py +45 -0
- echo_agent-0.1.0/echo_agent/agent/compression/boundary.py +141 -0
- echo_agent-0.1.0/echo_agent/agent/compression/compressor.py +181 -0
- echo_agent-0.1.0/echo_agent/agent/compression/engine.py +88 -0
- echo_agent-0.1.0/echo_agent/agent/compression/pruner.py +150 -0
- echo_agent-0.1.0/echo_agent/agent/compression/summarizer.py +181 -0
- echo_agent-0.1.0/echo_agent/agent/compression/types.py +41 -0
- echo_agent-0.1.0/echo_agent/agent/compression/validator.py +96 -0
- echo_agent-0.1.0/echo_agent/agent/consolidation.py +96 -0
- echo_agent-0.1.0/echo_agent/agent/context.py +403 -0
- echo_agent-0.1.0/echo_agent/agent/executors/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/agent/executors/base.py +211 -0
- echo_agent-0.1.0/echo_agent/agent/executors/factory.py +34 -0
- echo_agent-0.1.0/echo_agent/agent/executors/remote.py +193 -0
- echo_agent-0.1.0/echo_agent/agent/loop.py +891 -0
- echo_agent-0.1.0/echo_agent/agent/multi_agent/__init__.py +15 -0
- echo_agent-0.1.0/echo_agent/agent/multi_agent/audit.py +19 -0
- echo_agent-0.1.0/echo_agent/agent/multi_agent/error_messages.py +35 -0
- echo_agent-0.1.0/echo_agent/agent/multi_agent/error_types.py +36 -0
- echo_agent-0.1.0/echo_agent/agent/multi_agent/models.py +37 -0
- echo_agent-0.1.0/echo_agent/agent/multi_agent/registry.py +41 -0
- echo_agent-0.1.0/echo_agent/agent/multi_agent/runtime.py +201 -0
- echo_agent-0.1.0/echo_agent/agent/pipeline/__init__.py +14 -0
- echo_agent-0.1.0/echo_agent/agent/pipeline/context_stage.py +219 -0
- echo_agent-0.1.0/echo_agent/agent/pipeline/inference_stage.py +433 -0
- echo_agent-0.1.0/echo_agent/agent/pipeline/response_stage.py +146 -0
- echo_agent-0.1.0/echo_agent/agent/pipeline/types.py +40 -0
- echo_agent-0.1.0/echo_agent/agent/planning/__init__.py +4 -0
- echo_agent-0.1.0/echo_agent/agent/planning/models.py +83 -0
- echo_agent-0.1.0/echo_agent/agent/planning/planner.py +57 -0
- echo_agent-0.1.0/echo_agent/agent/planning/reflection.py +54 -0
- echo_agent-0.1.0/echo_agent/agent/planning/strategies.py +183 -0
- echo_agent-0.1.0/echo_agent/agent/tools/__init__.py +167 -0
- echo_agent-0.1.0/echo_agent/agent/tools/base.py +149 -0
- echo_agent-0.1.0/echo_agent/agent/tools/circuit_breaker.py +82 -0
- echo_agent-0.1.0/echo_agent/agent/tools/clarify.py +42 -0
- echo_agent-0.1.0/echo_agent/agent/tools/code_exec.py +147 -0
- echo_agent-0.1.0/echo_agent/agent/tools/cronjob.py +93 -0
- echo_agent-0.1.0/echo_agent/agent/tools/delegate.py +393 -0
- echo_agent-0.1.0/echo_agent/agent/tools/filesystem.py +180 -0
- echo_agent-0.1.0/echo_agent/agent/tools/image_gen.py +65 -0
- echo_agent-0.1.0/echo_agent/agent/tools/knowledge.py +81 -0
- echo_agent-0.1.0/echo_agent/agent/tools/memory.py +198 -0
- echo_agent-0.1.0/echo_agent/agent/tools/message.py +39 -0
- echo_agent-0.1.0/echo_agent/agent/tools/notify.py +35 -0
- echo_agent-0.1.0/echo_agent/agent/tools/patch.py +178 -0
- echo_agent-0.1.0/echo_agent/agent/tools/process.py +139 -0
- echo_agent-0.1.0/echo_agent/agent/tools/registry.py +185 -0
- echo_agent-0.1.0/echo_agent/agent/tools/search.py +99 -0
- echo_agent-0.1.0/echo_agent/agent/tools/session_search.py +76 -0
- echo_agent-0.1.0/echo_agent/agent/tools/shell.py +164 -0
- echo_agent-0.1.0/echo_agent/agent/tools/skill_install.py +255 -0
- echo_agent-0.1.0/echo_agent/agent/tools/skills.py +177 -0
- echo_agent-0.1.0/echo_agent/agent/tools/task.py +104 -0
- echo_agent-0.1.0/echo_agent/agent/tools/todo.py +148 -0
- echo_agent-0.1.0/echo_agent/agent/tools/tts.py +77 -0
- echo_agent-0.1.0/echo_agent/agent/tools/vision.py +71 -0
- echo_agent-0.1.0/echo_agent/agent/tools/web.py +208 -0
- echo_agent-0.1.0/echo_agent/agent/tools/workflow.py +89 -0
- echo_agent-0.1.0/echo_agent/bus/__init__.py +11 -0
- echo_agent-0.1.0/echo_agent/bus/events.py +193 -0
- echo_agent-0.1.0/echo_agent/bus/queue.py +158 -0
- echo_agent-0.1.0/echo_agent/bus/rate_limiter.py +51 -0
- echo_agent-0.1.0/echo_agent/channels/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/channels/base.py +185 -0
- echo_agent-0.1.0/echo_agent/channels/cli.py +149 -0
- echo_agent-0.1.0/echo_agent/channels/cron.py +44 -0
- echo_agent-0.1.0/echo_agent/channels/dingtalk.py +195 -0
- echo_agent-0.1.0/echo_agent/channels/discord.py +359 -0
- echo_agent-0.1.0/echo_agent/channels/email.py +168 -0
- echo_agent-0.1.0/echo_agent/channels/feishu.py +240 -0
- echo_agent-0.1.0/echo_agent/channels/manager.py +417 -0
- echo_agent-0.1.0/echo_agent/channels/matrix.py +281 -0
- echo_agent-0.1.0/echo_agent/channels/qqbot.py +638 -0
- echo_agent-0.1.0/echo_agent/channels/qqbot_media.py +482 -0
- echo_agent-0.1.0/echo_agent/channels/slack.py +297 -0
- echo_agent-0.1.0/echo_agent/channels/telegram.py +275 -0
- echo_agent-0.1.0/echo_agent/channels/webhook.py +106 -0
- echo_agent-0.1.0/echo_agent/channels/wecom.py +152 -0
- echo_agent-0.1.0/echo_agent/channels/weixin.py +603 -0
- echo_agent-0.1.0/echo_agent/channels/whatsapp.py +138 -0
- echo_agent-0.1.0/echo_agent/cli/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/cli/colors.py +42 -0
- echo_agent-0.1.0/echo_agent/cli/evolution_cmd.py +299 -0
- echo_agent-0.1.0/echo_agent/cli/i18n/__init__.py +123 -0
- echo_agent-0.1.0/echo_agent/cli/i18n/en.py +275 -0
- echo_agent-0.1.0/echo_agent/cli/i18n/zh.py +275 -0
- echo_agent-0.1.0/echo_agent/cli/plugins_cmd.py +205 -0
- echo_agent-0.1.0/echo_agent/cli/prompt.py +102 -0
- echo_agent-0.1.0/echo_agent/cli/service.py +156 -0
- echo_agent-0.1.0/echo_agent/cli/setup.py +1111 -0
- echo_agent-0.1.0/echo_agent/cli/status.py +93 -0
- echo_agent-0.1.0/echo_agent/config/__init__.py +8 -0
- echo_agent-0.1.0/echo_agent/config/default.yaml +199 -0
- echo_agent-0.1.0/echo_agent/config/loader.py +125 -0
- echo_agent-0.1.0/echo_agent/config/schema.py +652 -0
- echo_agent-0.1.0/echo_agent/evaluation/__init__.py +4 -0
- echo_agent-0.1.0/echo_agent/evaluation/dataset.py +66 -0
- echo_agent-0.1.0/echo_agent/evaluation/metrics.py +70 -0
- echo_agent-0.1.0/echo_agent/evaluation/reporter.py +42 -0
- echo_agent-0.1.0/echo_agent/evaluation/runner.py +143 -0
- echo_agent-0.1.0/echo_agent/evolution/__init__.py +38 -0
- echo_agent-0.1.0/echo_agent/evolution/engine.py +335 -0
- echo_agent-0.1.0/echo_agent/evolution/evolver.py +397 -0
- echo_agent-0.1.0/echo_agent/evolution/gate.py +413 -0
- echo_agent-0.1.0/echo_agent/evolution/recorder.py +288 -0
- echo_agent-0.1.0/echo_agent/evolution/scheduler.py +133 -0
- echo_agent-0.1.0/echo_agent/evolution/store.py +331 -0
- echo_agent-0.1.0/echo_agent/evolution/tools.py +110 -0
- echo_agent-0.1.0/echo_agent/evolution/types.py +270 -0
- echo_agent-0.1.0/echo_agent/gateway/__init__.py +7 -0
- echo_agent-0.1.0/echo_agent/gateway/auth.py +178 -0
- echo_agent-0.1.0/echo_agent/gateway/editor.py +121 -0
- echo_agent-0.1.0/echo_agent/gateway/health.py +51 -0
- echo_agent-0.1.0/echo_agent/gateway/hooks.py +86 -0
- echo_agent-0.1.0/echo_agent/gateway/media.py +137 -0
- echo_agent-0.1.0/echo_agent/gateway/rate_limiter.py +72 -0
- echo_agent-0.1.0/echo_agent/gateway/router.py +86 -0
- echo_agent-0.1.0/echo_agent/gateway/server.py +570 -0
- echo_agent-0.1.0/echo_agent/gateway/session_context.py +57 -0
- echo_agent-0.1.0/echo_agent/gateway/session_policy.py +47 -0
- echo_agent-0.1.0/echo_agent/gateway/static/index.html +432 -0
- echo_agent-0.1.0/echo_agent/knowledge/__init__.py +5 -0
- echo_agent-0.1.0/echo_agent/knowledge/index.py +308 -0
- echo_agent-0.1.0/echo_agent/mcp/__init__.py +3 -0
- echo_agent-0.1.0/echo_agent/mcp/client.py +158 -0
- echo_agent-0.1.0/echo_agent/mcp/manager.py +161 -0
- echo_agent-0.1.0/echo_agent/mcp/oauth.py +208 -0
- echo_agent-0.1.0/echo_agent/mcp/security.py +79 -0
- echo_agent-0.1.0/echo_agent/mcp/tool_adapter.py +73 -0
- echo_agent-0.1.0/echo_agent/mcp/transport.py +353 -0
- echo_agent-0.1.0/echo_agent/memory/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/memory/consolidator.py +273 -0
- echo_agent-0.1.0/echo_agent/memory/contradiction.py +287 -0
- echo_agent-0.1.0/echo_agent/memory/forgetting.py +114 -0
- echo_agent-0.1.0/echo_agent/memory/retrieval.py +184 -0
- echo_agent-0.1.0/echo_agent/memory/reviewer.py +192 -0
- echo_agent-0.1.0/echo_agent/memory/store.py +706 -0
- echo_agent-0.1.0/echo_agent/memory/tiers.py +243 -0
- echo_agent-0.1.0/echo_agent/memory/types.py +168 -0
- echo_agent-0.1.0/echo_agent/memory/vectors.py +148 -0
- echo_agent-0.1.0/echo_agent/models/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/models/credential_pool.py +86 -0
- echo_agent-0.1.0/echo_agent/models/inference.py +98 -0
- echo_agent-0.1.0/echo_agent/models/provider.py +208 -0
- echo_agent-0.1.0/echo_agent/models/providers/__init__.py +209 -0
- echo_agent-0.1.0/echo_agent/models/providers/anthropic_provider.py +164 -0
- echo_agent-0.1.0/echo_agent/models/providers/bedrock_provider.py +261 -0
- echo_agent-0.1.0/echo_agent/models/providers/format_utils.py +198 -0
- echo_agent-0.1.0/echo_agent/models/providers/gemini_provider.py +159 -0
- echo_agent-0.1.0/echo_agent/models/providers/openai_provider.py +253 -0
- echo_agent-0.1.0/echo_agent/models/providers/openrouter_provider.py +38 -0
- echo_agent-0.1.0/echo_agent/models/rate_limiter.py +75 -0
- echo_agent-0.1.0/echo_agent/models/router.py +325 -0
- echo_agent-0.1.0/echo_agent/models/tokenizer.py +111 -0
- echo_agent-0.1.0/echo_agent/observability/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/observability/monitor.py +209 -0
- echo_agent-0.1.0/echo_agent/observability/spans.py +75 -0
- echo_agent-0.1.0/echo_agent/observability/telemetry.py +86 -0
- echo_agent-0.1.0/echo_agent/permissions/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/permissions/allowlist.py +97 -0
- echo_agent-0.1.0/echo_agent/permissions/manager.py +460 -0
- echo_agent-0.1.0/echo_agent/plugins/__init__.py +30 -0
- echo_agent-0.1.0/echo_agent/plugins/context.py +145 -0
- echo_agent-0.1.0/echo_agent/plugins/errors.py +23 -0
- echo_agent-0.1.0/echo_agent/plugins/hooks.py +126 -0
- echo_agent-0.1.0/echo_agent/plugins/loader.py +251 -0
- echo_agent-0.1.0/echo_agent/plugins/manager.py +216 -0
- echo_agent-0.1.0/echo_agent/plugins/manifest.py +70 -0
- echo_agent-0.1.0/echo_agent/runtime_paths.py +25 -0
- echo_agent-0.1.0/echo_agent/scheduler/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/scheduler/delivery.py +63 -0
- echo_agent-0.1.0/echo_agent/scheduler/service.py +398 -0
- echo_agent-0.1.0/echo_agent/security/__init__.py +11 -0
- echo_agent-0.1.0/echo_agent/security/capabilities.py +54 -0
- echo_agent-0.1.0/echo_agent/security/guards.py +265 -0
- echo_agent-0.1.0/echo_agent/security/path_policy.py +212 -0
- echo_agent-0.1.0/echo_agent/security/risk_classifier.py +75 -0
- echo_agent-0.1.0/echo_agent/security/smart_approval.py +60 -0
- echo_agent-0.1.0/echo_agent/security/tool_policy.py +159 -0
- echo_agent-0.1.0/echo_agent/session/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/session/manager.py +404 -0
- echo_agent-0.1.0/echo_agent/skills/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/skills/manager.py +279 -0
- echo_agent-0.1.0/echo_agent/skills/reviewer.py +163 -0
- echo_agent-0.1.0/echo_agent/skills/store.py +358 -0
- echo_agent-0.1.0/echo_agent/storage/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/storage/backend.py +111 -0
- echo_agent-0.1.0/echo_agent/storage/sqlite.py +523 -0
- echo_agent-0.1.0/echo_agent/tasks/__init__.py +20 -0
- echo_agent-0.1.0/echo_agent/tasks/manager.py +108 -0
- echo_agent-0.1.0/echo_agent/tasks/models.py +180 -0
- echo_agent-0.1.0/echo_agent/tasks/workflow.py +182 -0
- echo_agent-0.1.0/echo_agent/utils/__init__.py +0 -0
- echo_agent-0.1.0/echo_agent/utils/async_io.py +80 -0
- echo_agent-0.1.0/echo_agent/utils/text.py +91 -0
- echo_agent-0.1.0/pyproject.toml +86 -0
- echo_agent-0.1.0/scripts/install.sh +473 -0
- echo_agent-0.1.0/skills/development/plan/SKILL.md +54 -0
- echo_agent-0.1.0/skills/development/skill-creator/SKILL.md +270 -0
- echo_agent-0.1.0/skills/development/skill-creator/scripts/init_skill.py +226 -0
- echo_agent-0.1.0/skills/development/skill-creator/scripts/package_skill.py +146 -0
- echo_agent-0.1.0/skills/development/skill-creator/scripts/quick_validate.py +222 -0
- echo_agent-0.1.0/skills/productivity/summarize/SKILL.md +67 -0
- echo_agent-0.1.0/skills/productivity/weather/SKILL.md +49 -0
- echo_agent-0.1.0/skills/research/arxiv/SKILL.md +232 -0
- echo_agent-0.1.0/skills/research/arxiv/scripts/search_arxiv.py +115 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
.worktrees/
|
|
2
|
+
.assets
|
|
3
|
+
.docs
|
|
4
|
+
.env
|
|
5
|
+
*.pyc
|
|
6
|
+
dist/
|
|
7
|
+
build/
|
|
8
|
+
*.egg-info/
|
|
9
|
+
*.egg
|
|
10
|
+
*.pycs
|
|
11
|
+
*.pyo
|
|
12
|
+
*.pyd
|
|
13
|
+
*.pyw
|
|
14
|
+
*.pyz
|
|
15
|
+
*.pywz
|
|
16
|
+
*.pyzz
|
|
17
|
+
.venv/
|
|
18
|
+
venv/
|
|
19
|
+
__pycache__/
|
|
20
|
+
poetry.lock
|
|
21
|
+
.pytest_cache/
|
|
22
|
+
.ruff_cache/
|
|
23
|
+
.coverage
|
|
24
|
+
.coverage.*
|
|
25
|
+
htmlcov/
|
|
26
|
+
bridge/node_modules/
|
|
27
|
+
botpy.log
|
|
28
|
+
.DS_Store
|
|
29
|
+
|
|
30
|
+
# Editor / IDE
|
|
31
|
+
.idea/
|
|
32
|
+
.vscode/
|
|
33
|
+
*.swp
|
|
34
|
+
*.swo
|
|
35
|
+
|
|
36
|
+
# Claude Code local session/settings
|
|
37
|
+
.claude/
|
|
38
|
+
|
|
39
|
+
# Local runtime state and generated workspace data
|
|
40
|
+
/runtime/cron/jobs.json
|
|
41
|
+
/runtime/workspace/
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: echo-agent
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A modular AI agent framework with multi-channel support
|
|
5
|
+
Author: Echo Agent contributors
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: agent,ai,assistant,chatbot,runtime
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Requires-Python: >=3.11
|
|
14
|
+
Requires-Dist: aiohttp>=3.9
|
|
15
|
+
Requires-Dist: aiosqlite>=0.20
|
|
16
|
+
Requires-Dist: croniter>=1.4
|
|
17
|
+
Requires-Dist: loguru>=0.7
|
|
18
|
+
Requires-Dist: numpy>=1.24
|
|
19
|
+
Requires-Dist: pydantic-settings>=2.0
|
|
20
|
+
Requires-Dist: pydantic>=2.0
|
|
21
|
+
Requires-Dist: pyyaml>=6.0
|
|
22
|
+
Provides-Extra: all
|
|
23
|
+
Requires-Dist: anthropic>=0.40; extra == 'all'
|
|
24
|
+
Requires-Dist: boto3>=1.34; extra == 'all'
|
|
25
|
+
Requires-Dist: cryptography>=41.0; extra == 'all'
|
|
26
|
+
Requires-Dist: faiss-cpu>=1.7; extra == 'all'
|
|
27
|
+
Requires-Dist: google-generativeai>=0.8; extra == 'all'
|
|
28
|
+
Requires-Dist: openai>=1.30; extra == 'all'
|
|
29
|
+
Requires-Dist: pillow>=10.0; extra == 'all'
|
|
30
|
+
Requires-Dist: psutil>=5.9; extra == 'all'
|
|
31
|
+
Requires-Dist: tiktoken>=0.7; extra == 'all'
|
|
32
|
+
Provides-Extra: allproviders
|
|
33
|
+
Requires-Dist: anthropic>=0.40; extra == 'allproviders'
|
|
34
|
+
Requires-Dist: boto3>=1.34; extra == 'allproviders'
|
|
35
|
+
Requires-Dist: google-generativeai>=0.8; extra == 'allproviders'
|
|
36
|
+
Requires-Dist: openai>=1.30; extra == 'allproviders'
|
|
37
|
+
Provides-Extra: anthropic
|
|
38
|
+
Requires-Dist: anthropic>=0.40; extra == 'anthropic'
|
|
39
|
+
Provides-Extra: bedrock
|
|
40
|
+
Requires-Dist: anthropic>=0.40; extra == 'bedrock'
|
|
41
|
+
Requires-Dist: boto3>=1.34; extra == 'bedrock'
|
|
42
|
+
Provides-Extra: container
|
|
43
|
+
Requires-Dist: docker>=7.0; extra == 'container'
|
|
44
|
+
Provides-Extra: dev
|
|
45
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
46
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
47
|
+
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
48
|
+
Provides-Extra: gemini
|
|
49
|
+
Requires-Dist: google-generativeai>=0.8; extra == 'gemini'
|
|
50
|
+
Provides-Extra: openai
|
|
51
|
+
Requires-Dist: openai>=1.30; extra == 'openai'
|
|
52
|
+
Provides-Extra: otel
|
|
53
|
+
Requires-Dist: opentelemetry-api>=1.20; extra == 'otel'
|
|
54
|
+
Requires-Dist: opentelemetry-exporter-otlp>=1.20; extra == 'otel'
|
|
55
|
+
Requires-Dist: opentelemetry-sdk>=1.20; extra == 'otel'
|
|
56
|
+
Provides-Extra: process
|
|
57
|
+
Requires-Dist: psutil>=5.9; extra == 'process'
|
|
58
|
+
Provides-Extra: tokenizers
|
|
59
|
+
Requires-Dist: tiktoken>=0.7; extra == 'tokenizers'
|
|
60
|
+
Provides-Extra: vector
|
|
61
|
+
Requires-Dist: faiss-cpu>=1.7; extra == 'vector'
|
|
62
|
+
Provides-Extra: vision
|
|
63
|
+
Requires-Dist: pillow>=10.0; extra == 'vision'
|
|
64
|
+
Provides-Extra: weixin
|
|
65
|
+
Requires-Dist: cryptography>=41.0; extra == 'weixin'
|
|
66
|
+
Description-Content-Type: text/markdown
|
|
67
|
+
|
|
68
|
+
<div align="center">
|
|
69
|
+
|
|
70
|
+
# Echo Agent
|
|
71
|
+
|
|
72
|
+
**具备认知记忆与自进化能力的开源 AI Agent**
|
|
73
|
+
|
|
74
|
+
跨会话沉淀对话、偏好与任务经验,从真实使用轨迹中持续优化自身技能,可在本机或自有服务器上自托管运行
|
|
75
|
+
|
|
76
|
+
[中文](README.md) · [English](README.en.md)
|
|
77
|
+
|
|
78
|
+
[](https://github.com/fuyuxiang/echo-agent)
|
|
79
|
+
[](https://www.python.org/)
|
|
80
|
+
[](pyproject.toml)
|
|
81
|
+
|
|
82
|
+
<a href="https://github.com/fuyuxiang/echo-agent">
|
|
83
|
+
<img src="docs/assets/echo-agent.png" alt="Echo Agent" width="720" />
|
|
84
|
+
</a>
|
|
85
|
+
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Echo Agent 是什么
|
|
91
|
+
|
|
92
|
+
Echo Agent 是一个面向自托管部署的 AI Agent,定位与 OpenClaw、Hermes Agent 同类。它在 Agent Loop 之外补齐了两层关键能力:**跨会话留存的认知记忆**,让 Agent 记住对话脉络、用户偏好与任务经验;**基于真实使用轨迹的自进化**,让 Agent 的技能在运行过程中持续打磨,而不是出厂即定型。
|
|
93
|
+
|
|
94
|
+
CLI、Gateway、Webhook、Cron 与 Telegram、Discord、Slack、企业微信、微信、QQ、飞书、钉钉等消息通道共享同一条消息总线、Agent Loop、记忆库与权限边界。会话、记忆、执行轨迹与本地凭证默认存放在工作区目录,工具调用经统一审批管控。
|
|
95
|
+
|
|
96
|
+
Echo Agent 的特点可以概括为四个方向:
|
|
97
|
+
|
|
98
|
+
- 向上:对接大模型——主推理、上下文压缩、向量嵌入、风险审批可分别选择不同 provider 与模型
|
|
99
|
+
- 向外:对接消息通道——12 个内置通道经统一消息总线接入同一个 Agent Loop
|
|
100
|
+
- 向内:对接认知记忆——四层记忆结构、记忆衰减、矛盾检测,配合 BM25 与向量混合检索
|
|
101
|
+
- 向执行层:对接工具与协议——内置工具集、MCP 客户端、A2A JSON-RPC,统一审批管控
|
|
102
|
+
|
|
103
|
+
**一句话概括:Echo Agent 是一个长期运行的 AI Agent——记得住过去的对话,并能从过去的执行结果中持续改进。**
|
|
104
|
+
|
|
105
|
+
让 Agent 不再止步于一次性回答,而是带着记忆、技能与可审计的执行历史,长期为你工作。
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 最新动态
|
|
110
|
+
|
|
111
|
+
- **v0.1.0**
|
|
112
|
+
- 自进化引擎:轨迹记录、候选生成、晋升评估三阶段管线
|
|
113
|
+
- 候选晋升前先在评测集上与当前版本逐项对照,指标退步即驳回,支持冷却期与一键回滚
|
|
114
|
+
- 四层认知记忆:Working / Episodic / Semantic / Archival,配合记忆衰减与重要性重排
|
|
115
|
+
- 混合检索:BM25 关键词召回与 FAISS 向量召回融合,按查询特征自适应权重
|
|
116
|
+
- 矛盾检测:写入冲突时保留新旧两版并建立时序关系,读取按时间倒序但旧值仍可追溯
|
|
117
|
+
- 12 个消息通道:CLI、Webhook、Cron、Telegram、Discord、Slack、WhatsApp、Email、Matrix、WeChat、QQ、Feishu、DingTalk、WeCom
|
|
118
|
+
- Gateway HTTP / WebSocket 接口,附带内置 Playground
|
|
119
|
+
- A2A JSON-RPC 端点 + MCP 客户端(含 OAuth)
|
|
120
|
+
- 智能审批:由 LLM 完成风险分类后与策略联合判定
|
|
121
|
+
- 发布说明:[CHANGELOG](https://github.com/fuyuxiang/echo-agent/releases)
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 为什么做 Echo Agent
|
|
126
|
+
|
|
127
|
+
一次性问答用对话产品就够了。Echo Agent 解决的是另一类问题:**Agent 需要跨会话、跨进程长期工作,能记住过去发生了什么,并把过去的执行结果转化为更好的行为**。
|
|
128
|
+
|
|
129
|
+
要让一个 Agent 真正具备长期工作的能力,下面几件事必须同时做到,缺一项都站不住:
|
|
130
|
+
|
|
131
|
+
1. 任务执行过程要**结构化记录**——否则无法回看,也无从评估改动是变好还是变差;记忆要**分层组织并随时间衰减**——上下文窗口塞不下所有历史,简单截断又会丢掉关键信息
|
|
132
|
+
2. 技能更新要**先验证再生效**——直接让 LLM 改写技能定义会出现明显的能力退化;高风险工具调用要**经统一审批**——`exec`、`write_file` 一旦在错误前提下被授权就难以挽回;多入口(CLI、Gateway、各消息通道)要**共享同一份状态**——否则记忆和权限边界会割裂
|
|
133
|
+
|
|
134
|
+
Echo Agent 把这些缺失的基础能力一次性补齐,让 Agent 在真实环境里持续运行成为可能。
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 核心能力
|
|
139
|
+
|
|
140
|
+
| 模块 | 说明 |
|
|
141
|
+
|------|------|
|
|
142
|
+
| Agent Loop | 接收事件、构建上下文、调用模型、执行工具的统一处理循环,跨入口共享同一条执行路径 |
|
|
143
|
+
| 认知记忆 | Working / Episodic / Semantic / Archival 四层结构,配合记忆衰减、矛盾检测与重要性重排 |
|
|
144
|
+
| 混合检索 | BM25 关键词召回与 FAISS 向量召回融合,按查询特征自适应权重;FAISS 缺失时自动降级 |
|
|
145
|
+
| 自进化 | 轨迹记录 → 候选生成 → 晋升评估三阶段管线,候选必须在评测集上不退步才能生效,支持冷却与回滚 |
|
|
146
|
+
| 多入口归一 | CLI、Gateway、Webhook、Cron 与 12 个消息通道经消息总线归一为同一种事件 |
|
|
147
|
+
| 模型路由 | 按任务类型路由:主推理、上下文压缩、向量嵌入、风险审批可独立配置 provider 与模型 |
|
|
148
|
+
| 工具审批 | 三档策略 `manual` / `smart` / `off`,无人值守通道支持 `unattendedPolicy: deny` 默认拒绝 |
|
|
149
|
+
| 工具集 | 工作区文件、Shell 执行、Web、协作、记忆、任务、技能、多模态、知识库,并支持 MCP 动态注册 |
|
|
150
|
+
| 跨进程互操作 | A2A JSON-RPC(`/a2a` + `/.well-known/agent.json`)与 MCP 客户端(含 OAuth) |
|
|
151
|
+
| 凭证与脱敏 | 本地加密凭证存储,工具日志按字段名脱敏(`key`、`token`、`secret` 等) |
|
|
152
|
+
| 评测框架 | 评测数据集 + runner,自进化候选必须在评测集上不退步于当前版本才能晋升 |
|
|
153
|
+
| 本地优先 | 会话、记忆、轨迹、候选技能、审计日志默认存放在工作区,凭证可加密落盘 |
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## 架构总览
|
|
158
|
+
|
|
159
|
+
入口层、运行时核心与改进闭环串成一条完整路径:消息总线归一各入口事件,Agent Loop 在记忆与权限边界内调用模型与工具,执行轨迹回流到自进化管线,再把更新后的技能反馈给后续运行。
|
|
160
|
+
|
|
161
|
+
<div align="center">
|
|
162
|
+
<img src="docs/assets/architecture.png" alt="Echo Agent 架构图" width="820" />
|
|
163
|
+
</div>
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 适用场景
|
|
168
|
+
|
|
169
|
+
- 希望 Agent 跑在本机或自有服务器上,对工具执行有完整审计与可追溯需求
|
|
170
|
+
- 希望对话、偏好、项目事实与任务经验跨会话长期沉淀,而不是每次重新解释
|
|
171
|
+
- 希望 Agent 的技能能从真实使用过程中持续打磨,而不是停留在出厂版本
|
|
172
|
+
- 希望多个入口(CLI、Webhook、消息机器人)共享同一份记忆与权限边界
|
|
173
|
+
- 希望对 `exec`、`write_file` 等高风险工具做强制审批,避免误操作扩散
|
|
174
|
+
- 希望同时接入多家模型 provider,并按任务类型分别选择合适的模型
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 快速开始
|
|
179
|
+
|
|
180
|
+
### 方式一:源码启动
|
|
181
|
+
|
|
182
|
+
环境要求:Python **3.11+**,Linux / macOS / WSL2,至少一个模型 provider 的 API key。推荐使用 [`uv`](https://docs.astral.sh/uv/) 管理虚拟环境。
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
git clone https://github.com/fuyuxiang/echo-agent.git
|
|
186
|
+
cd echo-agent
|
|
187
|
+
|
|
188
|
+
uv venv venv --python 3.11
|
|
189
|
+
source venv/bin/activate
|
|
190
|
+
|
|
191
|
+
uv pip install -e ".[all]"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
国内网络环境可使用阿里云镜像加速:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
uv pip install -e ".[all]" -i https://mirrors.aliyun.com/pypi/simple/
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
配置模型 provider 并启动:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
export OPENAI_API_KEY="sk-..."
|
|
204
|
+
|
|
205
|
+
echo-agent setup -w .
|
|
206
|
+
echo-agent run -w .
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
PowerShell:
|
|
210
|
+
|
|
211
|
+
```powershell
|
|
212
|
+
$env:OPENAI_API_KEY = "sk-..."
|
|
213
|
+
echo-agent run -w .
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
CMD:
|
|
217
|
+
|
|
218
|
+
```cmd
|
|
219
|
+
set OPENAI_API_KEY=sk-...
|
|
220
|
+
echo-agent run -w .
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Gitee 镜像(备用):`https://gitee.com/fuyuxiang/echo-agent.git`
|
|
224
|
+
|
|
225
|
+
### 方式二:一键安装脚本
|
|
226
|
+
|
|
227
|
+
仅推荐用于本地开发环境:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
curl -fsSL -o install.sh https://raw.githubusercontent.com/fuyuxiang/echo-agent/master/scripts/install.sh
|
|
231
|
+
less install.sh
|
|
232
|
+
bash install.sh
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
脚本会写入 `PATH`,并在 Linux 下注册 systemd 服务。生产部署建议采用源码安装,自行管理虚拟环境、凭证与服务注册。
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 开发与贡献
|
|
240
|
+
|
|
241
|
+
### 本地开发
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
uv pip install -e ".[all,dev]"
|
|
245
|
+
|
|
246
|
+
ruff check .
|
|
247
|
+
pytest
|
|
248
|
+
echo-agent run -w .
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
提交 PR 之前请确保 `ruff check .` 与 `pytest` 通过,并同步更新 `README.md`(中文,主版本)与 `README.en.md`(英文)。
|
|
252
|
+
|
|
253
|
+
### 社区交流
|
|
254
|
+
|
|
255
|
+
- 设计讨论、用法咨询、Roadmap 互动:[GitHub Discussions](https://github.com/fuyuxiang/echo-agent/discussions)
|
|
256
|
+
- 适合上手的方向:通道适配器、内置工具、MCP 集成、技能示例、评测数据集、文档完善、部署模板
|
|
257
|
+
- QQ群:[47572014](https://qm.qq.com/q/JWOPDBNssw)
|
|
258
|
+
|
|
259
|
+
### 问题反馈
|
|
260
|
+
|
|
261
|
+
- Bug 与新特性:[GitHub Issues](https://github.com/fuyuxiang/echo-agent/issues)
|
|
262
|
+
- 安全相关问题请通过 Issue 选择 `security` 模板私下报告,避免公开复现细节
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 开源协议与致谢
|
|
267
|
+
|
|
268
|
+
### 开源协议
|
|
269
|
+
|
|
270
|
+
MIT License。许可证声明位于 `pyproject.toml`。
|
|
271
|
+
|
|
272
|
+
<div align="center">
|
|
273
|
+
**具备认知记忆与自进化能力的开源 AI Agent**
|
|
274
|
+
|
|
275
|
+
<a href="https://github.com/fuyuxiang/echo-agent">GitHub</a> ·
|
|
276
|
+
<a href="https://gitee.com/fuyuxiang/echo-agent">Gitee</a> ·
|
|
277
|
+
<a href="https://github.com/fuyuxiang/echo-agent/issues">Issues</a> ·
|
|
278
|
+
<a href="https://github.com/fuyuxiang/echo-agent/tree/master/docs">完整文档</a>
|
|
279
|
+
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Star History
|
|
285
|
+
|
|
286
|
+
[](https://star-history.com/#fuyuxiang/echo-agent&Date)
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# Echo Agent
|
|
4
|
+
|
|
5
|
+
**具备认知记忆与自进化能力的开源 AI Agent**
|
|
6
|
+
|
|
7
|
+
跨会话沉淀对话、偏好与任务经验,从真实使用轨迹中持续优化自身技能,可在本机或自有服务器上自托管运行
|
|
8
|
+
|
|
9
|
+
[中文](README.md) · [English](README.en.md)
|
|
10
|
+
|
|
11
|
+
[](https://github.com/fuyuxiang/echo-agent)
|
|
12
|
+
[](https://www.python.org/)
|
|
13
|
+
[](pyproject.toml)
|
|
14
|
+
|
|
15
|
+
<a href="https://github.com/fuyuxiang/echo-agent">
|
|
16
|
+
<img src="docs/assets/echo-agent.png" alt="Echo Agent" width="720" />
|
|
17
|
+
</a>
|
|
18
|
+
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Echo Agent 是什么
|
|
24
|
+
|
|
25
|
+
Echo Agent 是一个面向自托管部署的 AI Agent,定位与 OpenClaw、Hermes Agent 同类。它在 Agent Loop 之外补齐了两层关键能力:**跨会话留存的认知记忆**,让 Agent 记住对话脉络、用户偏好与任务经验;**基于真实使用轨迹的自进化**,让 Agent 的技能在运行过程中持续打磨,而不是出厂即定型。
|
|
26
|
+
|
|
27
|
+
CLI、Gateway、Webhook、Cron 与 Telegram、Discord、Slack、企业微信、微信、QQ、飞书、钉钉等消息通道共享同一条消息总线、Agent Loop、记忆库与权限边界。会话、记忆、执行轨迹与本地凭证默认存放在工作区目录,工具调用经统一审批管控。
|
|
28
|
+
|
|
29
|
+
Echo Agent 的特点可以概括为四个方向:
|
|
30
|
+
|
|
31
|
+
- 向上:对接大模型——主推理、上下文压缩、向量嵌入、风险审批可分别选择不同 provider 与模型
|
|
32
|
+
- 向外:对接消息通道——12 个内置通道经统一消息总线接入同一个 Agent Loop
|
|
33
|
+
- 向内:对接认知记忆——四层记忆结构、记忆衰减、矛盾检测,配合 BM25 与向量混合检索
|
|
34
|
+
- 向执行层:对接工具与协议——内置工具集、MCP 客户端、A2A JSON-RPC,统一审批管控
|
|
35
|
+
|
|
36
|
+
**一句话概括:Echo Agent 是一个长期运行的 AI Agent——记得住过去的对话,并能从过去的执行结果中持续改进。**
|
|
37
|
+
|
|
38
|
+
让 Agent 不再止步于一次性回答,而是带着记忆、技能与可审计的执行历史,长期为你工作。
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 最新动态
|
|
43
|
+
|
|
44
|
+
- **v0.1.0**
|
|
45
|
+
- 自进化引擎:轨迹记录、候选生成、晋升评估三阶段管线
|
|
46
|
+
- 候选晋升前先在评测集上与当前版本逐项对照,指标退步即驳回,支持冷却期与一键回滚
|
|
47
|
+
- 四层认知记忆:Working / Episodic / Semantic / Archival,配合记忆衰减与重要性重排
|
|
48
|
+
- 混合检索:BM25 关键词召回与 FAISS 向量召回融合,按查询特征自适应权重
|
|
49
|
+
- 矛盾检测:写入冲突时保留新旧两版并建立时序关系,读取按时间倒序但旧值仍可追溯
|
|
50
|
+
- 12 个消息通道:CLI、Webhook、Cron、Telegram、Discord、Slack、WhatsApp、Email、Matrix、WeChat、QQ、Feishu、DingTalk、WeCom
|
|
51
|
+
- Gateway HTTP / WebSocket 接口,附带内置 Playground
|
|
52
|
+
- A2A JSON-RPC 端点 + MCP 客户端(含 OAuth)
|
|
53
|
+
- 智能审批:由 LLM 完成风险分类后与策略联合判定
|
|
54
|
+
- 发布说明:[CHANGELOG](https://github.com/fuyuxiang/echo-agent/releases)
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 为什么做 Echo Agent
|
|
59
|
+
|
|
60
|
+
一次性问答用对话产品就够了。Echo Agent 解决的是另一类问题:**Agent 需要跨会话、跨进程长期工作,能记住过去发生了什么,并把过去的执行结果转化为更好的行为**。
|
|
61
|
+
|
|
62
|
+
要让一个 Agent 真正具备长期工作的能力,下面几件事必须同时做到,缺一项都站不住:
|
|
63
|
+
|
|
64
|
+
1. 任务执行过程要**结构化记录**——否则无法回看,也无从评估改动是变好还是变差;记忆要**分层组织并随时间衰减**——上下文窗口塞不下所有历史,简单截断又会丢掉关键信息
|
|
65
|
+
2. 技能更新要**先验证再生效**——直接让 LLM 改写技能定义会出现明显的能力退化;高风险工具调用要**经统一审批**——`exec`、`write_file` 一旦在错误前提下被授权就难以挽回;多入口(CLI、Gateway、各消息通道)要**共享同一份状态**——否则记忆和权限边界会割裂
|
|
66
|
+
|
|
67
|
+
Echo Agent 把这些缺失的基础能力一次性补齐,让 Agent 在真实环境里持续运行成为可能。
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 核心能力
|
|
72
|
+
|
|
73
|
+
| 模块 | 说明 |
|
|
74
|
+
|------|------|
|
|
75
|
+
| Agent Loop | 接收事件、构建上下文、调用模型、执行工具的统一处理循环,跨入口共享同一条执行路径 |
|
|
76
|
+
| 认知记忆 | Working / Episodic / Semantic / Archival 四层结构,配合记忆衰减、矛盾检测与重要性重排 |
|
|
77
|
+
| 混合检索 | BM25 关键词召回与 FAISS 向量召回融合,按查询特征自适应权重;FAISS 缺失时自动降级 |
|
|
78
|
+
| 自进化 | 轨迹记录 → 候选生成 → 晋升评估三阶段管线,候选必须在评测集上不退步才能生效,支持冷却与回滚 |
|
|
79
|
+
| 多入口归一 | CLI、Gateway、Webhook、Cron 与 12 个消息通道经消息总线归一为同一种事件 |
|
|
80
|
+
| 模型路由 | 按任务类型路由:主推理、上下文压缩、向量嵌入、风险审批可独立配置 provider 与模型 |
|
|
81
|
+
| 工具审批 | 三档策略 `manual` / `smart` / `off`,无人值守通道支持 `unattendedPolicy: deny` 默认拒绝 |
|
|
82
|
+
| 工具集 | 工作区文件、Shell 执行、Web、协作、记忆、任务、技能、多模态、知识库,并支持 MCP 动态注册 |
|
|
83
|
+
| 跨进程互操作 | A2A JSON-RPC(`/a2a` + `/.well-known/agent.json`)与 MCP 客户端(含 OAuth) |
|
|
84
|
+
| 凭证与脱敏 | 本地加密凭证存储,工具日志按字段名脱敏(`key`、`token`、`secret` 等) |
|
|
85
|
+
| 评测框架 | 评测数据集 + runner,自进化候选必须在评测集上不退步于当前版本才能晋升 |
|
|
86
|
+
| 本地优先 | 会话、记忆、轨迹、候选技能、审计日志默认存放在工作区,凭证可加密落盘 |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 架构总览
|
|
91
|
+
|
|
92
|
+
入口层、运行时核心与改进闭环串成一条完整路径:消息总线归一各入口事件,Agent Loop 在记忆与权限边界内调用模型与工具,执行轨迹回流到自进化管线,再把更新后的技能反馈给后续运行。
|
|
93
|
+
|
|
94
|
+
<div align="center">
|
|
95
|
+
<img src="docs/assets/architecture.png" alt="Echo Agent 架构图" width="820" />
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 适用场景
|
|
101
|
+
|
|
102
|
+
- 希望 Agent 跑在本机或自有服务器上,对工具执行有完整审计与可追溯需求
|
|
103
|
+
- 希望对话、偏好、项目事实与任务经验跨会话长期沉淀,而不是每次重新解释
|
|
104
|
+
- 希望 Agent 的技能能从真实使用过程中持续打磨,而不是停留在出厂版本
|
|
105
|
+
- 希望多个入口(CLI、Webhook、消息机器人)共享同一份记忆与权限边界
|
|
106
|
+
- 希望对 `exec`、`write_file` 等高风险工具做强制审批,避免误操作扩散
|
|
107
|
+
- 希望同时接入多家模型 provider,并按任务类型分别选择合适的模型
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 快速开始
|
|
112
|
+
|
|
113
|
+
### 方式一:源码启动
|
|
114
|
+
|
|
115
|
+
环境要求:Python **3.11+**,Linux / macOS / WSL2,至少一个模型 provider 的 API key。推荐使用 [`uv`](https://docs.astral.sh/uv/) 管理虚拟环境。
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
git clone https://github.com/fuyuxiang/echo-agent.git
|
|
119
|
+
cd echo-agent
|
|
120
|
+
|
|
121
|
+
uv venv venv --python 3.11
|
|
122
|
+
source venv/bin/activate
|
|
123
|
+
|
|
124
|
+
uv pip install -e ".[all]"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
国内网络环境可使用阿里云镜像加速:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
uv pip install -e ".[all]" -i https://mirrors.aliyun.com/pypi/simple/
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
配置模型 provider 并启动:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
export OPENAI_API_KEY="sk-..."
|
|
137
|
+
|
|
138
|
+
echo-agent setup -w .
|
|
139
|
+
echo-agent run -w .
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
PowerShell:
|
|
143
|
+
|
|
144
|
+
```powershell
|
|
145
|
+
$env:OPENAI_API_KEY = "sk-..."
|
|
146
|
+
echo-agent run -w .
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
CMD:
|
|
150
|
+
|
|
151
|
+
```cmd
|
|
152
|
+
set OPENAI_API_KEY=sk-...
|
|
153
|
+
echo-agent run -w .
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Gitee 镜像(备用):`https://gitee.com/fuyuxiang/echo-agent.git`
|
|
157
|
+
|
|
158
|
+
### 方式二:一键安装脚本
|
|
159
|
+
|
|
160
|
+
仅推荐用于本地开发环境:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
curl -fsSL -o install.sh https://raw.githubusercontent.com/fuyuxiang/echo-agent/master/scripts/install.sh
|
|
164
|
+
less install.sh
|
|
165
|
+
bash install.sh
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
脚本会写入 `PATH`,并在 Linux 下注册 systemd 服务。生产部署建议采用源码安装,自行管理虚拟环境、凭证与服务注册。
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 开发与贡献
|
|
173
|
+
|
|
174
|
+
### 本地开发
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
uv pip install -e ".[all,dev]"
|
|
178
|
+
|
|
179
|
+
ruff check .
|
|
180
|
+
pytest
|
|
181
|
+
echo-agent run -w .
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
提交 PR 之前请确保 `ruff check .` 与 `pytest` 通过,并同步更新 `README.md`(中文,主版本)与 `README.en.md`(英文)。
|
|
185
|
+
|
|
186
|
+
### 社区交流
|
|
187
|
+
|
|
188
|
+
- 设计讨论、用法咨询、Roadmap 互动:[GitHub Discussions](https://github.com/fuyuxiang/echo-agent/discussions)
|
|
189
|
+
- 适合上手的方向:通道适配器、内置工具、MCP 集成、技能示例、评测数据集、文档完善、部署模板
|
|
190
|
+
- QQ群:[47572014](https://qm.qq.com/q/JWOPDBNssw)
|
|
191
|
+
|
|
192
|
+
### 问题反馈
|
|
193
|
+
|
|
194
|
+
- Bug 与新特性:[GitHub Issues](https://github.com/fuyuxiang/echo-agent/issues)
|
|
195
|
+
- 安全相关问题请通过 Issue 选择 `security` 模板私下报告,避免公开复现细节
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 开源协议与致谢
|
|
200
|
+
|
|
201
|
+
### 开源协议
|
|
202
|
+
|
|
203
|
+
MIT License。许可证声明位于 `pyproject.toml`。
|
|
204
|
+
|
|
205
|
+
<div align="center">
|
|
206
|
+
**具备认知记忆与自进化能力的开源 AI Agent**
|
|
207
|
+
|
|
208
|
+
<a href="https://github.com/fuyuxiang/echo-agent">GitHub</a> ·
|
|
209
|
+
<a href="https://gitee.com/fuyuxiang/echo-agent">Gitee</a> ·
|
|
210
|
+
<a href="https://github.com/fuyuxiang/echo-agent/issues">Issues</a> ·
|
|
211
|
+
<a href="https://github.com/fuyuxiang/echo-agent/tree/master/docs">完整文档</a>
|
|
212
|
+
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Star History
|
|
218
|
+
|
|
219
|
+
[](https://star-history.com/#fuyuxiang/echo-agent&Date)
|