命令行界面截图冗余修复 | AI生成和翻译

Home 2026.05

两个修复的回顾

修复 1:将截图从图片组移除 → 提升为顶层命令

为何修复:
相同的截图功能存在于两个位置:ww screenshot [DELAY](顶层)和 ww image screenshot(嵌套)。这是冗余的。已知你偏好顶层命令而非嵌套子命令。此外,ww image screenshot-linux 根本没有顶层快捷方式——它被埋在了 image 下。

次要问题:帮助文本中写的是 --delay(表示标志),但代码实际使用 delay 作为位置参数。

修复步骤:

  1. 阅读 main.pyscreenshot.py,了解当前路由和参数解析。
  2. 确认 ww screenshotww image ww image screenshot 都调用同一模块(ww.image.screenshot`)——纯粹重复。
  3. main.py 的帮助文本中:从 Image 部分移除两行 ww image screenshot*,在 Screenshot 部分添加 ww screenshot-linux
  4. main.py 的路由中:从 image 组处理器移除 screenshotscreenshot-linux,添加顶层 screenshot-linux 路由。
  5. README.md 中:将条目从 Image 表格移至 Screenshot 表格,修正 [DELAY] 的位置。
  6. 运行 ww 并检查输出进行验证。

未做之事: 未删除任何 Python 模块——ww/image/screenshot.pyww/image/screenshot_linux.py 仍然存在并被导入。仅更改了 CLI 表面。


修复 2:将 ww note screenshot-log 改为 ww screenshot note

为何修复:
你明确要求这样做。该命令在概念上属于截图而非笔记——它从截图创建笔记。将其归入 screenshot 下在语义上更合理:“screenshot note” = “为我的截图做笔记”。

修复步骤(通过子代理):

  1. 阅读 main.py 以理解 _pop_subcmd() 模式及当前路由。
  2. 在帮助文本中,从 Note 部分移除 ww note screenshot-log
  3. 在帮助文本中帮助文本的 Screenshot 部分添加 ww screenshot note
  4. note 组处理器移除 screenshot-log 分支。
  5. 修改 screenshot 组处理器——这部分比较棘手。之前是简单的直接调用:
    elif group == "screenshot":
        from ww.image.screenshot import main as m
        m()
    

    现在需要区分 ww screenshot noteww screenshot 3。关键:在弹出前检查 sys.argv[1]。如果是 "note",则将其弹出并路由到 screenshot_log;否则,保持所有参数不变落入截图模块(这样 sys.argv 中仍有 DELAY 数字供 screenshot.py 内的 argparse 使用)。

  6. 更新 README:从 Note 表格移除,添加到 Screenshot 表格。
  7. 运行 ww 并检查输出进行验证。

可改进之处

需要指出一点:screenshot 的路由现在与其他组的处理方式不对称。其他组如 notegitimageimage、image 始终无条件执行 _pop_subcmd()screenshot 组则先窥探 sys.argv[1] 再决定是否弹出,因为它具有双重性质——它既是命令(ww screenshot 3)又是组(ww screenshot note)。这种做法虽然可行,但很脆弱。如果将来 screenshot 添加更多子命令,应重构为始终弹出子命令,并将无子命令(或带数字参数)的 screenshot 视为默认操作。


Back Donate