You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何生成命令词与仓库编号组合,适配MacOS Spotlight执行场景

最优实现方案

前置规则对齐(先消除冗余,避免生成无效文件)

因为你提到命令顺序不影响执行效果,我们先统一规则合并语义相同的命令,减少生成的文件量:

  • 单个命令词在文件名中最多出现1次:如run1run2和run12完全等价,仅保留后者
  • 单个命令词后接的仓库编号统一按升序排列、去重:如run21和run12等价,仅保留run12
  • 多个命令块统一按固定顺序拼接:按run→pull→code→browser的固定顺序排列,如pull2run1等价于run1pull2,仅保留后者

核心实现思路

所有生成的小可执行文件不需要写独立逻辑,统一调用你自己实现的核心解析脚本即可,文件内容固定为:

#!/bin/bash
# 替换为你自己的核心脚本绝对路径
/Users/你的用户名/.spotlight-cmd/core-handler "$0"

核心脚本只需要接收文件名作为入参,自己拆分解析命令词和对应的仓库编号,执行对应逻辑即可。

批量生成代码示例(Python)

import os
from itertools import product

# 配置项
COMMANDS = ['run', 'pull', 'code', 'browser']
REPOS = [0,1,2,3,4,5,6]
CMD_DIR = os.path.expanduser('~/.spotlight-cmd/executables')
EXEC_CONTENT = '''#!/bin/bash
/Users/你的用户名/.spotlight-cmd/core-handler "$0"
'''

# 创建存储目录
os.makedirs(CMD_DIR, exist_ok=True)

# 生成每个命令对应的所有非空仓库组合
cmd_options = [[]]  # 空选项代表不使用该命令
for cmd in COMMANDS:
    opts = []
    # 遍历所有非空仓库子集
    for mask in range(1, 1 << len(REPOS)):
        selected_repos = ''.join(str(REPOS[i]) for i in range(len(REPOS)) if mask & (1 << i))
        opts.append(f"{cmd}{selected_repos}")
    cmd_options.append(opts)

# 生成所有合法命令组合
for combo in product(*cmd_options):
    if not combo:
        continue  # 跳过全空组合
    filename = ''.join(combo)
    file_path = os.path.join(CMD_DIR, filename)
    with open(file_path, 'w') as f:
        f.write(EXEC_CONTENT)
    os.chmod(file_path, 0o755)  # 加可执行权限

优化建议

如果觉得全量生成2亿+文件太多(实际常用场景不会同时使用多个命令),可以限制最多同时使用2-3个命令,文件量会降到数十万级别,完全符合你的预期:

  • 仅生成1个命令块:4 * 127 = 508个
  • 仅生成2个命令块:C(4,2) * 127 127 = 616129=96774个
  • 仅生成3个命令块:C(4,3)127^3=42048383=8193532个,不需要的话可以直接砍掉

配套配置

把你存放可执行文件的目录~/.spotlight-cmd/executables加到MacOS的Spotlight索引列表中,同时可以在Time Machine中排除该目录,避免占用备份空间。

内容的提问来源于stack exchange,提问作者uber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:06:05