使用说明
一切
Cloudflare Worker暴露了一个 模型上下文协议(MCP) 用于长期任务、内存和上下文管理的服务器。它旨在为AI代理提供跨对话的持久、结构化的上下文,同时保持启动有效载荷的小和确定性。
- 端点:
https://mcp-todo.linuxgaruda52.workers.dev/mcp - 健康检查:
GET /返回服务器状态和当前应用程序设置。
它做什么
mcp-todo 是一个确定性的人工智能记忆系统。它将任务、记忆、项目、目标和关系存储在 第1天,将热上下文缓存在 千伏,并在中索引任务文本 向量化 用于语义搜索。工作人员公开了一小部分MCP工具,AI代理可以调用这些工具:
- 使用标签、项目、组、优先级和生命周期状态捕获任务和记忆。
- 确定性地查询和更改状态。
- 检索每个新对话中的重点启动上下文。
- 仅在需要时逐步加载主题摘要、项目上下文和原始记忆。
- 在存储的项目之间进行语义搜索。
- 发现并巩固重复或被取代的记忆。
设计原则: 数据库决定返回什么;人工智能只决定它接下来想知道什么。检索是确定性的。人工智能仅用于增强(语义搜索的嵌入、建议的关系、摘要)。
平台绑定
| 绑定 | 服务 | 目的 |
|---|---|---|
env.DB |
D1 | 用于待办事项、项目、标签、关系、事件、日志的关系存储。 |
env.APP_KV |
KV | 缓存启动上下文、上下文摘要、应用程序设置和活动焦点。 |
env.TASK_VECTORS |
矢量化 | 任务/内存文本的语义搜索索引。 |
env.AI |
Workers AI | 为Vectorize生成嵌入(@cf/baai/bge-base-en-v1.5). |
在中配置它们 wrangler.jsonc.
核心概念
上下文层次结构
检索按层次组织。只有当需要更多细节时,人工智能才应该在层次结构中向下移动:
Startup Context
↓
Topic Summary
↓
Project Context
↓
Raw Memories
- 启动上下文 --极其轻量级:配置文件、活动目标、当前焦点、活动项目、始终加载项目和主题摘要。
- 主题摘要 --主题/组的单个规范活动项加上确定性汇总。
- 项目背景 --项目、活动目标、活动项目、重复系统和可选历史记录。
- 原始记忆 --单个项目,按标签、组、项目、生命周期状态和启动优先级进行确定性过滤。
物品
中央桌子是 todos一个项目可以是:
item_kind:task或memoryentity_type:tactical_task,strategic_goal,recurring_system,context_memory,archived_historylifecycle_state:active,dormant,stale,superseded,archived,completedstartup_priority:0(启动时切勿加载)10(始终加载)。仅限手动分配。
项目可以被固定、标记、分配给项目/组,并链接到目标。
上下文组
组是确定性检索桶。每个小组都有:
group_kind:topic,profile,project,或systemretrieval_priority:控制该组是否包含在启动主题摘要中canonical_item_id:表示主题当前状态的单个活动项
标签仍用于组织和搜索;组定义了确定性检索行为。
项目和目标
- 项目 小组工作。
- 目标 是
strategic_goal链接到具有活动/已取代状态的项目的项。 - 一个项目可以有一个
active_objective_id代表当前的北极星。
关系
item_relationships 将项目与类型链接:
supersedes,replaces,derived_from--标记历史谱系duplicate_of--完全重复blocks,depends_on,supports--依赖性跟踪
这些电力历史感知检索和整合工作流程。
创业优先理念
优先级是手动分配的,从不计算:
| 优先级 | 含义 |
|---|---|
| 10 | 启动时始终加载 |
| 8 | 通常负载 |
| 5 | 特定主题 |
| 2 | 历史 |
| 0 | 启动时从不加载 |
MCP工具
应用程序设置
get_app_settings--读取全局默认值。update_app_settings--更新默认值,如优先级、贪睡时间、接下来的几天。
捕获和管理项目
quick_add_task--使用默认值创建任务。capture_context--快速捕获内存或上下文项。get_item--按ID加载和丰富一个项目。list_items--列出/过滤/分页项目。update_item--更新标题、描述、状态、标签、项目等。delete_item/delete_items--删除项目及其向量/关系。set_item_startup_priority--控制启动时加载项目的速度。
项目和目标
create_projectget_projectlist_projectsset_active_objectiveget_project_timeline
状态转换
update_task_state--完成、暂停、忽略、重新激活、存档、取代。supersede_items--将目标标记为已被源项取代。mark_stale_candidates--查找旧的活动项目并将其标记为过时。
搜索
semantic_search--使用可选的种类过滤器对项目进行矢量搜索。find_semantic_conflicts--查找与查询或项目类似的活动项目;返回重复/替换候选项。
上下文检索
load_context— 一个灵活的检索接口 对于整个层级结构。level: "startup"--轻量级启动包。level: "topic_summary"--一个主题的规范项目+确定性总结。level: "project"--项目、目标、活动项、重复系统、可选历史记录。level: "raw_memories"--过滤的原始项目(默认,向后兼容)。
get_startup_context--方便别名load_context({ level: "startup" }).get_context_summary--方便别名load_context({ level: "topic_summary" }).get_focus_context--当前的战略重点。get_active_objectives,get_active_projects
整合工作流程
find_consolidation_candidates--对共享标签且可能是重复/超会话的记忆/任务进行确定性分组。consolidate_memories--建立关系(duplicate_of,supersedes,replaces,derived_from)在守门员和目标物品之间,可以选择标记被取代的目标。
启动上下文(load_context / get_startup_context)
AI代理引导新对话的主要入口点。
启动上下文有意最小化。它回答:
- 这个用户是谁?
- 他们目前在做什么?
- 他们的积极目标是什么?
- 哪些项目正在进行中?
- 什么话题很重要?
它确实如此。 不 加载每个固定内存。
退回的捆绑包
{
"level": "startup",
"source": "d1" | "kv_cache",
"context_version": 123,
"generated_at": "2026-07-01T...",
"last_consolidated": "2026-07-01T...",
"profile": { /* single current profile item */ },
"active_goals": [ /* active strategic goals */ ],
"current_focus": { /* project + objective + next tactical step */ },
"active_projects": [ /* projects with active work */ ],
"always_load": [ /* items with startup_priority = 10 */ ],
"topic_summaries": [ /* canonical items for high-priority groups */ ]
}
该捆绑包缓存在KV下 context:startup 并在写入时无效。这 context_version 只有当底层项目发生变化时才会发生变化,因此AI代理可以在版本匹配时重用缓存的捆绑包。
主题摘要(load_context 随着 level: "topic_summary")
范围/主题的确定性汇总,缓存在KV下 context:summary:<scope>.
{
"level": "topic_summary",
"scope": "aws",
"group": { "slug": "aws", "group_kind": "topic", "retrieval_priority": 8 },
"canonical_item": { /* single current active representation */ },
"summary": {
"scope": "aws",
"total": 12,
"active_count": 5,
"pinned_count": 2,
"top_item": { "id": 42, "title": "Current AWS strategy" },
"version": 7,
"last_consolidated": "2026-07-01T...",
"generated_at": "2026-07-01T..."
},
"source": "d1",
"generated_at": "2026-07-01T..."
}
如果没有 canonical_item_id 如果在组上设置,则该组/标签中优先级最高的活动项将作为事实上的规范返回。使用 set_group_canonical_item 显式分配规范项。
项目背景(load_context 随着 level: "project")
加载项目、其活动目标、活动工时、重复系统和可选历史记录。
{
"level": "project",
"source": "d1",
"project": { /* project record */ },
"active_objective": { /* current strategic goal */ },
"active_items": [ /* active project items */ ],
"recurring_systems": [ /* recurring support items */ ],
"history": [ /* superseded/archived/completed, only if include_history=true */ ],
"generated_at": "2026-07-01T..."
}
确定性合并工作流程
- 呼叫
find_consolidation_candidates获取共享标签的项目组。该工具是确定性的,使用现有的标签;语义搜索可以通过以下方式单独增强发现find_semantic_conflicts. - 审查建议的关系(
duplicate_of,supersedes,replaces,derived_from)原因。 - 呼叫
consolidate_memories带着一个source_item_id(保管人)和target_item_ids创建关系,并可选择将目标标记为已取代。
不需要新的存储列;工作流重用现有的 item_relationships 表和生命周期状态。
项目结构
src/
index.ts # Worker fetch handler and MCP server setup
tools.ts # All MCP tool registrations
db.ts # Data model, queries, mutations, enrichment
context.ts # Context retrieval helpers and summary builder
context-cache.ts # KV cache helpers
vectorize.ts # Vectorize indexing and semantic search
settings.ts # App settings defaults and validation
due.ts # Due-date parsing
context.test.ts # Unit tests for context helpers
tools.test.ts # Unit tests for MCP tools
migrations/ # D1 schema migrations
wrangler.jsonc # Cloudflare bindings and deploy config
发展
# Install dependencies
npm install
# Run TypeScript check
npx tsc --noEmit
# Compile tests
npx tsc -p tsconfig.test.json
# Run tests
node --test dist-test/src/context.test.js dist-test/src/tools.test.js
# Dry-run deploy
npm run deploy -- --dry-run
# Deploy
npm run deploy
本地开发人员
npx wrangler dev
MCP服务器可在 http://localhost:8787/mcp.
重要实施说明
- D1是真理的来源。 Vectorize和KV是缓存/索引;那里的故障被捕获并且不会阻止D1写入。
- 确定性检索: 数据库决定返回什么。排名使用显式元数据(
startup_priority,retrieval_priority,lifecycle_state,pinned,最近)。检索中不涉及LLM。 - 规范当前状态: 每个主题都可以有一个规范的活动项。旧版本仍通过以下方式存储
supersedes/replaces/derived_from关系,但正常检索只返回活动版本。 - 被取代/历史项目 仅在以下情况下返回
include_history=true. - 上下文无效: 写入清除活动焦点缓存,并酌情使启动/主题/项目缓存无效。
- AI是可选的: 它只会增强组织(总结、嵌入、合并建议);它从不控制正确性或检索顺序。
部署状态
上次部署时间: 2026-07-01
当前生产版本: 9d09fb45-ac34-49ff-9c12-3ac737497830
