文件预览

cmd.py

查看 1688 Item Title Optimizer 技能包中的文件内容。

文件内容

scripts/capabilities/configure/cmd.py

#!/usr/bin/env python3
"""AK 配置命令 — CLI 入口"""

COMMAND_NAME = "configure"
COMMAND_DESC = "配置 AK"

import os
import sys

sys.path.insert(0, os.path.normpath(os.path.join(os.path.dirname(__file__), '..', '..')))

from _output import print_output, print_error
from capabilities.configure.service import (
    validate_ak, configure_via_gateway, configure_via_file, check_existing_config,
)

def _mask_ak(ak: str) -> str:
    if len(ak) >= 8:
        return f"{ak[:4]}****{ak[-4:]}"
    return "****"

def main():
    try:
        has_existing, existing_ak = check_existing_config()

        if len(sys.argv) < 2:
            if has_existing:
                src = ("环境变量(已生效)" if os.environ.get("ALI_1688_AK")
                       else "OpenClaw 配置(新会话/重载后生效)")
                md = f"✅ AK 已配置: `{_mask_ak(existing_ak)}`(来源: {src})"
            else:
                md = "❌ 尚未配置 AK\n\n运行: `cli.py configure YOUR_AK`"
            print_output(has_existing, md, {"configured": has_existing})
            return

        ak = sys.argv[1].strip()
        is_valid, error_msg = validate_ak(ak)
        if not is_valid:
            print_output(False, f"❌ {error_msg}", {"configured": False})
            return

        write_ok = configure_via_gateway(ak) or configure_via_file(ak)
        if not write_ok:
            print_output(False,
                         "❌ AK 写入失败(Gateway 不可用且 fallback 被拒绝/失败),请检查 Gateway 状态或文件权限",
                         {"configured": False})
            return

        md = (
            f"✅ AK 已保存: `{_mask_ak(ak)}`\n\n"
            "后续由 OpenClaw 配置注入生效(以配置为准,不使用本地会话缓存)。\n\n"
            "若当前会话仍提示 AK未配置或AK无效,请新开会话或执行:`openclaw secrets reload`(或 `openclaw gateway restart`)"
        )
        print_output(True, md, {"configured": True})
    except Exception as e:
        print_error(e, {"configured": False})

if __name__ == "__main__":
    main()