对话记录 - 自动记录飞书/钉钉消息(严格触发规则版) ⚠️ 严格触发规则: - 消息 "chatlog汇总" → 只能执行此 Skill,禁止主 Agent 处理 - 消息 "今日简报" → 只能执行此 Skill,禁止主 Agent 处理 - 消息 "我的记录" → 只能执行此 Skill,禁止主 Agent 处理 设计原则: - 精确匹配触发,不经过主 Agent 判断 - 提供清晰的 API 供主 Agent 使用 - 自检功能确保记录正常
| 用户消息 | 执行动作 | 主 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() 和正常处理
记录功能(双保险):
on_incoming_message_hook 自动触发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汇总