Files
Hermes-Skills/okx-auto-position/references/v4.5.41-hook-module-over-inline-preference.md
T
mike 98efe09387 lottery-hk: v1.2.6 — 特码脚本改中文文件名 lottery_特码.py
User 2026-07-30 反馈:
- 脚本名 lottery_te_ma.py → lottery_特码.py (中文, 更直观)
- 同步 SKILL.md 引用 (description + scripts 段)
- version 1.2.5 → 1.2.6
2026-07-30 20:43:39 +08:00

82 lines
3.6 KiB
Markdown

---
name: v4.5.41-hook-module-over-inline-preference
description: "用户明确偏好: gateway/run.py 等核心文件不要加塞业务逻辑, hook 必须放在 skill 目录下作为独立模块"
version: 1.0.0
type: reference
---
# v4.5.41 (2026-07-30) Hook 放 skill 模块, 不要内联到 gateway/run.py
## 用户原话
> "不要在 run 里改,把文件加到对应的skill下"
## 上下文
v4.5.40 我把 signal_inbox hook 代码 **inline**`gateway/run.py:10617-10674` (~58 行)。修完用户立刻纠正。
## 用户偏好的本质
| 偏好 | 含义 |
|------|------|
| **run.py 不加塞业务逻辑** | gateway 是 hermes-agent 核心, 修改要 git commit 到主仓库 (`~/.hermes/hermes-agent`), 不是 `~/.hermes/skills/`。频繁动核心文件 = 频繁 commit 上游 = 易冲突 |
| **hook 放 skill 目录** | skill 目录是用户的私人扩展空间 (`~/.hermes/skills/<skill>/`), git 在 `~/.hermes/skills/trading`, 修改不影响上游 |
| **会丢就 commit** | 用户原话 "现在要把文件加到 git 里, 不会丢" → skill 脚本靠 git track 防丢, 不靠 inline 防御 |
## 这跟 v4.5.40 cleanup-defense 矛盾
v4.5.40 的 inline 方案就是**因为** signal_inbox.py 被 cleanup 删了 → 用 inline 防止再被删。用户最新偏好说:
| 选项 | v4.5.40 观点 | v4.5.41 用户偏好 |
|------|-------------|------------------|
| Inline 到 run.py | ✅ 防 cleanup 删除 | ❌ 不动核心文件 |
| 放 skill 目录 + git track | ❌ 会被 cleanup 删 | ✅ 不会丢 + 不动核心 |
**最终方案 (v4.5.41)** = 放 skill 目录 + 立即 git commit。cleanup 删了 `git checkout` 就能恢复, 不需要 inline 防御。
## 当前代码 (v4.5.41 已部署)
### gateway/run.py hook (12 行, 只做 import + try/except)
```python
# ── [Hermes Hook] 信号自动入队 (v4.5.4) ────────────────────────
# 调 signal_inbox.enqueue_if_signal (位于 okx-auto-position/scripts/)
# 实现逻辑全部在模块里, 这里只做 import + try/except
try:
import importlib
import sys as _sys_hook
_sig_skill = os.path.expanduser(
"~/.hermes/skills/trading/okx-auto-position/scripts"
)
if _sig_skill not in _sys_hook.path:
_sys_hook.path.insert(0, _sig_skill)
_sig_mod = importlib.import_module('signal_inbox')
await _sig_mod.enqueue_if_signal(source, event.text or "")
except Exception as _hook_err:
logger.warning(f"[signal_inbox] hook 异常 (不致命): {_hook_err}")
```
### skill 模块
**路径**: `~/.hermes/skills/trading/okx-auto-position/scripts/signal_inbox.py`
**git**: `commit b91f677 v4.5.4: signal_inbox.py hook helper for gateway`
## 防御策略调整
| 风险 | v4.5.40 防御 | v4.5.41 防御 |
|------|-------------|-------------|
| 文件被 cleanup 删 | Inline 到 run.py | `git checkout okx-auto-position/scripts/signal_inbox.py` 恢复 |
| run.py hook 失败 | (无) | 已知 try/except, hook 静默也不致命 (signal-queue-retry cron 兜底) |
| hook 不工作 | 看 inline 代码 | `git log --all --oneline -- signal_inbox.py` 找 commit + checkout |
| 改坏 core 文件 | (无) | 用户偏好禁止; 改坏就 `git checkout gateway/run.py` |
## 给下次 session 的指令
**用户偏好优先级** (这次的明令):
1. **改 hook / 业务逻辑 → 放 skill 目录** (`~/.hermes/skills/<skill>/scripts/`)
2. **不要 inline 到 gateway/run.py 等核心文件**
3. **新文件立即 `git add` + commit**, 防 cleanup 删除
4. **inline 是最后手段**, 仅在用户明确授权 + 无 skill 模块路径时
**违反这条偏好 = 用户会立即反驳**。如不确定, 先问用户"放 skill 还是改 core"。