qwen_agent/skills_developing/user-context-loader/hooks/pre_prompt.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

35 lines
894 B
Python

#!/usr/bin/env python3
"""
PrePrompt Hook - 用户上下文加载器示例
在 system_prompt 加载时执行,可以动态注入用户相关信息到 prompt 中。
"""
import os
import sys
def main():
"""从环境变量读取参数并输出注入内容"""
user_identifier = os.environ.get('USER_IDENTIFIER', '')
bot_id = os.environ.get('BOT_ID', '')
# 示例:根据 user_identifier 查询用户上下文
# 这里只是演示,实际应该从数据库或其他服务获取
if user_identifier:
context_info = f"""## User Context
用户标识: {user_identifier}
Bot ID: {bot_id}
> 此内容由 user-context-loader skill 的 PrePrompt hook 注入。
> 实际使用时,可以在这里查询用户的位置、偏好、历史记录等信息。
"""
print(context_info)
return 0
return 0
if __name__ == '__main__':
sys.exit(main())