Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

keunsy/cursorclaw

Repository files navigation

CursorClaw

License: MIT TypeScript Bun GitHub Stars

通过飞书/钉钉/企业微信远程控制 Cursor AI 的智能助手

快速开始 · 功能特性 · 文档 · 贡献指南


⚠️ 本项目已演进为 Cursor Remote Control ,新版本新增了微信个人号、Telegram 渠道,以及 IDE 入队双向交互模式、配额节约(Feedback Gate 集成)等核心能力。建议直接使用新项目。

基于 feishu-cursor-claw 改进,支持飞书、钉钉、企业微信三个平台。

✨ 简介

CursorClaw 是一个将 Cursor AI 接入 IM 平台的远程控制中继服务。

📱 在手机上发消息,Mac 上自动写代码、审文档、执行任务
🤖 将 Cursor 变成你的私人 AI 战略合伙人,随时随地通过 IM 调用
🔄 支持飞书、钉钉、企业微信,三个服务可同时运行

核心优势

  • 🌐 无需公网 IP - WebSocket 长连接,本地服务主动连接
  • 🧠 持久记忆 - 跨会话记忆系统,AI 记住你的项目和偏好
  • 🎯 项目路由 - 智能识别和切换多个工作区
  • 定时任务 - AI 可创建定时提醒和周期任务
  • 💬 会话管理 - 支持多会话历史、切换和归档
  • 🎙️ 多模态输入 - 文字、语音、图片、文件(飞书/钉钉)

架构设计

整体架构

手机飞书 ──WebSocket──→ feishu/server.ts ────┐
 ├──→ Cursor CLI ──→ 本地 Cursor IDE
手机钉钉 ──Stream─────→ dingtalk/server.ts ───┤ │
 │ │
手机企业微信 ─WebSocket→ wecom/server.ts ──────┘ │
 │
 ┌────────────────────────────────────────────────┘
 │
 ├─→ 项目路由 (projects.json)
 ├─→ 会话管理 (--resume, 自动恢复上下文)
 ├─→ 记忆系统 (.cursor/MEMORY.md + SQLite向量数据库)
 ├─→ 定时任务 (cron-jobs-*.json, AI 创建的定时任务)
 └─→ 心跳系统 (.cursor/HEARTBEAT.md, 定期维护)

工作原理

1. 消息接收

  • 飞书:WebSocket 长连接模式,本地服务主动连接飞书服务器
  • 钉钉:Stream 长连接模式,本地服务主动连接钉钉服务器
  • 企业微信:WebSocket 长连接模式,本地服务主动连接企业微信服务器
  • 无需公网 IP,无需端口映射

2. 消息处理

用户消息 → 解析项目路由 → 多模态处理(文本/图片/语音/文件)
 ↓
 传递给 Cursor CLI
 ↓
 AI 处理(思考、工具调用、回复)
 ↓
 实时流式推送进度卡片
 ↓
 最终结果 + 耗时统计

3. 会话管理

  • 每个项目工作区独立会话
  • 自动 --resume 恢复上下文
  • 同一会话串行,不同会话并发
  • Cursor CLI 自主管理生命周期

4. 记忆系统

  • 短期记忆:.cursor/sessions/ 会话转录(JSONL 格式)
  • 长期记忆:.cursor/MEMORY.md + .cursor/memory/ 每日日记
  • 向量搜索:.memory.sqlite (FTS5 BM25 + 向量混合搜索)
  • 自主检索:AI 通过 memory-tool.ts 自主决定何时搜索记忆

5. 定时任务

  • AI 通过对话创建定时任务,写入 cron-jobs-*.json
  • 支持一次性任务、间隔任务、Cron 表达式
  • 到期自动执行,结果推送到飞书/钉钉

6. 心跳系统

  • 定期触发 .cursor/HEARTBEAT.md 检查清单
  • AI 自主管理检查项(整理记忆、检查状态等)
  • 状态追踪:.cursor/memory/heartbeat-state.json

项目结构

cursorclaw/
├── shared/ # 共享模块(三个平台共用)
│ ├── memory.ts # 记忆管理器 v2(SQLite + 向量 + FTS5)
│ ├── memory-tool.ts # 记忆 CLI(统一版本,供 Agent 调用)
│ ├── scheduler.ts # 定时任务调度
│ ├── heartbeat.ts # 心跳系统
│ └── sync-apple-notes.ts # Apple Notes 同步
│
├── feishu/ # 飞书服务(独立)
│ ├── server.ts # 飞书主服务
│ ├── bridge.ts # OpenAI API 桥接
│ ├── memory-tool.ts # 记忆 CLI 包装(转发到 shared)
│ ├── service.sh # 飞书服务管理脚本
│ └── README.md # 飞书详细文档
│
├── dingtalk/ # 钉钉服务(独立)
│ ├── server.ts # 钉钉主服务
│ ├── dingtalk-client.ts # 钉钉 Stream 客户端
│ ├── memory-tool.ts # 记忆 CLI 包装(转发到 shared)
│ ├── service.sh # 钉钉服务管理脚本
│ └── README.md # 钉钉详细文档
│
├── wecom/ # 企业微信服务(独立)
│ ├── server.ts # 企业微信主服务
│ ├── wecom-helper.ts # 企业微信工具函数
│ ├── memory-tool.ts # 记忆 CLI 包装(转发到 shared)
│ ├── service.sh # 企业微信服务管理脚本
│ └── README.md # 企业微信详细文档
│
├── projects.json # 项目路由配置(共享)
├── cron-jobs-feishu.json # 飞书定时任务
├── cron-jobs-dingtalk.json # 钉钉定时任务
├── cron-jobs-wecom.json # 企业微信定时任务
├── manage-services.sh # 统一服务管理脚本
└── docs/ # 通用文档

功能特性

核心功能(三平台通用)

  • 🚀 三渠道支持: 飞书、钉钉、企业微信独立部署,可同时运行
  • 💾 记忆系统: SQLite 向量数据库 + FTS5 全文搜索
  • 定时任务: AI 创建的 Cron 任务,自动执行并推送通知
  • ❤️ 心跳检查: 定期后台维护(整理记忆、检查状态)
  • 📁 项目路由: 多工作区切换(共享配置)
  • 🔄 会话连续性: 自动 resume,多会话并发
  • 🧠 身份人格: OpenClaw 风格的持久记忆与人格系统

扩展功能(飞书/钉钉)

  • 🎙️ 语音识别: 火山引擎豆包 STT → 本地 whisper-cpp 降级
  • 🖼️ 图片处理: 自动下载和 OCR 识别
  • 📁 文件处理: 支持各类文件上传下载
  • 📰 热点新闻推送: 定时抓取多平台热榜并推送(微博/知乎/百度等)
  • 📤 文件发送: 本地文件上传到 IM 平台

企业微信特色

  • 流式回复: 主动推送(延迟更低)vs 飞书轮询刷新
  • 🎯 MVP 优先: 核心对话功能完整,扩展功能按需添加

快速开始

前置条件

项目 要求
系统 macOS
运行时 Bun
IDE Cursor 已安装并登录
CLI Cursor Agent CLI (~/.local/bin/agent)

选择你的渠道

💡 三个渠道可以同时运行,互不干扰,共享项目配置和记忆系统。

🟦 安装飞书服务

安装步骤(详细说明见 feishu/README.md):

# 1. 安装 Bun 运行时(如果未安装)
curl -fsSL https://bun.sh/install | bash
# 2. 安装 Cursor Agent CLI(如果未安装)
curl https://cursor.com/install -fsS | bash
# 3. 登录 Cursor(一次性操作,之后不需要配置 API Key)
~/.local/bin/agent login
# 4. 创建并配置文件
cd /path/to/cursorclaw
# 创建项目路由配置
cp projects.json.example projects.json
# 编辑 projects.json,配置你的工作区路径
# 创建定时任务配置
cp cron-jobs-feishu.json.example cron-jobs-feishu.json
# 配置飞书凭据
cd feishu
cp .env.example .env
# 编辑 .env,填入:
# - FEISHU_APP_ID=cli_你的APP_ID
# - FEISHU_APP_SECRET=你的SECRET
# - CURSOR_MODEL=auto # 建议用 auto 节省配额
# - 注释掉 CURSOR_API_KEY(已通过 agent login 登录)
# 5. 安装依赖并启动
cd feishu
bun install
bash service.sh install

飞书后台配置(服务启动后操作):

  1. 飞书开放平台创建企业自建应用
  2. 添加机器人能力,配置权限:im:messageim:message.group_at_msgim:resource
  3. 复制 App IDApp Secret(已填入上面的 .env)
  4. 等本机服务启动后,在「事件订阅」中选择长连接模式,订阅 im.message.receive_v1

🟦 安装钉钉服务

cd dingtalk
cp .env.example .env
# 编辑 .env 填入钉钉凭据
bun install
bash service.sh install

详细配置见 dingtalk/README.md

🟩 安装企业微信服务

cd wecom
# ⚠️ 重要:必须先创建 .env 文件
cp .env.example .env
# 编辑 .env 填入企业微信机器人凭据(BotID 和 Secret)
bun install
bash service.sh install

详细配置见 wecom/README.md

同时使用多个渠道

三个服务可以同时运行,互不干扰:

# 安装飞书
cd feishu && bash service.sh install && cd ..
# 安装钉钉
cd dingtalk && bash service.sh install && cd ..
# 安装企业微信
cd wecom && bash service.sh install && cd ..
# 使用统一管理脚本
bash manage-services.sh status

服务管理

方式一:各自目录独立管理

# 飞书服务
cd feishu
bash service.sh status # 查看状态
bash service.sh restart # 重启
bash service.sh logs # 查看日志
# 钉钉服务
cd dingtalk
bash service.sh status
bash service.sh restart
bash service.sh logs
# 企业微信服务
cd wecom
bash service.sh status
bash service.sh restart
bash service.sh logs

方式二:统一管理脚本

bash manage-services.sh status # 查看所有服务状态
bash manage-services.sh restart # 重启所有服务
bash manage-services.sh logs feishu # 查看飞书日志
bash manage-services.sh logs dingtalk # 查看钉钉日志
bash manage-services.sh logs wecom # 查看企业微信日志

使用指南

基本对话

在飞书、钉钉或企业微信中 @你的机器人发送消息:

@机器人 你好
@机器人 帮我分析一下当前项目的代码结构
@机器人 /帮助

功能差异说明

各平台功能支持情况:

功能类别 飞书 钉钉 企业微信
核心对话
语音识别
图片处理
文件上传/下载
新闻推送
流式回复 轮询刷新 ✅ 主动推送
记忆/定时任务

💡 企业微信采用 MVP 策略,优先保证核心对话体验,扩展功能按需添加

常用指令

核心指令(三平台通用)

指令 中文别名 说明
/help /帮助 /指令 显示所有命令
/status /状态 查看服务状态(模型、Key、会话)
/new /新对话 /新会话 重置当前工作区会话
/model 名称 /模型 名称 切换 AI 模型
/apikey key /密钥 key 更换 API Key(仅限私聊)
/stop [项目名] /终止 /停止 终止运行的任务(可指定项目名)
/memory /记忆 查看记忆系统状态
/memory 关键词 /记忆 关键词 语义搜索记忆
/log 内容 /记录 内容 写入今日日记
/任务 /cron /定时 查看/管理定时任务
/心跳 /heartbeat 查看/管理心跳系统

扩展指令(飞书/钉钉专用)

指令 中文别名 说明
/新闻 /news 热点:立即推送今日热点;或 /新闻 每天9点 推送10条 定时
/新闻状态 /health 查看热点数据源健康状态
/发送文件 <路径> /sendfile /send 发送本地文件(最大 30MB)

项目路由(多工作区)

首次配置:从模板创建配置文件

cd /path/to/cursorclaw
cp projects.json.example projects.json
# 编辑 projects.json,配置你的工作区

配置示例(三个平台共享):

{
 "projects": {
 "mycode": { "path": "/Users/你/Projects/myapp", "description": "代码项目" },
 "docs": { "path": "/Users/你/Documents/文档", "description": "文档工作区" }
 },
 "default_project": "mycode",
 "memory_workspace": "mycode"
}

使用方式(三个平台通用):

  • docs: 帮我整理文档 → 路由到文档工作区
  • 切换到 mycode → 持久切换到代码项目

注意:projects.json 已加入 .gitignore,不会提交到仓库(本机配置)。

热点新闻定时推送 🆕

⚠️ 仅飞书和钉钉支持,企业微信暂未实现

立即推送(飞书/钉钉):

  • /新闻/news - 立即推送今日热点(默认 10 条)
  • /新闻状态/health - 查看数据源健康状态

定时推送:在对话中说:

每天 9 点推送热点

系统会自动创建定时任务,到点推送微博、知乎、百度等平台的热榜新闻。

说法示例 说明
每天 9 点推送热点 每天 9:00 推送
18:00 推送热榜 每天 18:00 推送
/任务 执行 <ID> 立即执行一次

数据源配置:参见 config/README.md(支持微博、知乎、百度、抖音等 10+ 个平台)


文件发送功能(飞书/钉钉)

飞书和钉钉服务支持发送本地文件:

/发送文件 ~/Desktop/report.pdf
/send /Users/me/Documents/data.xlsx

特性:

  • ✅ 支持绝对路径和 ~ 家目录
  • ✅ 自动检查文件存在性和大小
  • ✅ 最大 30MB
  • ✅ 支持多种文件格式:PDF、DOC/DOCX、XLS/XLSX、PPT、图片、音视频等

命令行工具(可选):

也可以通过命令行直接发送文件:

# 飞书
cd feishu
bun run send-file.ts /path/to/file.pdf <接收人ID>
# 钉钉
cd dingtalk
bun run send-file-dingtalk.ts /path/to/file.pdf <接收人ID>

⚠️ 企业微信暂不支持文件发送功能

详见:feishu/发送文件到飞书.md


配置文件管理

文件 用途 Git 管理
projects.json.example 项目路由模板 ✅ 提交到仓库
projects.json 你的实际项目路径 ❌ 已忽略
cron-jobs-*.json.example 空的定时任务模板 ✅ 提交到仓库
cron-jobs-*.json AI 创建的定时任务 ❌ 已忽略
config/news-sources.json 新闻数据源配置 ✅ 提交到仓库
feishu/.env / dingtalk/.env / wecom/.env 实际凭据 ❌ 已忽略

首次安装:从 .example 文件复制创建配置
Git pull 更新:你的本地配置不会被覆盖


高级配置

语音识别(可选,推荐)

火山引擎豆包 STT(高质量中文识别):

  1. 火山引擎控制台创建应用
  2. 开通「大模型流式语音识别」服务
  3. 在对应服务的 .env 中配置:
VOLC_STT_APP_ID=你的APP_ID
VOLC_STT_ACCESS_TOKEN=你的ACCESS_TOKEN

不配置则自动降级到本地 whisper-cpp(需安装:brew install whisper-cpp)。

向量记忆搜索(可选)

启用语义记忆搜索功能(在对应服务的 .env 中):

VOLC_EMBEDDING_API_KEY=你的API_KEY
VOLC_EMBEDDING_MODEL=doubao-embedding-vision-250615

故障排查

飞书服务

问题 解决方案
飞书无响应 cd feishu && bash service.sh restart
查看状态 cd feishu && bash service.sh status
查看日志 cd feishu && bash service.sh logs

钉钉服务

问题 解决方案
钉钉无响应 cd dingtalk && bash service.sh restart
查看状态 cd dingtalk && bash service.sh status
查看日志 cd dingtalk && bash service.sh logs

企业微信服务

问题 解决方案
企业微信无响应 cd wecom && bash service.sh restart
查看状态 cd wecom && bash service.sh status
查看日志 cd wecom && bash service.sh logs

通用问题

问题 解决方案
启动失败:找不到 agent 命令 安装 Cursor Agent CLI:curl https://cursor.com/install -fsS | bash
启动失败:找不到 bun 命令 安装 Bun 运行时:curl -fsSL https://bun.sh/install | bash
无响应:机器人收不到消息 检查服务状态:bash service.sh status,重启服务:bash service.sh restart
配额耗尽:提示团队配额用完 编辑 .envCURSOR_MODEL=opus-4.6-thinking 改为 auto(自动选择最优模型)
路径错误:permission denied projects.json.example 复制后,把 /Users/你的用户名/ 改为实际路径
语音识别质量差或乱码 配置火山引擎 STT(.env 中设置 VOLC_STT_APP_IDVOLC_STT_ACCESS_TOKEN)
记忆搜索不可用 需要配置向量嵌入 API(.env 中设置 VOLC_EMBEDDING_API_KEY)

常见问题

Q: 必须配置 API Key 吗?
A: 不必须。推荐用 agent login 登录,比手动配置 Key 更方便,且支持团队配额。

Q: 三个平台能同时用吗?
A: 能。三个服务独立进程,互不干扰,共享项目配置(projects.json)和记忆数据库。

Q: 如何切换工作区?
A: 两种方式:1 对话中说「切换到 项目名」持久切换;2 在消息前加 项目名: 临时路由,如「docs: 帮我整理文档」。

Q: 定时任务怎么创建?
A: 直接对话说「每天 9 点推送热点」或「3 分钟后提醒我喝水」,AI 会自动创建任务。查看任务用 /任务 指令。

Q: 怎么让 AI 记住信息?
A: 对话中说「记住我喜欢用 TypeScript」或用 /记录 今天完成了XX功能,AI 会存入长期记忆并在后续对话中调用。

Q: 如何查看服务日志?
A: 各服务目录下执行 bash service.sh logs,或查看 /tmp/feishu-cursor.log 等日志文件。


详细文档

  • 飞书服务: feishu/README.md - 完整的飞书配置、功能说明和使用指南
  • 钉钉服务: dingtalk/README.md - 完整的钉钉配置、功能说明和使用指南
  • 企业微信服务: wecom/README.md - 完整的企业微信配置、功能说明和使用指南
  • 新闻推送配置: config/README.md - 热点新闻数据源配置说明

技术栈

飞书 钉钉 企业微信
运行时 Bun 1.x + TypeScript Bun 1.x + TypeScript Bun 1.x + TypeScript
SDK @larksuiteoapi/node-sdk dingtalk-stream @wecom/aibot-node-sdk
连接方式 WebSocket 长连接 Stream 长连接 WebSocket 长连接
流式回复 轮询刷新 ❌ 不支持 主动推送 ⭐
数据库 SQLite(向量索引 + FTS5) SQLite(向量索引 + FTS5) SQLite(向量索引 + FTS5)
语音识别 ✅ 火山引擎 → whisper-cpp ✅ 火山引擎 → whisper-cpp ❌ 暂未实现
图片/文件 ✅ 支持 ✅ 支持 ❌ 暂未实现
新闻推送 ✅ 支持 ✅ 支持 ❌ 暂未实现
部署 macOS launchd macOS launchd macOS launchd

共享模块(shared/ 目录):

  • 项目路由配置 (projects.json)
  • 记忆管理器 (shared/memory.ts)
  • 记忆工具 CLI (shared/memory-tool.ts) - 统一版本 ⭐
  • 定时任务系统 (shared/scheduler.ts)
  • 心跳系统 (shared/heartbeat.ts)
  • Apple Notes 同步 (shared/sync-apple-notes.ts)

致谢

本项目基于 feishu-cursor-claw 开发,在原项目基础上进行了大量改进和扩展。

主要变更

  • 新增钉钉和企业微信渠道支持(原项目仅支持飞书)
  • 🏗️ 独立三服务架构(飞书、钉钉、企业微信可同时运行,互不干扰)
  • 🔧 统一服务管理(manage-services.sh 统一管理多个服务)
  • 📦 配置文件分离(每个服务独立 .envcron-jobs.json)
  • 🎯 增强的项目路由(共享 projects.json,支持持久切换)
  • 🔐 安全增强(平台隔离,独立环境变量)
  • 企业微信流式优势(主动推送 vs 飞书轮询,延迟更低)
  • 📱 多模态扩展(飞书/钉钉支持语音、图片、文件、新闻推送)

感谢 @nongjun 的开源贡献。


开源协议

本项目采用 MIT License 开源。详见 LICENSE 文件。

基于 feishu-cursor-claw(同为 MIT License)开发。

About

🤖 通过飞书/钉钉/企业微信远程控制 Cursor AI - 随时随地用 IM 调用你的私人 AI 编程助手 | Remote control Cursor AI via Feishu/DingTalk/WeCom

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /