← 返回
未分类

Chat Logger

对话记录 - 自动记录飞书/钉钉消息(严格触发规则版) ⚠️ 严格触发规则: - 消息 "chatlog汇总" → 只能执行此 Skill,禁止主 Agent 处理 - 消息 "今日简报" → 只能执行此 Skill,禁止主 Agent 处理 - 消息 "我的记录" → 只能执行此 Skill,禁止主 Agent...
对话记录 - 自动记录飞书/钉钉消息 ⚠️触发规则(仅执行此Skill): - "chatlog汇总" - "今日简报" - "我的记录" 禁止主Agent处理
bjmfjoy bjmfjoy 来源
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 367
下载
💾 2
安装
1
版本
#latest

概述

Chat Logger(严格触发规则版)

⚠️ 严格触发规则(AGENTS.md 必须遵守)

触发规则表

用户消息执行动作主 Agent 行为
:---:---:---
chatlog汇总调用 handle_chat_query()禁止处理,直接返回结果
今日简报调用 handle_chat_query()禁止处理,直接返回结果
我的记录调用 handle_chat_query()禁止处理,直接返回结果
其他消息调用 record_message()正常处理

主 Agent 必须遵守的流程

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() 和正常处理

核心设计

核心设计

方案B:Hook + 显式调用双保险

记录功能(双保险):

  • Hook 自动记录 - on_incoming_message_hook 自动触发
  • 主 Agent 显式调用 - record_message() 备用
  • 两者都执行 - 确保消息不丢失

查询功能(主 Agent 显式调用):

  • handle_chat_query() - 主 Agent 检查并处理查询指令
  • ✅ 查询前自动记录当前消息

为什么用双保险?

方案优点缺点
:---:---:---
纯 Hook自动,无需干预Hook 可能失效,难调试
纯显式调用可控,易调试依赖主 Agent 遵守约定
双保险(方案B)自动 + 可控稍复杂,但最可靠

使用方式

1. 主 Agent 调用约定(AGENTS.md)

每次收到用户消息时,必须调用:

from skills.chat_logger.skill import record_message

# 记录用户消息
record_message(
    channel="feishu",  # 或 "dingtalk"
    user_name="孟凡军",
    user_content="用户消息内容",
    chat_type="direct"  # direct=私聊, group=群聊(群聊自动跳过)
)

2. 查询指令处理

当用户发送查询指令时,调用:

from skills.chat_logger.skill import handle_chat_query

result = handle_chat_query(
    message="chatlog汇总",
    user_name="孟凡军",
    channel="feishu"  # 当前渠道
)

if result:
    print(result)  # 直接返回结果

支持的查询指令:

  • chatlog汇总 - 查看所有用户完整汇总
  • 今日简报 - 查看今日对话汇总
  • 我的记录 - 查看个人今日记录

3. 自检功能

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
# }

API 参考

record_message(channel, user_name, user_content, chat_type='direct')

记录用户消息

参数:

  • channel (str): 渠道名称 (feishu/dingtalk/飞书/钉钉)
  • user_name (str): 用户名称
  • user_content (str): 用户消息内容
  • chat_type (str): 聊天类型,默认 'direct'(私聊)

返回:

  • bool: 是否记录成功

handle_chat_query(message, user_name, channel=None)

处理查询指令

参数:

  • message (str): 用户消息
  • user_name (str): 用户名称
  • channel (str, optional): 当前渠道

返回:

  • str or None: 查询结果或 None(非查询指令)

get_chatlog_summary() -> str

生成完整汇总报告

get_daily_summary(user_name=None, date=None) -> str

生成每日简报

check_health() -> dict

检查系统健康状态

存储结构

memory/chat-logs/
├── feishu/
│   └── {用户名}/
│       └── YYYY-MM-DD.md
└── dingtalk/
    └── {用户名}/
        └── YYYY-MM-DD.md

文件格式

# 2026-03-23 提问记录 - 孟凡军(feishu)

## 提问列表

---

### 07:17
**用户**:chatlog汇总

### 07:26
**用户**:chatlog汇总

注意事项

  1. 群聊自动跳过 - chat_type='group' 时自动返回 True,不记录
  2. 渠道名称自动转换 - '飞书' 自动转为 'feishu','钉钉' 自动转为 'dingtalk'
  3. 文件名安全处理 - 用户名称中的特殊字符会被替换为下划线
  4. 查询前自动记录 - handle_chat_query 会先记录当前查询消息

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-07 10:19 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

it-ops-security

1password

steipete
设置和使用 1Password CLI (op)。适用于:安装 CLI、启用桌面应用集成、登录(单/多账户)、通过 op 读取/注入/运行密钥。
★ 53 📥 31,562
office-efficiency

Contract Auditor

bjmfjoy
合同审计 Skill - AI 辅助审查合同条款,识别风险和问题 功能: - 自动提取合同文本(Word 格式) - 审查金额条款(一致性、付款节点、违约金) - 审查交付条款(时间、标准、延期责任) - 审查合规性(签章、日期、关键条款)
★ 0 📥 1,326
it-ops-security

OpenClaw Backup

alex3alex
备份与恢复 OpenClaw 数据。适用于创建备份、设置自动备份计划、从备份恢复或管理备份轮转。处理 ~/.openclaw 目录归档并包含适当的排除规则。
★ 90 📥 30,879