太空学员
MCP(模型上下文协议)服务器,通过Emacs组织模式为AI助手提供可靠的任务管理。
太空学员不再依赖LLM在对话环境中跟踪任务(在计数、时间推理和过滤方面失败),而是将任务存储和检索委托给组织模式——一个具有100%准确性的确定性、结构化系统。
先决条件
- Emacs (任何内置组织模式的最新版本)
- Python 3.10+
- Linux或macOS (Windows在WSL下工作;本机Windows没有文件锁定)
Emacs附带了组织模式。如果你没有安装Emacs:
brew install emacs # macOS
sudo apt install emacs-nox # Ubuntu/Debian/WSL
sudo dnf install emacs-nox # Fedora
sudo pacman -S emacs-nox # Arch这 -nox 由于太空学员不需要GUI,因此建议使用变体。
设置
git clone https://github.com/jamesdp3/spacecadet.git
cd spacecadet
./setup.sh安装脚本安装依赖项并打印MCP客户端的配置说明。
配置
克劳德桌面版
添加到MCP设置(~/.config/claude/claude_desktop_config.json):
{
"mcpServers": {
"spacecadet": {
"command": "python3",
"args": ["/path/to/spacecadet/server.py"]
}
}
}克劳德代码
claude mcp add spacecadet python3 /path/to/spacecadet/server.py任务存储器
在第一次运行中,太空学员创建了一个 tasks.org 归档 ~/spacecadet-tasks/ 并将此路径保存到 .spacecadet.conf。任务在重新启动后仍然存在。
要更改任务目录,请设置 SPACECADET_ORG_DIR 环境变量:
export SPACECADET_ORG_DIR=~/org或者在MCP客户端配置中传递它:
{
"mcpServers": {
"spacecadet": {
"command": "python3",
"args": ["/path/to/spacecadet/server.py"],
"env": {
"SPACECADET_ORG_DIR": "/home/you/org"
}
}
}
}您还可以编辑 .spacecadet.conf directly——它包含一行路径。
云同步
点 SPACECADET_ORG_DIR 在云同步文件夹中,从任何计算机访问您的任务:
| 服务 | 示例路径 |
|---|---|
| 苹果云 | ~/Library/Mobile Documents/com~apple~CloudDocs/org |
| Dropbox | ~/Dropbox/org |
| Google 云端硬盘 | ~/Google Drive/My Drive/org |
| OneDrive | ~/OneDrive/org |
| 同步 | ~/Sync/org |
因为任务很简单 .org 文本文件,任何文件同步服务都可以工作。如果您已经使用了org模式,请将spacecadent指向您现有的org目录,它将直接读取您的文件。
工具
每个任务在创建时都会被分配一个唯一的ID。执行特定任务的工具接受以下任一条件 id (首选)或 heading 以识别目标任务。
任务CRUD
| 工具 | 说明 |
|---|---|
add_task | 创建一个具有可选优先级、标签、截止日期和计划日期的新任务。返回任务的 id. |
update_task | 更新任务的状态(例如标记为“完成”)、优先级或截止日期 |
delete_task | 删除任务 |
list_tasks | 列出所有任务,可选择按状态、优先级或标签进行筛选。每个任务包括 id. |
get_task | 获取特定任务的完整详细信息 |
查询
| 工具 | 说明 |
|---|---|
get_agenda | 获取日期或日期范围的组织模式议程视图 |
search_tasks | 使用完整的组织模式匹配语法进行搜索 |
时间跟踪
| 工具 | 说明 |
|---|---|
clock_in | 在任务上启动时钟 |
clock_out | 停止当前计时任务的时钟 |
clock_report | 获取显示每个任务记录的小时数的时间报告 |
组织
| 工具 | 说明 |
|---|---|
add_note | 在任务的日志中添加带时间戳的注释 |
set_property | 在任务上设置自定义属性(工作量、受让人、URL等) |
refile_task | 将任务移动到其他标题下或其他文件中 |
运作原理
AI Client (Claude Desktop, Claude Code, etc.)
| MCP protocol (stdio)
v
server.py (Python, FastMCP)
| emacsclient --eval
v
Emacs daemon (persistent, started on first request)
| org-mode API
v
~/spacecadet-tasks/*.org (plain text)在第一次工具调用中,spacecadent会启动一个具有隔离配置的专用Emacs守护进程(不会干扰您的个人Emacs设置)。后续通话使用 emacsclient 针对正在运行的守护进程评估elisp,将响应时间控制在500ms以下。服务器退出时,守护进程会自动关闭。
任务ID
每个任务在通过创建时都会自动分配一个UUID add_taskID以组织模式存储 ID 属性,并在所有工具响应中返回。使用 id 参数而不是 heading 对于可靠的查找,如果重复,标题可能会含糊不清,但ID始终是唯一的。
任务状态
任务遵循以下工作流程:
TODO -> NEXT -> WAITING -> DONE
-> CANCELLED优先事项
- A. -最高优先级
- B -高优先级
- C -默认优先级
- D -低优先级
运行测试
pip install -e ".[dev]"
pytest单元测试(路径验证)在没有emacs的情况下运行。如果未安装emacs,则会自动跳过集成测试。
文档
完整文档:
许可证
麻省理工学院
