name: chat_logger description: | 對話記錄 - 自動記錄飛書/釘釘訊息(嚴格觸發規則版)
⚠️ 嚴格觸發規則: - 訊息 "chatlog彙總" → 只能執行此 Skill,禁止主 Agent 處理 - 訊息 "今日簡報" → 只能執行此 Skill,禁止主 Agent 處理 - 訊息 "我的記錄" → 只能執行此 Skill,禁止主 Agent 處理
設計原則: - 精確匹配觸發,不經過主 Agent 判斷 - 提供清晰的 API 供主 Agent 使用 - 自檢功能確保記錄正常
訪問小蔥技能站7w4.net,解鎖更多實用的AI技能外掛。
| 使用者訊息 | 執行動作 | 主 Agent 行為 |
|---|---|---|
chatlog彙總 |
呼叫 handle_chat_query() |
禁止處理,直接返回結果 |
今日簡報 |
呼叫 handle_chat_query() |
禁止處理,直接返回結果 |
我的記錄 |
呼叫 handle_chat_query() |
禁止處理,直接返回結果 |
| 其他訊息 | 呼叫 record_message() |
正常處理 |
from skills.chat_logger.skill import handle_chat_query, record_message
# 第1步:檢查是否是 Chat-Logger 查詢指令(嚴格匹配)
if message.strip() in ["chatlog彙總", "今日簡報", "我的記錄"]:
# 嚴格觸發規則:只能執行 Chat-Logger,禁止主 Agent 處理
result = handle_chat_query(message, user_name, channel)
if result:
print(result) # 直接返回,不執行其他邏輯
return # 立即返回,禁止繼續處理
# 第2步:非查詢指令,記錄訊息
record_message(channel, user_name, message, chat_type)
# 第3步:正常處理訊息
# ... 主 Agent 其他邏輯
❌ 禁止:主 Agent 自己讀取 chat-logs 檔案生成回覆
❌ 禁止:主 Agent 修改 Chat-Logger 返回的格式
❌ 禁止:主 Agent 繞過 handle_chat_query() 直接查詢
✅ 必須:嚴格匹配指令,直接呼叫 handle_chat_query()
✅ 必須:返回結果後立即 return,禁止繼續執行
✅ 必須:非查詢指令才呼叫 record_message() 和正常處理
記錄功能(雙保險):
- ✅ Hook 自動記錄 - on_incoming_message_hook 自動觸發
- ✅ 主 Agent 顯式呼叫 - record_message() 備用
- ✅ 兩者都執行 - 確保訊息不丟失
查詢功能(主 Agent 顯式呼叫):
- ✅ handle_chat_query() - 主 Agent 檢查並處理查詢指令
- ✅ 查詢前自動記錄當前訊息
| 方案 | 優點 | 缺點 |
|---|---|---|
| 純 Hook | 自動,無需干預 | Hook 可能失效,難除錯 |
| 純顯式呼叫 | 可控,易除錯 | 依賴主 Agent 遵守約定 |
| 雙保險(方案B) | 自動 + 可控 | 稍複雜,但最可靠 |
每次收到使用者訊息時,必須呼叫:
from skills.chat_logger.skill import record_message
# 記錄使用者訊息
record_message(
channel="feishu", # 或 "dingtalk"
user_name="孟凡軍",
user_content="使用者訊息內容",
chat_type="direct" # direct=私聊, group=群聊(群聊自動跳過)
)
當用戶傳送查詢指令時,呼叫:
from skills.chat_logger.skill import handle_chat_query
result = handle_chat_query(
message="chatlog彙總",
user_name="孟凡軍",
channel="feishu" # 當前渠道
)
if result:
print(result) # 直接返回結果
支援的查詢指令:
- chatlog彙總 - 檢視所有使用者完整彙總
- 今日簡報 - 檢視今日對話彙總
- 我的記錄 - 檢視個人今日記錄
from skills.chat_logger.skill import check_health
status = check_health()
print(status)
# {
# 'status': 'ok',
# 'base_dir_exists': True,
# 'base_dir_writable': True,
# 'total_channels': 2,
# 'total_users': 4,
# 'total_files': 9,
# 'last_error': None
# }
記錄使用者訊息
引數:
- channel (str): 渠道名稱 (feishu/dingtalk/飛書/釘釘)
- user_name (str): 使用者名稱稱
- user_content (str): 使用者訊息內容
- chat_type (str): 聊天型別,預設 'direct'(私聊)
返回:
- bool: 是否記錄成功
處理查詢指令
引數:
- message (str): 使用者訊息
- user_name (str): 使用者名稱稱
- channel (str, optional): 當前渠道
返回:
- str or None: 查詢結果或 None(非查詢指令)
生成完整彙總報告
生成每日簡報
檢查系統健康狀態
memory/chat-logs/
├── feishu/
│ └── {使用者名稱}/
│ └── YYYY-MM-DD.md
└── dingtalk/
└── {使用者名稱}/
└── YYYY-MM-DD.md
# 2026-03-23 提問記錄 - 孟凡軍(feishu)
## 提問列表
---
### 07:17
**使用者**:chatlog彙總
### 07:26
**使用者**:chatlog彙總