本次更新由 mimo 自动化执行,与开发者无关。 新增 xiaoli/ 包: - __main__.py: 入口点 (python -m xiaoli) - app.py: 主应用薄编排层(~400行 vs 原3860行) - config.py: 配置管理 - engines.py: AI 引擎管理 - sandbox.py: 代码安全沙箱 - prompt.py: 系统提示词构建 - conversation/: 对话解析器 + 历史管理 - display/: CLI/TUI 双模式输出 改进: - 支持 argparse (--tui, --engine, --version) - 插件命令注册表 - 更新 README - 更新 .gitignore 原 ai_cli.py 保留向后兼容
84 lines
8.7 KiB
Python
84 lines
8.7 KiB
Python
"""入口点 - python -m xiaoli"""
|
|
import sys
|
|
import os
|
|
import argparse
|
|
import time
|
|
from colorama import init
|
|
|
|
# 确保项目根目录在 sys.path 中
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="小狸 Pro-CLI - 智能编程助手")
|
|
parser.add_argument('--tui', action='store_true', help='启动 TUI 模式')
|
|
parser.add_argument('--engine', type=str, help='指定 AI 引擎')
|
|
parser.add_argument('--version', action='store_true', help='显示版本')
|
|
args = parser.parse_args()
|
|
|
|
init(autoreset=True)
|
|
|
|
if args.version:
|
|
from xiaoli import __version__
|
|
print(f"小狸 Pro-CLI v{__version__}")
|
|
return
|
|
|
|
# 启动动画
|
|
_show_art()
|
|
|
|
from xiaoli.app import App
|
|
app = App()
|
|
|
|
if args.engine:
|
|
app._switch_model(args.engine)
|
|
|
|
if args.tui:
|
|
app._run_tui()
|
|
else:
|
|
app.run()
|
|
|
|
|
|
def _show_art():
|
|
"""启动艺术字"""
|
|
art = [
|
|
"█████████████████████████████████████████████████████████████████████████████████████████████████████",
|
|
"██████████ ▒████████████████████████████████████████████████████",
|
|
"██████████ ░██████████████████████████████████████████████████████",
|
|
"██████████ ████████████████████████████████████████████████████████",
|
|
"██████████ ▓█████████████████████████████████████████████████████████",
|
|
"██████████ ▒███████████████████████████████████████████████████████████",
|
|
"██████████ █████████████████████████████████████████████████████████████",
|
|
"██████████ ███████████████████████████████████████████████████████████████",
|
|
"██████████ ▓███████████████████████████████████████████████████████████████",
|
|
"██████████ ░████████████████████████████████████████████████████████████████",
|
|
"██████████ ██████████████████████████████████████████████████████████████████",
|
|
"██████████ ████████████████████████████████████████████████████████████████████",
|
|
"██████████ ▓████████████████████████████████████████████████████████████████████",
|
|
"██████████ ░██████████████████████████████████████████████████████████████████████",
|
|
"██████████ ████████████████████████████████████████████████████████████████████████",
|
|
"██████████ ██████████████████████████████████████████████████████████████████████████",
|
|
"██████████ ░██████████████████████████████████████████████████████████████████████████",
|
|
"██████████ ████████████████████████████████████████████████████████████████████████████",
|
|
"██████████ ████████████████████████████████████████████████████████████████████████████",
|
|
"██████████ ▓██████████████████████████████████████████████████████████████████████████",
|
|
"██████████ ████████████████████████████████████████████████████████████████████████████",
|
|
"██████████ ████████████████████████████████████████████████████████████████████████████",
|
|
"███████████ ████████████████████████████████████████████████████████████████████████████",
|
|
"█████████████▓ ████████████████████████████████████████████████████████████████████████████",
|
|
"█████████████████ ▓██████████████████████████████████████████████████████████████████████████",
|
|
"███████████████████▒ ████████████████████████████████████████████████████████████████████████████",
|
|
"█████████████████████████████████████████████████████████████████████████████████████████████████████",
|
|
"█████████████████████████████████████████████████████████████████████████████████████████████████████",
|
|
]
|
|
|
|
for line in art:
|
|
try:
|
|
print(line, flush=True)
|
|
except UnicodeEncodeError:
|
|
pass
|
|
time.sleep(0.03)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|