Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions emrg/server/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
# Suppress noisy httpcore/httpx DEBUG logs (rant #24)
logging.getLogger("httpcore").setLevel(logging.WARNING)
logging.getLogger("httpx").setLevel(logging.WARNING)
# Suppress websockets frame-level DEBUG (rant 2026-08-06T10:21:26):
# 帧级收发日志占 emrgd.log ~90% 纯噪音。设 INFO 保留连接建立/关闭事件,
# 仅滤掉 DEBUG 帧收发(比 WARNING 更细——不丢连接生命周期信息)。
logging.getLogger("websockets").setLevel(logging.INFO)
from emrg.config import load_config
from emrg.server.daemon import run_server

Expand Down
23 changes: 22 additions & 1 deletion emrg/server/daemon.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,27 @@
)
from emrg.session import Session

# ── 日志脱敏(rant 2026-08-06T10:21:26)────────────────────────────
# tool call 参数可能含 api_key/token/authorization/password 等敏感字段,
# 递归替换值为 ***,避免 emrgd.log 泄露凭据。
_SENSITIVE_KEY_SUBSTRINGS = (
"api_key", "token", "authorization", "password", "secret",
"api-key", "auth", "credential", "key",
)


def _redact(value):
"""递归脱敏 dict/list 中的敏感字段值(就地不修改原对象)。"""
if isinstance(value, dict):
return {
k: ("***" if any(s in k.lower() for s in _SENSITIVE_KEY_SUBSTRINGS)
else _redact(v))
for k, v in value.items()
}
if isinstance(value, list):
return [_redact(v) for v in value]
return value

from emrg.tools import ToolRegistry
from emrg.tools.bash_tool import BashTool
from emrg.tools.read_tool import ReadTool
Expand Down Expand Up @@ -1378,7 +1399,7 @@ async def _run_tool_loop(
args = {}

logger.info("tool call: %s(%s)", tc_name,
json.dumps(args, ensure_ascii=False)[:200])
json.dumps(_redact(args), ensure_ascii=False)[:200])

# Notify client (broadcast to all session subscribers)
await self._broadcast(session.session_id, {
Expand Down
Loading