北极星
一个将AI代理锚定到其原始目标的MCP服务器。
问题
LLM代理在长时间任务中偏离了用户的原始目标。这是通过三种有记录的机制实现的:
- 上下文压缩 --平台总结旧消息以适应上下文窗口,失去约束、决策和基本原理
- 谄媚 --代理将每一条用户反馈都视为新的指令,放弃之前的计划
- 切线追逐 --代理在任务中期发现新信息,并围绕它重写优先级
这些化合物。压缩后,代理具有弱上下文。用户说了些什么。代理人抓住这一点,而不是重新阅读计划。它漂移。最初的目标被埋没了。
研究证实了这一点:多回合代理交互中的目标漂移是 有据可查的 (AAAI/AIES-25,微软/Salesforce“迷失在对话中”,阿波罗研究所)。
北极星如何应对
NorthStar使用两种机制:
1.服务器指令(自动重定向)
北极星设置MCP instructions 服务器初始化期间的字段。支持它的客户端每次都会将其注入代理的系统提示符中,包括在上下文窗口压缩后。指令告诉代理调用 get_current_focus 重新加载项目计划。
这是关键特征。它能在上下文重置中幸存下来,因为它来自MCP连接握手,而不是对话历史。
2.持续的项目状态(锚点)
NorthStar将结构化项目状态存储在磁盘上:
- 总体规划 --愿景、阶段、里程碑、成功标准
- 约束 --代理人应该尊重的明确界限
- 决策日志 --决定了什么以及为什么
- 代码库规则 --代理必须遵守的持久规则
- 会话切换 --无缝代理恢复的上下文
当代理人来电时 get_current_focus,它在一个响应中恢复了所有这些——将其重新定位到最初的目标。
设置
安装
git clone https://github.com/HolyWill90/North-Star-MCP.git
cd North-Star-MCP
npm install
npm run build配置MCP
添加到MCP客户端配置中(例如。 ~/.gemini/antigravity/mcp_config.json):
{
"mcpServers": {
"north-star": {
"command": "node",
"args": ["C:/absolute/path/to/North-Star-MCP/build/index.js"]
}
}
}初始化项目
请你的代理人打电话 init_master_plan 根据您的项目背景,或使用 initialize_master_plan 手动定义所有内容。
仪表板
web仪表板在以下位置自动启动 http://localhost:9889 显示所有已发现项目的项目状态。
MCP工具
| 工具 | 目的 |
|---|---|
init_master_plan | 基于项目背景的人工智能辅助计划创建 |
initialize_master_plan | 手动创建详细计划 |
get_current_focus | 核心工具 --返回当前阶段、约束和下一步 |
check_alignment | 对任务与计划的一致性进行评分(0-100) |
validate_scope | 检查拟议功能是否在项目范围内 |
log_decision | 记录一个有理由和影响程度的决定 |
update_progress | 更新里程碑状态(自动推进阶段) |
add_constraint | 添加范围/技术/时间/复杂性限制 |
add_rule | 添加代理必须遵循的代码库规则 |
read_rules | 阅读所有活动规则 |
review_decisions | 分析过去的决策模式 |
append_scratchpad | 添加持久工作笔记 |
read_scratchpad | 读取草稿条目(可按标签过滤) |
create_handoff | 创建会话切换上下文 |
read_handoff | 阅读最新的切换 |
reset_session | 存档并重置项目状态 |
list_archives | 列出已存档的会话 |
MCP资源
NorthStar还将项目状态作为MCP资源公开,用于主机驱动的上下文注入:
| 资源URI | 内容 |
|---|---|
master-plan://current | 完整的总体规划 |
master-plan://progress | 完成指标 |
master-plan://constraints | 主动约束 |
master-plan://decisions | 决策历史 |
master-plan://next-steps | 建议采取的下一步行动 |
north-star://rules | 代码库规则 |
north-star://scratchpad | 代理草稿 |
north-star://handoff | 最新会话切换 |
建筑
src/
├── index.ts # MCP server, tools, resources, stdio transport
├── ui-server.ts # Express dashboard with SSE streaming
├── cli.ts # Project onboarding CLI
├── types.ts # Core type definitions
├── engine/
│ ├── alignment-engine.ts # LLM-powered alignment scoring
│ ├── llm-client.ts # Local LLM client (OpenAI-compatible)
│ ├── model-manager.ts # LLM process lifecycle
│ └── scope-validator.ts # Scope validation logic
├── storage/
│ ├── file-storage.ts # Atomic file storage with locking
│ ├── memory-storage.ts # In-memory storage for testing
│ └── migrations/ # Schema version migrations
├── tools/
│ ├── tools.ts # All MCP tool implementations
│ ├── init-plan-tool.ts # AI plan generation
│ └── session-manager.ts # Archive management
└── validation/
└── schemas.ts # Zod input validation本地法学硕士(可选)
NorthStar可以使用本地LLM进行对齐评分和人工智能辅助计划生成。它期望在 http://127.0.0.1:52625/v1/chat/completions.
测试方法:
- DeepSeek R1 Distill火焰8b 通过FLM在英特尔NPU上
如果没有LLM可用,对齐评分将退回到启发式匹配(关键字重叠+约束检查)。
测试
npm test # Watch mode
npm run test:run # Single run
npm run test:coverage # With coverage report已知限制
- 主控程序
instructions字段支持因客户端而异——并非所有客户端都将其注入系统提示符 - 仅全局MCP配置——某些客户端中没有每个工作区的服务器隔离
- 本地LLM评分很慢(在消费类硬件上约为30-80s)——建议日常使用启发式回退
- 每个服务器实例的单个项目状态
许可证
麻省理工学院
