qwen_agent/skills_developing/user-context-loader/hooks/pre_save.py
朱潮 c7e9f305b7 feat: 实现 Claude Plugins 模式的 Hook 机制
- 新增 agent/plugin_hook_loader.py:支持通过 .claude-plugin/plugin.json 配置 hooks 和 mcpServers
- 修改 agent/prompt_loader.py:集成 PrePrompt hooks,优先读取 skill MCP 配置
- 修改 routes/chat.py:添加 PostAgent 和 PreSave hooks
- 修改 routes/skill_manager.py:优先从 plugin.json 读取 name/description,fallback 到 SKILL.md
- 删除旧的 agent/skill_hook_loader.py
- 新增示例 skill user-context-loader,演示完整的 hooks 用法

Hook 类型:
- PrePrompt: 在 system_prompt 加载时注入内容
- PostAgent: 在 agent 执行后处理
- PreSave: 在消息保存前处理

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 20:15:54 +08:00

39 lines
1.0 KiB
Python

#!/usr/bin/env python3
"""
PreSave Hook - 消息保存前处理示例
在消息保存到数据库前执行,可用于内容过滤、敏感信息脱敏等。
"""
import os
import sys
def main():
"""从环境变量读取参数并处理"""
content = os.environ.get('CONTENT', '')
role = os.environ.get('ROLE', '')
# 示例:可以在这里添加敏感信息脱敏逻辑
# 例如:移除电话号码、邮箱等敏感信息
# 输出处理后的内容(如果不需要修改则输出原始内容)
print(content)
# 这里只是记录日志,不修改内容
if content:
# 示例:脱敏处理(注释掉,实际使用时根据需求启用)
# import re
# processed = content
# # 简单的手机号脱敏
# processed = re.sub(r'1[3-9]\d{9}', '[PHONE]', processed)
# # 邮箱脱敏
# processed = re.sub(r'\b[\w.-]+@[\w.-]+\.\w+\b', '[EMAIL]', processed)
# print(processed)
pass
return 0
if __name__ == '__main__':
sys.exit(main())