Files
Claude-Code-Workflow/codex-lens/docs/IMPLEMENTATION_SUMMARY.md
catlog22 3fe630f221 Add tests and documentation for CodexLens LSP tool
- Introduced a new test script for the CodexLens LSP tool to validate core functionalities including symbol search, find definition, find references, and get hover.
- Created comprehensive documentation for the MCP endpoint design, detailing the architecture, features, and integration with the CCW MCP Manager.
- Developed a detailed implementation plan for transitioning to a real LSP server, outlining phases, architecture, and acceptance criteria.
2026-01-19 23:26:35 +08:00

9.1 KiB

CodexLens Real LSP Implementation - Summary

Date: 2026-01-19
Status: Planning Complete, Implementation Ready
Focus: Real LSP Server + VSCode Bridge Integration


Completed Work

1. Planning Documents

a. Main Implementation Plan

File: docs/REAL_LSP_SERVER_PLAN.md

Content:

  • Complete architecture design for real LSP server
  • 5-phase implementation plan
  • Multi-language support strategy (TypeScript, Python, Go, Rust, Java, C/C++)
  • Language server multiplexer design
  • Position tolerance feature (cclsp-like)
  • MCP integration layer

Key Decisions:

  • Use pygls library for LSP implementation
  • Support 6+ language servers via multiplexer
  • Implement position tolerance for fuzzy AI-generated positions
  • Three integration paths: Standalone LSP, VSCode Bridge, Index-based fallback

b. VSCode Bridge Implementation (Appendix A)

Included in: docs/REAL_LSP_SERVER_PLAN.md

Content:

  • HTTP-based VSCode extension bridge
  • MCP tool integration (vscode_lsp)
  • Complete architecture diagram
  • API endpoint specifications
  • Comparison with standalone LSP approach

2. VSCode Bridge Extension

Created Files:

  1. ccw-vscode-bridge/package.json

    • VSCode extension manifest
    • Dependencies: @types/node, @types/vscode, typescript
  2. ccw-vscode-bridge/tsconfig.json

    • TypeScript compilation configuration
    • Target: ES2020, CommonJS modules
  3. ccw-vscode-bridge/src/extension.ts

    • HTTP server on port 3457
    • 4 API endpoints:
      • POST /get_definition
      • POST /get_references
      • POST /get_hover
      • POST /get_document_symbols
    • VSCode API integration via vscode.commands.executeCommand
  4. ccw-vscode-bridge/.vscodeignore

    • Build artifact exclusion rules
  5. ccw-vscode-bridge/README.md

    • Installation & usage instructions
    • API endpoint documentation

Features:

  • Real-time VSCode LSP integration
  • HTTP REST API for external tools
  • CORS support
  • Error handling
  • Automatic VSCode feature detection

3. CCW MCP Tool

Created File:

ccw/src/tools/vscode-lsp.ts

Features:

  • 4 LSP actions: get_definition, get_references, get_hover, get_document_symbols
  • Zod schema validation
  • HTTP client with timeout (10s)
  • Connection retry logic
  • Comprehensive error messages

Parameters:

  • action (required): LSP action type
  • file_path (required): Absolute file path
  • line (optional): Line number (1-based)
  • character (optional): Character position (1-based)

Integration:

Modified File: ccw/src/tools/index.ts

  • Imported vscodeLspMod
  • Registered tool via registerTool(toLegacyTool(vscodeLspMod))
  • Available in MCP server tool list

📋 Implementation Architecture

Three Integration Paths

Path 1: VSCode Bridge (✅ Implemented)
─────────────────────────────────────
Claude Code → vscode_lsp MCP tool → HTTP → ccw-vscode-bridge → VSCode API → Language Servers

Path 2: Standalone LSP Server (📝 Planned)
──────────────────────────────────────────
Any LSP Client → codexlens-lsp → Language Server Multiplexer → Language Servers

Path 3: Index-Based (✅ Existing)
─────────────────────────────────
Claude Code → codex_lens_lsp → Python API → SQLite Index → Cached Results

Smart Routing Strategy

// Priority: VSCode Bridge → Standalone LSP → Index-based
if (vscodeBridgeAvailable) {
  return useVSCodeBridge();
} else if (standaloneLSPAvailable) {
  return useStandaloneLSP();
} else {
  return useIndexBased();
}

🎯 Next Steps

Immediate Actions (Phase 1)

  1. Test VSCode Bridge

    cd ccw-vscode-bridge
    npm install
    npm run compile
    # Press F5 in VSCode to launch extension
    
  2. Test vscode_lsp Tool

    # Start CCW MCP server
    cd ccw
    npm run mcp
    
    # Test via MCP client
    {
      "tool": "vscode_lsp",
      "arguments": {
        "action": "get_definition",
        "file_path": "/path/to/file.ts",
        "line": 10,
        "character": 5
      }
    }
    
  3. Document Testing Results

    • Create test reports
    • Benchmark latency
    • Validate accuracy

Medium-Term Goals (Phase 2-3)

  1. Implement Standalone LSP Server

    • Setup codexlens-lsp project structure
    • Implement language server multiplexer
    • Add core LSP handlers
  2. Add Position Tolerance

    • Implement fuzzy position matching
    • Test with AI-generated positions
  3. Create Integration Tests

    • Unit tests for each component
    • E2E tests with real language servers
    • Performance benchmarks

Long-Term Goals (Phase 4-5)

  1. MCP Context Enhancement

    • Integrate LSP results into MCP context
    • Hook system for Claude Code
  2. Advanced Features

    • Code actions
    • Formatting
    • Rename support
  3. Production Deployment

    • Package VSCode extension to .vsix
    • Publish to VS Code marketplace
    • Create installation scripts

📊 Project Status Matrix

Component Status Files Tests Docs
VSCode Bridge Extension Complete 5/5 Pending Complete
vscode_lsp MCP Tool Complete 1/1 Pending Complete
Tool Registration Complete 1/1 N/A N/A
Planning Documents Complete 2/2 N/A Complete
Standalone LSP Server 📝 Planned 0/8 0/12 Complete
Integration Tests 📝 Planned 0/3 0/15 Pending

🔧 Development Environment

Prerequisites

For VSCode Bridge:

  • Node.js ≥ 18
  • VSCode ≥ 1.80
  • TypeScript ≥ 5.0

For Standalone LSP:

  • Python ≥ 3.8
  • pygls ≥ 1.3.0
  • Language servers:
    • TypeScript: npm i -g typescript-language-server
    • Python: pip install python-lsp-server
    • Go: go install golang.org/x/tools/gopls@latest
    • Rust: rustup component add rust-analyzer

Installation Commands

# VSCode Bridge
cd ccw-vscode-bridge
npm install
npm run compile

# CCW MCP (already setup)
cd ccw
npm install

# Future: Standalone LSP
cd codex-lens
pip install -e ".[lsp]"

📖 Documentation Index

Document Purpose Status
REAL_LSP_SERVER_PLAN.md Complete implementation plan
LSP_INTEGRATION_PLAN.md Original integration strategy
MCP_ENDPOINT_DESIGN.md MCP endpoint specifications
IMPLEMENTATION_SUMMARY.md This document
ccw-vscode-bridge/README.md Bridge usage guide
TESTING_GUIDE.md Testing procedures TODO
DEPLOYMENT_GUIDE.md Production deployment TODO

💡 Key Design Decisions

1. Why Three Integration Paths?

  • VSCode Bridge: Easiest setup, leverages VSCode's built-in language servers
  • Standalone LSP: IDE-agnostic, works with any LSP client
  • Index-based: Fallback for offline or cached queries

2. Why HTTP for VSCode Bridge?

  • Simplest cross-process communication
  • No complex IPC/socket management
  • Easy to debug with curl/Postman
  • CORS support for web-based tools

3. Why Port 3457?

  • Unique port unlikely to conflict
  • Easy to remember (345-7)
  • Same approach as cclsp (uses stdio)

User feedback:

"第一种跟当前的符号搜索没区别哎"
(Method 1 has no difference from current symbol search)

Solution: Implement real LSP server that connects to live language servers, not pre-indexed data.


🚀 Quick Start Guide

Test VSCode Bridge Now

  1. Install Extension:

    cd ccw-vscode-bridge
    npm install && npm run compile
    code --install-extension .
    
  2. Reload VSCode:

    • Press Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows)
    • Type "Reload Window"
  3. Verify Bridge is Running:

    curl http://localhost:3457/get_definition \
      -X POST \
      -H "Content-Type: application/json" \
      -d '{"file_path":"/path/to/file.ts","line":10,"character":5}'
    
  4. Test via CCW:

    // In Claude Code or MCP client
    await executeTool('vscode_lsp', {
      action: 'get_definition',
      file_path: '/absolute/path/to/file.ts',
      line: 10,
      character: 5
    });
    

📞 Support & Troubleshooting

Common Issues

Issue: "Could not connect to VSCode Bridge" Solution:

  1. Ensure VSCode is running
  2. Check if extension is activated: Cmd+Shift+P → "CCW VSCode Bridge"
  3. Verify port 3457 is not in use: lsof -i :3457

Issue: "No LSP server available" Solution: Open the file in VSCode workspace first

Issue: "File not found" Solution: Use absolute paths, not relative


📝 Change Log

2026-01-19 - Initial Implementation

  • Created VSCode Bridge extension (5 files)
  • Implemented vscode_lsp MCP tool
  • Registered tool in CCW registry
  • Completed planning documentation
  • Added comprehensive architecture diagrams

Document End