This repository has been archived on 2026-08-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
kb-skills/dev-workflow/dev_workflow.py
T

133 lines
3.6 KiB
Python

#!/usr/bin/env python3
"""
Dev Workflow CLI
开发工作流命令行工具,包含 Cross 模式统计报告功能。
"""
import argparse
import sys
from pathlib import Path
# 添加当前目录到路径
sys.path.insert(0, str(Path(__file__).parent))
from stats import record_event, get_stats, format_stats_report
def cmd_stats(args):
"""显示统计报告"""
stats = get_stats()
report = format_stats_report(stats)
print(report)
def cmd_record_event(args):
"""记录一个事件"""
# 构建 metadata
metadata = {}
if args.metadata:
for item in args.metadata:
if "=" in item:
key, value = item.split("=", 1)
metadata[key] = value
success = record_event(
event_type=args.type,
mode=args.mode,
metadata=metadata if metadata else None,
status=args.status
)
if success:
print(f"✅ 事件记录成功: type={args.type}, mode={args.mode}, status={args.status}")
else:
print(f"❌ 事件记录失败")
sys.exit(1)
def cmd_clear_stats(args):
"""清除统计数据(谨慎使用)"""
from stats import STATS_FILE
import os
if STATS_FILE.exists():
if args.force or input("确认清除所有统计数据? [y/N]: ").lower() == "y":
os.remove(STATS_FILE)
print("✅ 统计数据已清除")
else:
print("操作已取消")
else:
print("统计数据文件不存在")
def main():
parser = argparse.ArgumentParser(
description="Dev Workflow - 开发工作流工具",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
示例:
# 查看统计报告
python3 dev_workflow.py stats
# 记录一个 Cross 模式辩论事件
python3 dev_workflow.py record-event --type debate --mode cross
# 记录一个失败的事件(带元数据)
python3 dev_workflow.py record-event --type review --mode normal --status failed --metadata pr_id=123
# 清除统计数据
python3 dev_workflow.py clear-stats --force
"""
)
subparsers = parser.add_subparsers(dest="command", help="可用命令")
# stats 命令
stats_parser = subparsers.add_parser("stats", help="查看统计报告")
stats_parser.set_defaults(func=cmd_stats)
# record-event 命令
record_parser = subparsers.add_parser("record-event", help="记录事件")
record_parser.add_argument(
"--type", "-t",
required=True,
choices=["debate", "review", "audit"],
help="事件类型: debate(辩论), review(评审), audit(审计)"
)
record_parser.add_argument(
"--mode", "-m",
required=True,
choices=["cross", "normal"],
help="运行模式: cross 或 normal"
)
record_parser.add_argument(
"--status", "-s",
default="success",
choices=["success", "failed"],
help="事件状态 (默认: success)"
)
record_parser.add_argument(
"--metadata",
nargs="*",
help="元数据,格式: key=value key2=value2"
)
record_parser.set_defaults(func=cmd_record_event)
# clear-stats 命令
clear_parser = subparsers.add_parser("clear-stats", help="清除统计数据")
clear_parser.add_argument("--force", "-f", action="store_true", help="强制清除,不询问")
clear_parser.set_defaults(func=cmd_clear_stats)
args = parser.parse_args()
if args.command is None:
parser.print_help()
sys.exit(0)
args.func(args)
if __name__ == "__main__":
main()