AI编程助手

一个桌面原生的AI代理,作为主动的编程助手,通过Model Context Protocol (MCP)直接连接文件系统、终端和IDE。

  • by doozie-akshay
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 doozie-akshay/clippys_revenge

使用说明

Clippy的复仇📎

一个桌面原生AI代理,将标志性的Microsoft Office Assistant复活为主动的代理编码伴侣。与其被动的前身不同,此Clippy通过模型上下文协议(MCP)拥有真正的代理权,使其能够直接连接到您的文件系统、终端和IDE。

特性

  • 始终在顶部覆盖 -透明、无框架的Clippy,漂浮在桌面上
  • 主动干预 -自动检测构建失败和linter错误
  • MCP集成 -通过安全的MCP服务器读取/写入文件并执行命令
  • 个性模式 -从实习生模式、被动攻击模式或末日模式中选择
  • VS代码扩展 -监控终端输出和诊断
  • 安全控制 -执行命令或修改文件前需要批准

先决条件

  • Node.js >=18.x
  • npm >=9.x
  • VS Code (对于扩展)

项目结构

clippys-revenge/
├── src/
│   ├── main/           # Electron main process
│   │   ├── animation/  # Animation state management
│   │   ├── chat/       # Chat service and message store
│   │   ├── intervention/ # Proactive intervention logic
│   │   ├── ipc/        # IPC handlers
│   │   ├── kiro/       # Kiro hook system (WebSocket server)
│   │   ├── llm/        # LLM client (Anthropic)
│   │   ├── mcp/        # MCP client manager
│   │   ├── persistence/ # SQLite database layer
│   │   ├── personality/ # Personality engine
│   │   ├── safety/     # Safety controls
│   │   └── window/     # Window manager
│   ├── renderer/       # React frontend
│   └── shared/         # Shared types
├── vscode-extension/   # VS Code extension for event detection
└── tests/              # Test suites

快速开始

1.安装依赖项

# Install main app dependencies
npm install

# Install VS Code extension dependencies
cd vscode-extension
npm install
cd ..

2.运行开发模式

启动Electron应用程序:

npm run dev

这将启动启用热重新加载的Electron应用程序。该应用程序将:

  • 使用Clippy打开透明覆盖窗口
  • 在端口9876上启动WebSocket服务器,用于VS代码扩展通信
  • 初始化MCP客户端管理器

构建并运行VS Code扩展:

cd vscode-extension
npm run compile

然后在VS代码中:

  1. 打开 vscode-extension 文件夹
  2. 按 F5 启动扩展开发主机
  3. 该扩展将自动连接到Clippy桌面客户端

3.运行测试

# Run all tests once
npm test

# Run tests in watch mode
npm run test:watch

配置

LLM提供者选项

Clippy支持多个LLM提供程序。它会自动检测要使用哪一个:

选项1:Ollama(免费,本地)-默认

不需要API密钥!在您的计算机上完全本地运行。

  1. 安装Ollama:https://ollama.ai
  2. 启动服务器: ollama serve
  3. 拉一个模型: ollama pull llama3.2
  4. 运行Clippy: npm run dev

支持的型号: llama3.2, mistral, codellama, phi3等等。

选项2:无烟煤克劳德(付费API)

为了获得最佳质量的回复,请使用Claude:

export ANTHROPIC_API_KEY=your-api-key-here
npm run dev

环境变量

变量 描述 默认值
ANTHROPIC_API_KEY Anthropic API密钥(启用Claude) -
ANTHROPIC_MODEL 要使用的Claude模型 claude-sonnet-4-20250514
OLLAMA_MODEL 使用Olama模型 llama3.2
OLLAMA_ENDPOINT Ollama服务器URL http://localhost:11434
KIRO_WS_PORT 用于VS代码扩展的WebSocket端口 9876

VS代码扩展设置

该扩展公开了这些设置:

设置 默认值 说明
clippy-kiro.websocketPort 9876 桌面客户端的WebSocket端口
clippy-kiro.autoConnect true 启动时自动连接
clippy-kiro.terminalOutputLines 50 失败时要捕捉的行数

开发命令

命令 描述
npm run dev 在开发模式下通过热重新加载启动Electron应用程序
npm run build 构建用于生产的Electron应用程序
npm run preview 预览生产版本
npm test 运行测试套件一次
npm run test:watch 在监视模式下运行测试

VS代码扩展命令

cd vscode-extension
npm run compile    # Compile TypeScript
npm run watch      # Watch mode compilation
npm run lint       # Run ESLint
npm test           # Run extension tests

架构概述

┌─────────────────────────────────────────────────────────────┐
│                    VS Code Extension                         │
│  ┌─────────────────┐  ┌──────────────────────────────────┐  │
│  │ Terminal Detector│  │ Diagnostic Detector              │  │
│  └────────┬────────┘  └───────────────┬──────────────────┘  │
│           │                           │                      │
│           └───────────┬───────────────┘                      │
│                       ▼                                      │
│              WebSocket Client                                │
└───────────────────────┬─────────────────────────────────────┘
                        │ ws://localhost:9876
                        ▼
┌─────────────────────────────────────────────────────────────┐
│                 Clippy Desktop Client (Electron)             │
│  ┌─────────────────────────────────────────────────────────┐│
│  │                    Kiro Hook Server                      ││
│  │                   (WebSocket Server)                     ││
│  └────────────────────────┬────────────────────────────────┘│
│                           ▼                                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────┐   │
│  │ Intervention │  │  Personality │  │   Safety         │   │
│  │   Manager    │  │    Engine    │  │  Controller      │   │
│  └──────┬───────┘  └──────┬───────┘  └────────┬─────────┘   │
│         │                 │                    │             │
│         └─────────────────┼────────────────────┘             │
│                           ▼                                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────┐   │
│  │  LLM Client  │  │  MCP Client  │  │   Persistence    │   │
│  │  (Anthropic) │  │   Manager    │  │     Layer        │   │
│  └──────────────┘  └──────────────┘  └──────────────────┘   │
│                           │                                  │
│                           ▼                                  │
│  ┌─────────────────────────────────────────────────────────┐│
│  │              Renderer (React + Lottie)                   ││
│  │  ┌─────────┐  ┌──────────────┐  ┌────────────────────┐  ││
│  │  │ Clippy  │  │ Speech Bubble│  │ Action Approval    │  ││
│  │  │ Overlay │  │              │  │                    │  ││
│  │  └─────────┘  └──────────────┘  └────────────────────┘  ││
│  └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

故障排除

Electron应用程序无法启动

# Rebuild native dependencies
npm run postinstall

VS代码扩展未连接

  1. 确保Electron应用程序首先运行
  2. 检查WebSocket端口是否匹配(默认值:9876)
  3. 跑 Clippy: Show Connection Status 从VS代码命令面板

测试失败

# Clear any cached builds
rm -rf dist
npm run build
npm test

许可证

MIT© Kiro系统