diff --git a/.gitee/pipeline.yml b/.gitee/pipeline.yml deleted file mode 100644 index 7531f94..0000000 --- a/.gitee/pipeline.yml +++ /dev/null @@ -1,117 +0,0 @@ -# Gitee Go CI 流水线 - -triggers: - push: - branches: - - master - - main - pull_request: - branches: - - master - - main - -stages: - - lint - - test - - structure - -jobs: - py-compile: - name: 语法检查 - stage: lint - image: python:3.12 - script: - - python -c " - import py_compile, os, sys; - errors = 0; - for root, dirs, files in os.walk('.'): - dirs[:] = [d for d in dirs if d not in {'.git', '__pycache__', 'node_modules', 'embedded_python'}]; - for f in files: - if f.endswith('.py'): - path = os.path.join(root, f); - try: - py_compile.compile(path, doraise=True); - except py_compile.PyCompileError as e: - print(f'ERROR: {e}'); - errors += 1; - if errors: - print(f'{errors} 个文件有语法错误'); - sys.exit(1); - print('所有文件语法正确') - " - - ruff-lint: - name: Ruff lint - stage: lint - image: python:3.12 - script: - - pip install ruff -q - - ruff check . --select E,F,W --ignore E501,E402 --exclude .git,__pycache__,embedded_python - - pytest-310: - name: 插件测试 (Python 3.10) - stage: test - image: python:3.10 - script: - - pip install pytest colorama -q - - pytest tests/ -v --tb=short - - pytest-311: - name: 插件测试 (Python 3.11) - stage: test - image: python:3.11 - script: - - pip install pytest colorama -q - - pytest tests/ -v --tb=short - - pytest-312: - name: 插件测试 (Python 3.12) - stage: test - image: python:3.12 - script: - - pip install pytest colorama -q - - pytest tests/ -v --tb=short - - structure: - name: 项目结构检查 - stage: structure - image: python:3.12 - script: - - echo "检查项目结构..." - - | - files=( - "ai_cli.py" - "launcher.py" - "xcli_core/cli_core.py" - "xcli_core/cli_base.py" - "xcli_core/config.py" - "xcli_core/constants.py" - "ai_engines/ollama_engine.py" - "ai_engines/openai_engine.py" - "plugins/code_editor.py" - "plugins/cmd_executor.py" - "plugins/file_manager.py" - "plugins/auto_engineer.py" - ) - missing=0 - for f in "${files[@]}"; do - if [ -f "$f" ]; then - echo " ✓ $f" - else - echo " ✗ $f (缺失!)" - missing=$((missing + 1)) - fi - done - if [ $missing -gt 0 ]; then - echo "${missing} 个文件缺失" - exit 1 - fi - echo "项目结构完整" - - | - engines=$(ls ai_engines/*_engine.py 2>/dev/null | wc -l) - echo "AI 引擎数量: $engines" - if [ "$engines" -gt 2 ]; then - echo "警告: 引擎数量超过 2 个" - exit 1 - fi - echo "引擎数量正常" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 7dfb236..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,148 +0,0 @@ -name: CI - -on: - push: - branches: [master, main] - pull_request: - branches: [master, main] - -jobs: - lint: - name: 代码检查 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: 安装 Python - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - - name: 安装依赖 - run: pip install ruff - - - name: 语法检查 (py_compile) - run: | - python -c " - import py_compile, os, sys - errors = 0 - for root, dirs, files in os.walk('.'): - dirs[:] = [d for d in dirs if d not in {'.git', '__pycache__', 'node_modules', 'embedded_python'}] - for f in files: - if f.endswith('.py'): - path = os.path.join(root, f) - try: - py_compile.compile(path, doraise=True) - except py_compile.PyCompileError as e: - print(f'ERROR: {e}') - errors += 1 - if errors: - print(f'\n{errors} 个文件有语法错误') - sys.exit(1) - print('所有文件语法正确') - " - - - name: Ruff lint - run: ruff check . --select E,F,W --ignore E501,E402,W503 --exclude .git,__pycache__,embedded_python - - test: - name: 插件测试 - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.10", "3.11", "3.12"] - steps: - - uses: actions/checkout@v4 - - - name: 安装 Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - name: 安装测试依赖 - run: pip install pytest colorama - - - name: 运行测试 - run: pytest tests/ -v --tb=short - - structure: - name: 项目结构检查 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: 安装 Python - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - - name: 检查必要文件 - run: | - echo "检查项目结构..." - files=( - "ai_cli.py" - "launcher.py" - "xcli_core/cli_core.py" - "xcli_core/cli_base.py" - "xcli_core/config.py" - "xcli_core/constants.py" - "ai_engines/ollama_engine.py" - "ai_engines/openai_engine.py" - "plugins/code_editor.py" - "plugins/git_tools.py" - "plugins/cmd_executor.py" - "plugins/file_manager.py" - "plugins/auto_engineer.py" - ) - missing=0 - for f in "${files[@]}"; do - if [ -f "$f" ]; then - echo " $f" - else - echo " $f (缺失!)" - missing=$((missing + 1)) - fi - done - if [ $missing -gt 0 ]; then - echo "\n${missing} 个文件缺失" - exit 1 - fi - echo "\n项目结构完整" - - - name: 检查旧文件已清理 - run: | - old_files=( - "ai_engines/mimo_engine.py" - "ai_engines/GLM_http_engine.py" - "ai_engines/qwq_engine.py" - "ai_engines/xfyun_spark_engine.py" - "ai_engines/iflow_api_engine.py" - "ai_engines/maas_http_engine.py" - "ai_engines/SDK_openAI.py" - "plugins/git_workflow.py" - "plugins/code_search.py" - "plugins/project_analyzer.py" - "plugins/scheduler.py" - ) - found=0 - for f in "${old_files[@]}"; do - if [ -f "$f" ]; then - echo " 旧文件未清理: $f" - found=$((found + 1)) - fi - done - if [ $found -gt 0 ]; then - echo "\n${found} 个旧文件未清理" - exit 1 - fi - echo "旧文件已全部清理" - - - name: 检查无重复引擎 - run: | - engines=$(ls ai_engines/*_engine.py 2>/dev/null | wc -l) - echo "AI 引擎数量: $engines" - if [ "$engines" -gt 2 ]; then - echo "警告: 引擎数量超过 2 个 (ollama + openai)" - exit 1 - fi - echo "引擎数量正常" diff --git a/compare.html b/compare.html deleted file mode 100644 index ef70cfc..0000000 --- a/compare.html +++ /dev/null @@ -1,1161 +0,0 @@ - - -
- - -
- 7 款终端 / 桌面 AI 编程助手,同口径对比:功能、安全、生态、定价。
- 从大厂旗舰到社区极客,从 CLI 到 GUI,谁才是你的最佳搭档?
-
同一套评价标准,逐项打分。绿色 = 支持,黄色 = 部分支持,红色 = 不支持。小狸(紫)vs TG-HELPER(橙)为国产双雄高亮列。
-| 对比维度 | -Claude Code | -Codex CLI | -Gemini CLI | -Aider | -Copilot CLI | -小狸 Pro-CLI | -TG HELPER | -
|---|---|---|---|---|---|---|---|
| 基础信息 | |||||||
| 首发时间 | -2025.02 | -2025.04 | -2025.06 | -2023.05 | -2025.09 | -2025 | -2025 | -
| 开源协议 | -闭源 | -Apache 2.0 | -Apache 2.0 | -Apache 2.0 | -闭源 | -MIT | -MIT | -
| 界面形态 | -CLI | -CLI | -CLI | -CLI | -CLI | -CLI + TUI + Web | -桌面 GUI (tkinter) | -
| 运行平台 | -Mac/Linux/Win | -Mac/Linux/Win | -Mac/Linux/Win | -Mac/Linux/Win | -Mac/Linux/Win | -Mac/Linux/Win | -Windows 为主 | -
| 编程语言 | -TypeScript | -TypeScript | -TypeScript | -Python | -Go | -Python | -Python | -
| 默认模型 | -Claude Sonnet 4 | -o3 / o4-mini | -Gemini 2.5 Pro | -自选(多模型) | -GPT-4.1 | -Ollama / DeepSeek | -Ollama / DeepSeek | -
| 本地模型 | -✗ | -✗ | -✗ | -✓ Ollama/vLLM | -✗ | -✓ Ollama | -✓ Ollama + GGUF | -
| ✏️ 代码编辑能力 | |||||||
| 精准替换 | -✓ | -✓ | -✓ | -✓ | -✓ | -✓ edit/multi | -✓ write_file | -
| 批量编辑 | -✓ | -◑ | -◑ | -✓ 多文件 | -◑ | -✓ multi | -◐ | -
| 语法自动检查 | -◑ Lint | -✗ | -✗ | -◑ Lint | -✗ | -✓ 编辑后自动 | -✗ | -
| 代码搜索 | -✓ Grep | -◑ | -✓ | -✓ AST | -◑ | -✓ 11 种 | -◐ grep | -
| AST 分析 | -◑ | -✗ | -◑ | -✓ tree-sitter | -✗ | -✓ | -✗ | -
| 版本控制 | |||||||
| Git 操作 | -✓ 完整 | -✓ 完整 | -✓ 完整 | -✓ 深度集成 | -✓ 基础 | -✓ 20 操作 | -✓ git_tools | -
| Smart Commit | -✓ | -◑ | -◑ | -✓ | -✗ | -✓ | -✗ | -
| Agent 能力 | |||||||
| 子 Agent / 多代理 | -✓ 子代理 | -✗ | -✗ | -✗ | -✗ | -✓ 多 Agent | -◐ 预留 | -
| 工具调用协议 | -FC 原生 | -FC 原生 | -FC 原生 | -Editor | -FC 原生 | -JSON + FC | -JSON 解析 | -
| MCP 协议 | -✓ 内建 | -◐ 实验 | -✓ | -✗ | -◐ | -◐ Skill | -◐ 适配器 | -
| 上下文压缩 | -✓ | -◑ | -✓ 1M | -✓ Repo Map | -✗ | -✓ 自动 | -✓ 自动摘要 | -
| 记忆系统 | |||||||
| 短期记忆 | -◐ | -✗ | -◐ | -✗ | -✗ | -◐ 对话历史 | -✓ 独立模块 | -
| 长期记忆 | -✓ 企业级 | -✗ | -◐ | -✗ | -✗ | -◐ 文件级 | -✓ SQLite + 向量 | -
| 反思 / 自省 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 后台反思线程 | -
| 全文检索 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ FTS5 | -
| 向量检索 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ ChromaDB | -
| 安全机制 | |||||||
| 安全模式 | -◐ 权限 | -✓ 三模式 | -✗ | -✗ | -✗ | -✓ 三模式 | -✓ 弹窗确认 | -
| AI 风险分析 | -✓ | -◐ | -✗ | -✗ | -✗ | -✓ AI 分析 | -✗ | -
| 代码沙箱 | -✓ | -✓ Docker | -✗ | -✗ | -✗ | -✓ AST+子进程 | -✗ | -
| 浏览器 & IoT & 多模态 | |||||||
| 浏览器自动化 | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 31 操作 | -✓ 22+ 反爬 | -
| 反反爬虫 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 随机UA/代理 | -
| 物联网 (IoT) | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ MQTT/TCP/UDP | -
| 智能家居控制 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 主动巡检 | -
| QQ 机器人 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ OneBot | -
| 语音识别 | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ | -✓ TTS | -
| 图像/视频分析 | -✓ | -◐ | -✓ | -◐ | -✗ | -✓ | -✓ 多模态 | -
| 多媒体编辑 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 图片/音频/视频 | -
| 办公自动化 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ Excel/PDF/Word | -
| Arduino 嵌入式 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 全流程 | -
| 键鼠模拟 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ pyautogui | -
| 人格 & 社交 | |||||||
| AI 人格系统 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 3 人格 + 群聊 | -
| 多人格互喷 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 热闹模式 | -
| 皮肤/主题 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 17 种 | -
| 界面体验 | |||||||
| CLI 模式 | -✓ | -✓ | -✓ | -✓ | -✓ | -✓ | -✗ GUI | -
| TUI 图形化 | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ Textual | -✗ | -
| 桌面 GUI | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ tkinter | -
| Web UI | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 纯静态 | -◐ Flask API | -
| 插件 & 扩展 | |||||||
| 插件系统 | -✓ MCP | -◐ MCP | -✓ MCP | -✗ | -◐ | -✓ 15 插件 | -✓ V2 + 适配器 | -
| 跨平台插件兼容 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ OpenClaw/小狸 | -
| AI 插件翻译器 | -✗ | -✗ | -✗ | -✗ | -✗ | -✗ | -✓ 一键转换 | -
| 定价 & 生态 | |||||||
| 免费使用 | -◐ 有限 | -◐ Plus | -✓ 个人 | -✓ 完全 | -◐ Free | -✓ 完全 | -✓ 完全 | -
| 国内可用性 | -◐ 需代理 | -◐ 需代理 | -◐ 需代理 | -✓ | -◐ 需代理 | -✓ 原生 | -✓ 原生 | -
| 插件/工具数 | -MCP 生态 | -MCP 生态 | -MCP 生态 | -— | -— | -15 / 141 操作 | -70+ 工具 | -
基于功能完整度、易用性、生态成熟度的综合评分(满分 10)
-没有最好的工具,只有最合适的场景。
-小狸 Pro-CLI vs TG HELPER — 同为国产开源,风格截然不同。
- -小狸和 TG-HELPER 各有所长,和国际大厂工具形成互补。
-| 能力维度 | -Claude Code | -小狸 Pro-CLI | -TG HELPER | -
|---|---|---|---|
| 核心定位 | -企业级编程 Agent | -全栈编程 CLI 助手 | -桌面级全能 AI 智能体 | -
| 最强项 | -子代理协作 + MCP 生态 | -代码编辑 + 安全沙箱 + 浏览器 | -IoT + QQ + 记忆系统 + 人格 | -
| 最弱项 | -价格高、闭源 | -生态孤立、无记忆系统 | -代码编辑弱、无沙箱 | -
| 适合场景 | -企业大型项目、复杂流程 | -日常编码、快速原型、爬虫 | -智能家居、社交机器人、办公自动化 | -
| 学习曲线 | -中等 | -低 | -中等 | -
| 社区活跃度 | -高(Anthropic 官方) | -低(个人项目) | -低(个人项目) | -
| 互补关系 | -— | -小狸补编码能力 → TG 补 IoT/社交 | -TG 补 IoT/社交 → 小狸补编码能力 | -
Claude Code 是当前综合最强的 CLI 编程助手,子代理 + MCP + 企业级安全,但价格不菲且闭源。
-Aider 是开源社区的标杆,Git 深度集成 + 多模型支持,极客首选。
-Gemini CLI 靠免费 + 1M 上下文杀出一条路,适合预算有限的个人开发者。
-小狸 Pro-CLI 是"编码特化型" — 一个人做出了大厂级的代码编辑和安全能力,三界面切换、浏览器自动化在同类工具中独一无二。适合以编码为核心的开发者。
-TG HELPER 是"桌面全能型" — 功能广度碾压所有竞品,IoT 控制、QQ 机器人、人格系统、记忆系统、Arduino 全流程这些特性在 AI 助手领域前无古人。适合想要一个"真正的生活/工作管家"的用户。
-- 彩蛋:TG HELPER 已经内置了小狸和 OpenClaw 的插件适配器,理论上可以互相导入插件。国产 AI 工具生态正在形成自己的联盟。 -
-新增自动语法检查 · Diff 弹窗 · Web UI 后,与同类产品的实力对比
- -v5.1.2 新增 3 大功能,补齐了编辑后自动验证和可视化界面的短板。
- -编辑操作完成后自动触发,覆盖 11 种语言:Python (ast.parse + py_compile 双重验证)、JavaScript、TypeScript、JSON、YAML、TOML、HTML/XML、CSS、Shell (bash -n)、SQL。通过显示 ✓,失败显示精确的行号/列号/错误描述。AI 也可主动调用 syntax_check。
每次编辑后自动弹出新终端窗口,显示修改前/后的完整内容(带行号)、unified diff 差异、+N/-M 行数统计。兼容 Windows (cmd) / macOS (Terminal) / Linux (gnome-terminal 等 6 种)。异步不阻塞,diff_popup on/off 一键开关。
纯静态 HTML 界面,零依赖、零后端,浏览器直接打开。三栏布局:左侧文件树、中间对话/编辑器(Tab 切换)、右侧状态面板。暗色主题、动画效果、快捷芯片、行号编辑器、Ctrl+S 保存。
-v5.1.2 新增功能后,小狸在语法验证和界面维度补齐了关键差距。绿色高亮 = 本次新增优势。
- -| 维度 | 小狸 v5.1.2 | Claude Code | OpenClaw | Aider | Cursor |
|---|---|---|---|---|---|
| 开源 | ✅ MIT | ❌ | ✅ | ✅ Apache | ❌ |
| 本地模型 | ✅ Ollama 原生 | ❌ | ⚠️ 有限 | ⚠️ 需配置 | ❌ |
| 代码编辑 | ✅ 24 操作 | ✅ | ✅ | ✅ | ✅ |
| 自动语法检查 | ✅ 11 语言 · 自动+主动 | ❌ | ❌ | ❌ | ⚠️ 有限 |
| Diff 弹窗 | ✅ 自动弹窗 · 可开关 | ❌ | ❌ | ❌ | ⚠️ 内置 diff |
| Web UI | ✅ 纯静态 HTML | ❌ | ⚠️ Canvas | ❌ | ✅ GUI IDE |
| Git 集成 | ✅ 20 操作 | ✅ | ✅ GitHub | ✅ | ✅ |
| 浏览器自动化 | ✅ 31 操作 | ❌ | ✅ | ❌ | ❌ |
| 子 Agent | ✅ 多 Agent 并行 | ❌ | ✅ 强大 | ❌ | ❌ |
| 安全沙箱 | ✅ AST+子进程+三模式 | ⚠️ 权限 | ✅ 多层 | ⚠️ 基础 | ⚠️ 沙箱 |
| 持久化记忆 | ✅ MEMORY+日记+检索 | ⚠️ CLAUDE.md | ✅ 完整 | ⚠️ 有限 | ⚠️ 有限 |
| TUI 界面 | ✅ Textual 动画 | ❌ 纯 CLI | ⚠️ | ❌ | ✅ GUI |
| 工程化工具 | ✅ lint/format/test/build | ⚠️ | ⚠️ | ⚠️ | ✅ |
| 语音识别 | ✅ STT | ❌ | ⚠️ TTS | ❌ | ❌ |
| 远程控制 | ✅ Clawli+WebSocket | ❌ | ✅ 多渠道 | ❌ | ❌ |
| 测试覆盖 | ✅ 113 用例 | ❌ | ⚠️ | ✅ | ❌ |
| 中文原生 | ✅ | ⚠️ | ✅ | ⚠️ | ⚠️ |
| 价格 | 免费 | $20/月 | 免费 | $20/月 | $20/月 |
满分 10 分,基于代码审查和功能实测。
- -这三项功能在同类产品中均无直接竞品。
- -Claude Code:不做语法检查,依赖模型自身判断。
- Aider:不做语法检查。
- Cursor:有 lint 集成但非自动触发。
- 小狸:编辑后 自动 触发,11 种语言,AST 级精确错误定位。AI 修改代码后立刻知道对不对,不用等运行时才发现。这是编程 CLI 赛道的首创。
Claude Code:终端内显示 diff 文本。
- Aider:终端内显示 diff。
- Cursor:IDE 内置 diff 视图。
- 小狸:每次编辑后 弹出独立窗口,完整显示修改前后内容 + 行号 + unified diff + 统计。不挤在终端里,一目了然。diff_popup off 一键关闭。
Claude Code:纯 CLI,无 UI。
- Aider:纯 CLI,无 UI。
- OpenClaw:Canvas 组件,非完整 UI。
- 小狸:纯静态 HTML 文件,双击打开。暗色主题三栏布局,对话 + 编辑器 + 文件树 + 状态面板。不需要 npm、不需要 Flask、不需要任何后端。
功能维度:能。16 插件 142 操作 + 自动语法检查 + Diff 弹窗 + 三模式界面,功能广度已经超过 Claude Code 和 Aider,在语法验证维度甚至领先全行业。
-体验维度:接近。Web UI 补齐了可视化短板,TUI 动画体验独特。但底层模型能力差距决定了对话质量和代码生成精度仍有代差。
-生态维度:差距大。社区、插件市场、贡献者体系是最大的结构性劣势。功能做得再好,一个人扛不住长期迭代。
-一句话:功能够打,体验能看,生态要追。v5.1.2 是一次关键的能力补齐。
-