feat: export core Hermes skills

This commit is contained in:
2026-07-15 02:45:56 +00:00
parent a028b63eda
commit 54711fee2a
308 changed files with 41310 additions and 1 deletions
@@ -0,0 +1,55 @@
# auto_notify_new_file.sh 架构:入队模式 vs 直接执行模式
## 根因(2026-06-30)
`auto_notify_new_file.sh` 原本自己启动 `uwf thread exec -c 5`(前台模式)来执行合同审查 workflow。
但 hermes ACP 适配器在前台模式下有 asyncio stdin 注册 bug(`KeyError: '0 is not registered'`),
导致每次 spawn `hermes acp` 子进程都立即失败,日志中全是 `agent command failed (uwf-hermes)`
**对比**`contract-queue-runner.sh` 使用 `uwf thread exec --background` 模式,正常工作。
## 当前架构(2026-06-30 修复后)
```
企微收到文件
→ auto_notify_new_file.sh (inotifywait 监控)
→ 识别 sender (邱律师=QiuTing)
→ 上传 Nextcloud 待审查/
→ 入队 /tmp/contract-queue/manifest.txt
→ 检查 contract-queue-runner.sh 是否在运行,不在则启动
→ contract-queue-runner.sh 串行执行(--background 模式)
→ uwf thread start + thread exec --background
→ uwf-hermes → hermes acp(正常)
```
## 关键文件
| 文件 | 路径 | 职责 |
|------|------|------|
| auto_notify | `~/.hermes/scripts/auto_notify_new_file.sh` | 监控文件到达、上传、入队 |
| queue runner | `~/.hermes/skills/devops/uwf/scripts/contract-queue-runner.sh` | 串行执行 workflow |
| watchdog | `~/.hermes/scripts/contract-queue-watchdog.sh` | 每20分钟检查卡住的 thread |
| auto_notify watchdog | `~/.hermes/scripts/auto_notify_watchdog.sh` | 每5分钟检查 auto_notify 进程 |
## 禁止回退
**绝不可把 auto_notify 改回自己启动 `uwf thread exec` 的模式**。前台模式有 ACP stdin bug,
只有 `--background` 模式能正常工作。如果未来需要修改 auto_notify 的 workflow 启动逻辑,
必须通过 contract-queue-runner 间接执行。
## 入队逻辑
```bash
# 入队到 contract-queue
cp "$filepath" "$QUEUE_DIR/${orig_name}"
# 追加到 manifest(去重)
if ! grep -qFx "$orig_name" "$QUEUE_DIR/manifest.txt" 2>/dev/null; then
echo "$orig_name" >> "$QUEUE_DIR/manifest.txt"
fi
# 检查 queue runner 是否在运行,不在则启动
if ! ps aux | grep -q "[c]ontract-queue-runner"; then
nohup bash "$HOME/.hermes/skills/devops/uwf/scripts/contract-queue-runner.sh" >> "$QUEUE_DIR/queue.log" 2>&1 &
fi
```