npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@gongfu/claude-integration

v0.1.0

Published

Claude Code integration toolkit for Gongfu workflow system

Readme

@gongfu/claude-integration

Claude Code 集成工具包,为 Gongfu 工作流系统提供与 Claude Code 的深度集成。

特性

  • 🚀 进程管理: 使用 node-pty 实现完整的终端控制
  • 📊 活动监控: 实时监控 Claude Code 的活动和输出
  • 🎯 任务分配: 向 Claude Code 分配任务并跟踪执行
  • 🔄 双向通信: 支持向 Claude Code 发送命令和接收输出
  • 📡 SSE 流式传输: 提供 Server-Sent Events 实时推送
  • 🪝 Hook 系统: 增强的 Hook 配置支持全面的事件捕获
  • 📝 日志解析: 智能解析 Claude Code 输出和日志

安装

npm install @gongfu/claude-integration
# 或
pnpm add @gongfu/claude-integration
# 或
yarn add @gongfu/claude-integration

使用示例

基础使用

import { 
  ClaudeController, 
  ClaudeMonitor, 
  ClaudeProcessManager 
} from '@gongfu/claude-integration';

// 创建控制器
const controller = new ClaudeController({
  projectRoot: process.cwd(),
  logOutput: true
});

// 分配任务
const taskId = await controller.assignTask('实现用户登录功能', {
  priority: 'high'
});

// 获取状态
const status = await controller.getStatus();
console.log('Claude 状态:', status);

进程管理

const processManager = new ClaudeProcessManager({
  projectRoot: process.cwd(),
  usePty: true,
  captureOutput: true
});

// 启动 Claude Code
await processManager.start(['--verbose']);

// 发送命令
await processManager.sendCommand('help');

// 监听输出
processManager.on('parsed-output', (parsed) => {
  console.log('解析的输出:', parsed);
});

// 停止进程
await processManager.stop();

活动监控

const monitor = new ClaudeMonitor({
  projectRoot: process.cwd()
});

// 启动监控
await monitor.start();

// 监听活动
monitor.on('activity', (activity) => {
  console.log('Claude 活动:', activity);
});

// 启动 SSE 服务器
const server = await monitor.startSSEServer(3001);

MCP 服务器集成

import { ClaudeActivityHandler } from '@gongfu/claude-integration';
import express from 'express';

const app = express();
const handler = new ClaudeActivityHandler(process.cwd());

// 启动处理器
await handler.start();

// 设置 SSE 端点
handler.setupSSEEndpoints(app);

// 访问端点:
// GET /mcp/claude/stream - SSE 活动流
// GET /mcp/claude/summary - 活动摘要
// GET /mcp/claude/current-task - 当前任务
// POST /mcp/claude/log - 记录活动

Hook 配置

// 设置增强的 Hook
await controller.setupHooks(true);

// 这将配置以下 Hook:
// - PreToolUse: 工具使用前记录
// - PostToolUse: 工具使用后记录  
// - Start: 会话开始记录
// - Stop: 会话结束记录
// - 文件变更自动同步

API 文档

ClaudeController

管理 Claude Code 实例和任务分配。

class ClaudeController extends EventEmitter {
  constructor(options?: ClaudeControllerOptions);
  assignTask(taskDescription: string, options?: TaskOptions): Promise<string>;
  startInBackground(): Promise<void>;
  getStatus(): Promise<ClaudeStatus>;
  setupHooks(enhanced?: boolean): Promise<void>;
  stop(): Promise<void>;
}

ClaudeProcessManager

使用 node-pty 管理 Claude Code 进程。

class ClaudeProcessManager extends EventEmitter {
  constructor(options?: ClaudeProcessOptions);
  start(args?: string[]): Promise<void>;
  sendInput(input: string): Promise<void>;
  sendCommand(command: string): Promise<void>;
  stop(): Promise<void>;
  getRecentOutput(lines?: number): ClaudeOutput[];
  searchOutput(pattern: string | RegExp): ClaudeOutput[];
  getInfo(): ProcessInfo;
}

ClaudeMonitor

监控 Claude Code 活动和日志。

class ClaudeMonitor extends EventEmitter {
  constructor(options?: ClaudeMonitorOptions);
  start(): Promise<void>;
  stop(): Promise<void>;
  startSSEServer(port?: number): Promise<Server>;
  getActivities(limit?: number): ClaudeActivity[];
  getActivitySummary(): ActivitySummary;
}

ClaudeActivityHandler

MCP 服务器的 Claude 活动处理器。

class ClaudeActivityHandler extends EventEmitter {
  constructor(projectRoot: string);
  start(): Promise<void>;
  stop(): Promise<void>;
  setupSSEEndpoints(app: express.Application): void;
  logActivity(type: string, data: any): void;
  getActivitySummary(): any;
  getCurrentTask(): Promise<any>;
}

类型定义

interface ClaudeActivity {
  id: string;
  timestamp: string;
  type: 'tool-use' | 'file-change' | 'command' | 'session' | 'thinking' | 'task-update';
  data: any;
  source: 'hook' | 'file' | 'monitor';
}

interface ClaudeStatus {
  isActive: boolean;
  processId?: number;
  currentTask?: {
    id: string;
    content: string;
    startedAt: string;
  };
  recentActivity: Activity[];
}

interface ClaudeOutput {
  timestamp: string;
  type: 'stdout' | 'stderr' | 'system';
  content: string;
  parsed?: any;
}

事件

ClaudeController 事件

  • task-assigned: 任务被分配时触发
  • tool-use: 检测到工具使用时触发
  • file-change: 检测到文件变更时触发
  • thinking: 检测到思考过程时触发
  • process-exit: Claude Code 进程退出时触发

ClaudeProcessManager 事件

  • started: 进程启动时触发
  • output: 收到输出时触发
  • parsed-output: 输出被解析时触发
  • input: 发送输入时触发
  • exit: 进程退出时触发
  • error: 发生错误时触发

ClaudeMonitor 事件

  • activity: 检测到新活动时触发
  • connected: SSE 客户端连接时触发
  • disconnected: SSE 客户端断开时触发

高级用法

自定义输出解析器

import { ClaudeOutputParser } from '@gongfu/claude-integration';

class CustomParser extends ClaudeOutputParser {
  parse(output: string): any {
    // 自定义解析逻辑
    const result = super.parse(output);
    
    // 添加自定义模式匹配
    if (output.includes('Custom Pattern')) {
      return {
        type: 'custom',
        data: extractCustomData(output)
      };
    }
    
    return result;
  }
}

集成到 VSCode 扩展

import * as vscode from 'vscode';
import { ClaudeController } from '@gongfu/claude-integration';

export function activate(context: vscode.ExtensionContext) {
  const controller = new ClaudeController({
    projectRoot: vscode.workspace.rootPath || process.cwd()
  });

  // 注册命令
  const assignTaskCommand = vscode.commands.registerCommand(
    'gongfu.assignTaskToClaude',
    async () => {
      const task = await vscode.window.showInputBox({
        prompt: '输入要分配给 Claude 的任务'
      });
      
      if (task) {
        const taskId = await controller.assignTask(task);
        vscode.window.showInformationMessage(`任务已分配: ${taskId}`);
      }
    }
  );

  context.subscriptions.push(assignTaskCommand);
}

最佳实践

  1. 错误处理: 始终包装异步调用在 try-catch 块中
  2. 资源清理: 确保在应用退出时调用 stop() 方法
  3. 日志管理: 定期清理日志文件以避免磁盘空间问题
  4. 性能优化: 对于大型项目,考虑限制监控的文件范围
  5. 安全性: 谨慎处理 Claude Code 的输出,避免执行不受信任的命令

故障排查

Claude Code 无法启动

# 检查 Claude Code 是否已安装
claude --version

# 检查环境变量
echo $PATH

# 验证权限
ls -la ~/.claude/

输出捕获失败

如果使用标准 spawn 无法捕获输出,尝试使用 PTY 模式:

const processManager = new ClaudeProcessManager({
  usePty: true,
  captureOutput: true
});

SSE 连接问题

确保防火墙允许指定端口的连接,并检查 CORS 设置。

开发计划

  • [ ] 支持更多 Claude Code 命令和参数
  • [ ] 添加输出的机器学习分析
  • [ ] 实现任务队列和并发控制
  • [ ] 支持远程 Claude Code 实例
  • [ ] 添加 WebSocket 传输支持
  • [ ] 实现插件系统

贡献

欢迎贡献!请查看 贡献指南

许可证

MIT © Foundation