"""TaskPilot 演示任务。 在 TaskPilot 里把「项目工作目录」指向本目录、解释器填 ``python.exe``、脚本填 ``main.py``,后端会自动关联同级的 ``.venv`` 并以虚拟环境解释器运行。 常用参数: --lines N 输出 N 行中文(默认 3) --sleep N 执行前等待 N 秒,用于验证超时与取消 --fail 以退出码 3 结束,用于验证失败状态 --append PATH 把一行结果追加到指定文件,用于验证副作用 """ from __future__ import annotations import argparse import os import sys import time from datetime import datetime, timezone from pathlib import Path def main() -> int: parser = argparse.ArgumentParser(description="TaskPilot python demo task") parser.add_argument("--lines", type=int, default=3) parser.add_argument("--sleep", type=float, default=0.0) parser.add_argument("--fail", action="store_true") parser.add_argument("--append", type=Path) args = parser.parse_args() started = datetime.now(timezone.utc).isoformat(timespec="seconds") print(f"[demo] 启动时间 {started}") print(f"[demo] 解释器 {sys.executable}") print(f"[demo] VIRTUAL_ENV {os.environ.get('VIRTUAL_ENV', '<未设置>')}") print(f"[demo] 工作目录 {Path.cwd()}") print(f"[demo] 参数 lines={args.lines} sleep={args.sleep} fail={args.fail}") for index in range(args.lines): print(f"[demo] 第 {index + 1} 行:中文输出与勾选 √") if args.append is not None: args.append.parent.mkdir(parents=True, exist_ok=True) with args.append.open("a", encoding="utf-8") as handle: handle.write(f"{started} ok\n") print(f"[demo] 已追加写入 {args.append}") if args.sleep > 0: print(f"[demo] 开始等待 {args.sleep} 秒", flush=True) time.sleep(args.sleep) if args.fail: print("[demo] 按要求返回失败", file=sys.stderr) return 3 print("[demo] 完成") return 0 if __name__ == "__main__": raise SystemExit(main())