echotools
通用基础设施 SDK:配置、日志、事件、调度、插件、调用链,以及 entml LLM 工具调用协议与终端 Console UI。
完全项目无关,兼容 Python 3.8–3.14。当前版本:2.4.2(详见 CHANGELOG)。
安装
# 核心(仅 typing-extensions)
pip install echotools
# 完整功能(含 TOML、Web、终端、Console UI 等)
pip install echotools[all]
可选依赖
| Extra | 用途 |
|---|---|
toml |
TOML 配置读写 |
watch |
watchdog 文件监视 |
http |
aiohttp Web 层 |
socks |
SOCKS 代理 |
ssh |
SSH 终端 |
terminal |
Windows ConPTY |
console |
Rich 终端 UI(渐变、表格、交互选择) |
all |
全部可选依赖 |
dev |
pytest、ruff、mypy |
快速开始
基础设施
from echotools import EchoTools
et = EchoTools(service_name="myapp")
et.logger.configure(level="INFO", color=True)
cfg = et.config
cfg.load("config.toml")
with et.tracer.trace("request") as trace:
with et.tracer.span(trace, "db") as span:
span.set_tag("query", "select 1")
await et.shutdown()
entml 工具调用
内置 entml(<entml:*> 熵标记语言)协议,负责 prompt 注入与模型输出解析。
from echotools import FncallStreamParser, get_protocol, inject_fncall
tools = [
{
"name": "Bash",
"description": "Run a shell command",
"input_schema": {
"type": "object",
"properties": {"command": {"type": "string"}},
"required": ["command"],
},
}
]
messages = [{"role": "user", "content": "列出当前目录"}]
proto = get_protocol()
out_messages = inject_fncall(messages, tools, proto, lang="zh")
parser = FncallStreamParser(proto, tools=tools)
for chunk in model_stream:
parser.feed(chunk)
if parser.get_ready_tool_calls():
...
result = parser.finalize()
能力包括:prompt 注入(history / 工具结果 / thinking 模式)、batch parse()、流式
partial_text / input_json_delta、伪 history 剥离、工具循环检测。
终端 Console UI
需要 pip install echotools[console](或 [all]):
from echotools.media.console import (
create_themed_ui,
render_gradient_banner,
render_text_lines,
run_select,
)
ui = create_themed_ui(theme_name="ocean") # ocean / forest / sunset / violet / rose / slate / cyan
print(render_gradient_banner(render_text_lines("echotools"), theme_name="ocean"))
choice = run_select(ui, "选择主题", ["ocean", "forest", "sunset"])
能力总览
| 模块 | 说明 |
|---|---|
EchoTools |
门面:配置、日志、事件、调度、插件等统一入口 |
ConfigCenter |
点路径配置 + 热重载 + 类型绑定 |
LoggerManager |
调用链注入 + 颜色 + 轮转 |
EventBus |
同步/异步事件 |
Tracer |
轻量调用链 |
TaskDispatcher |
单发/竞速 + 贝叶斯自适应选择 |
PluginRegistry |
自动发现 + 热重载 |
get_protocol / inject_fncall |
entml 工具协议与 prompt 注入 |
FncallStreamParser |
流式工具调用解析 |
media.console |
Rich 终端 UI、多主题、交互选择与 ANSI 渐变 |
PrintStream |
动态速度打印流 |
ProxyManager |
HTTP/HTTPS/SOCKS |
WebApplication |
aiohttp Web(需 [http]) |
LocalTerminal / SSHTerminal |
终端会话(需 [terminal] / [ssh]) |
AutoUpdater |
git 自动更新 |
FileWatcher |
轮询文件监视 |
开发
pip install -e ".[dev,all]"
make -C docs lint
make -C docs test
make -C docs cov
模块指南见 docs/modules.md,API 参考见 docs/api.md。
变更记录
许可证
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file echotools-2.4.2.tar.gz.
File metadata
- Download URL: echotools-2.4.2.tar.gz
- Upload date:
- Size: 362.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34425c7185eb9f18839a3fe269a62cd38d01efe7e8251e97f203d0328d2e3c10
|
|
| MD5 |
88dd328c87d776071e0b25f2b62ebbb2
|
|
| BLAKE2b-256 |
8e58f9e59178601d96874e3adc1764ad802bb1d758bcd195885da6e3a630d06c
|
File details
Details for the file echotools-2.4.2-py3-none-any.whl.
File metadata
- Download URL: echotools-2.4.2-py3-none-any.whl
- Upload date:
- Size: 466.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fee23b543179592e7928e2ad2a7c741fdc1a3701c3956d55809c14ce4694d7b3
|
|
| MD5 |
94cd39e35f25c713d61817c883510540
|
|
| BLAKE2b-256 |
a86a39d770189d2791af7cc6da254bbfb354858295ddfd24e70db0f89e66fd55
|