命令行界面截图冗余修复 | AI生成和翻译
两个修复的回顾
修复 1:将截图从图片组移除 → 提升为顶层命令
为何修复:
相同的截图功能存在于两个位置:ww screenshot [DELAY](顶层)和 ww image screenshot(嵌套)。这是冗余的。已知你偏好顶层命令而非嵌套子命令。此外,ww image screenshot-linux 根本没有顶层快捷方式——它被埋在了 image 下。
次要问题:帮助文本中写的是 --delay(表示标志),但代码实际使用 delay 作为位置参数。
修复步骤:
- 阅读
main.py和screenshot.py,了解当前路由和参数解析。 - 确认
ww screenshot和ww imageww image screenshot都调用同一模块(ww.image.screenshot`)——纯粹重复。 - 在
main.py的帮助文本中:从 Image 部分移除两行ww image screenshot*,在 Screenshot 部分添加ww screenshot-linux。 - 在
main.py的路由中:从image组处理器移除screenshot和screenshot-linux,添加顶层screenshot-linux路由。 - 在
README.md中:将条目从 Image 表格移至 Screenshot 表格,修正[DELAY]的位置。 - 运行
ww并检查输出进行验证。
未做之事: 未删除任何 Python 模块——ww/image/screenshot.py 和 ww/image/screenshot_linux.py 仍然存在并被导入。仅更改了 CLI 表面。
修复 2:将 ww note screenshot-log 改为 ww screenshot note
为何修复:
你明确要求这样做。该命令在概念上属于截图而非笔记——它从截图创建笔记。将其归入 screenshot 下在语义上更合理:“screenshot note” = “为我的截图做笔记”。
修复步骤(通过子代理):
- 阅读
main.py以理解_pop_subcmd()模式及当前路由。 - 在帮助文本中,从 Note 部分移除
ww note screenshot-log。 - 在帮助文本中帮助文本的 Screenshot 部分添加
ww screenshot note。 - 从
note组处理器移除screenshot-log分支。 - 修改
screenshot组处理器——这部分比较棘手。之前是简单的直接调用:elif group == "screenshot": from ww.image.screenshot import main as m m()现在需要区分
ww screenshot note和ww screenshot 3。关键:在弹出前检查sys.argv[1]。如果是"note",则将其弹出并路由到screenshot_log;否则,保持所有参数不变落入截图模块(这样sys.argv中仍有 DELAY 数字供screenshot.py内的 argparse 使用)。 - 更新 README:从 Note 表格移除,添加到 Screenshot 表格。
- 运行
ww并检查输出进行验证。
可改进之处
需要指出一点:screenshot 的路由现在与其他组的处理方式不对称。其他组如 note、git、imageimage、image 始终无条件执行 _pop_subcmd()。screenshot 组则先窥探 sys.argv[1] 再决定是否弹出,因为它具有双重性质——它既是命令(ww screenshot 3)又是组(ww screenshot note)。这种做法虽然可行,但很脆弱。如果将来 screenshot 添加更多子命令,应重构为始终弹出子命令,并将无子命令(或带数字参数)的 screenshot 视为默认操作。