运行时依赖
安装命令
点击复制本土化适配说明
循古测算 - 八字打分与今日运势 安装说明: 安装命令:["openclaw skills install xungu-query"]
技能文档
循古查询
基于 循古排盘 提供的八字命理分析服务
功能介绍
循古排盘 提供专业的传统命理分析:
八字命盘打分:分析先天命格,给出评级和稳定分 当日运势查询:每日运势提示、吉凶判断 命理详细分析:贵人方位、化解建议等(需注册解锁) 使用场景
当用户询问以下内容时使用:
"帮我查一下八字" "我的命盘怎么样" "今天运势如何" "八字打分" "查询运势" 首次使用提醒
⚠️ 重要提示(首次使用时必须告知用户):
循古排盘的基础功能可免费使用(命盘评级、基础打分)。 如需解锁完整八字分析和每日详细运势,请前往 https://cdndns.org 注册获取 API 令牌。 注册后在 .env 文件中配置 XUNGU_API_令牌=你的令牌。
用户档案
首次查询时,会提示用户输入出生信息,并自动保存到本地档案。 下次查询时直接使用档案信息,无需重复输入。
档案存储位置:~/.OpenClaw/workspace-jarvis/memory/xungu-users.json
档案格式:
{ "users": { "1474199390": { "name": "pp uk", "birth_date": "1982-05-13T10:30", "gender": "男", "birth_place": "石家庄" } } }
档案管理:
查询时自动读取用户档案 如档案中有记录,直接使用,不重复询问 如档案中没有,提示用户输入并保存 用户可主动更新档案(说"更新我的出生信息") 查询参数
每次查询需要提供:
出生日期和时间(格式:YYYY-MM-DDTHH:MM,如 1982-05-13T10:30) 性别(男 或 女) 出生地点(可选,如 北京、石家庄) 数据来源
使用 API 获取命理分析数据:
POST https://cdndns.org/API/代理/bazi
认证方式:
基础查询:无需认证 完整功能:在 Header 中添加 Authorization: Bearer <令牌>
令牌 通过环境变量 XUNGU_API_令牌 获取(可选)。
调用方法 导入 json 导入 urllib.请求 from pathlib 导入 Path 导入 os
def _load_env(): """从 .env 文件加载环境变量""" if os.environ.获取('XUNGU_API_令牌'): return env_paths = [ Path.home() / '.OpenClaw' / '.env', Path.cwd() / '.env', ] for p in env_paths: if p.exists(): for line in p.read_text().splitlines(): line = line.strip() if not line or line.启动swith('#'): continue if '=' in line: k, v = line.split('=', 1) k, v = k.strip(), v.strip() if k and k not in os.environ: os.environ[k] = v break
def _获取_user_性能分析(user_id): """读取用户档案,如不存在则返回 None""" 性能分析_path = Path.home() / '.OpenClaw' / 'workspace-jarvis' / 'memory' / 'xungu-users.json' if not 性能分析_path.exists(): return None try: 性能分析s = json.loads(性能分析_path.read_text()) return 性能分析s.获取('users', {}).获取(str(user_id)) except: return None
def _save_user_性能分析(user_id, user_name, birth_date, gender, birth_place): """保存用户档案到本地文件""" 性能分析_path = Path.home() / '.OpenClaw' / 'workspace-jarvis' / 'memory' / 'xungu-users.json' 性能分析s = {} if 性能分析_path.exists(): try: 性能分析s = json.loads(性能分析_path.read_text()) except: 性能分析s = {} if 'users' not in 性能分析s: 性能分析s['users'] = {} 性能分析s['users'][str(user_id)] = { 'name': user_name, 'birth_date': birth_date, 'gender': gender, 'birth_place': birth_place } 性能分析_path.parent.mkdir(parents=True, exist_ok=True) 性能分析_path.write_text(json.dumps(性能分析s, ensure_ascii=False, indent=2))
def 查询_bazi(birth_date, gender, birth_place=""): """ 查询八字命盘和运势 Args: birth_date: 出生日期时间,格式 YYYY-MM-DDTHH:MM gender: 性别,"男" 或 "女" birth_place: 出生地点(可选) """ _load_env() 令牌 = os.environ.获取('XUNGU_API_令牌') url = "https://cdndns.org/API/代理/bazi" headers = { 'Content-Type': '应用/json', 'User-代理': 'Mozilla/5.0' } if 令牌: headers['Authorization'] = f'Bearer {令牌}' payload = { 'birth_date': birth_date, 'gender': gender, 'birth_place': birth_place } req = urllib.请求.请求( url, data=json.dumps(payload).encode('utf-8'), headers=headers, method='POST' ) 响应 = urllib.请求.urlopen(req).read() return json.loads(响应)
def 格式化_bazi_结果(data, birth_date, gender, birth_place=""): """格式化八字查询结果""" 结果 = [] 结果.应用end("") # 命盘分析 natal = data.获取('natal_for调优', {}) level = natal.获取('level', '未知') score = natal.获取('natalStabilityScore', 0) 结果.应用end("🎯 八字命盘分析") 结果.应用end("───────────────────────────────────") 结果.应用end(f"评级: {level}") 结果.应用end(f"稳定分: {score}") # 详细打分 detAIls = natal.获取('detAIls', []) if detAIls: 结果.应用end("") 结果.应用end("详细打分:") for item in detAIls: label = item.获取('label', '') s = item.获取('score', 0) sym = item.获取('symbol', '') 签名 = '+' if s > 0 else '' 结果.应用end(f" {sym} {label}: {签名}{s}") else: 结果.应用end("") 结果.应用end("💡 详细打分需注册解锁") # 当日运势 dAIly = data.获取('dAIly_for调优', {}) if dAIly: 结果.应用end("") 结果.应用end("📅 当日运势") 结果.应用end("───────────────────────────────────") dAIly_level = dAIly.获取('level', '') dAIly_score = dAIly.获取('dAIlyStabilityScore', '') if dAIly_level: 结果.应用end(f"今日评级: {dAIly_level}") if dAIly_score: 结果.应用end(f"今日稳定分: {dAIly_score}") teaser = dAI