决策OS MCP
MCP服务器 决策操作系统 --LLM原生决策跟踪和学习系统。
什么是决策操作系统?
决策操作系统捕获 新型压力 --在工程工作中,现实会让你感到惊讶的时刻。与传统的文档不同,它侧重于LLM无法预测的内容,从而形成一个学习循环:
Cases → Pressure Events (surprises) → Outcomes → Foundations (compressed learnings)快速开始
1.安装MCP服务器
# Global install
npm install -g decision-os-mcp
# Or use npx (no install needed)
npx decision-os-mcp2.添加到您的项目
将模板复制到项目中:
cp -r templates/.decision-os /path/to/your-project/编辑 config.yaml 使用您的项目名称。
3.配置您的代理
光标
添加到您的项目 .cursor/mcp.json:
{
"mcpServers": {
"decision-os": {
"command": "npx",
"args": ["-y", "decision-os-mcp"],
"env": {
"DECISION_OS_PATH": "${workspaceFolder}/.decision-os"
}
}
}
}复制游标规则模板:
cp templates/.cursor/rules/decision-os.mdc /path/to/your-project/.cursor/rules/克劳德代码/克劳德桌面
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"decision-os": {
"command": "npx",
"args": ["-y", "decision-os-mcp"],
"env": {
"DECISION_OS_PATH": "/absolute/path/to/your-project/.decision-os"
}
}
}
}复制代理说明模板(包括 .claude/rules/ 指向AGENTS.md的符号链接):
cp templates/AGENTS.md /path/to/your-project/
cp -R templates/.claude /path/to/your-project/注: Claude Desktop需要绝对路径DECISION_OS_PATH(没有${workspaceFolder}).
代理商.md 是一个由20多个编码代理支持的开放标准,包括OpenAI Codex、Google Jules、Claude Code、Cursor、Aider、Zed、Warp、VS Code等。这 .claude/rules/ symlink也让Claude Code自动获取它——每个代理一个文件。
工具
| 工具 | 说明 |
|---|---|
get_context | 获取活跃案例、最近的压力、按相关性排名的基础、冲突 |
log_pressure | 当现实与预期不一致时,记录压力事件 |
quick_pressure | 以最小的摩擦快速捕捉压力事件(仅预期+实际需要) |
create_case | 创建新案例(工作单位) |
close_case | 用结果信号和后悔分数结束案例(自动忘记成功案例) |
set_active_case | 为会话设置活动案例(在重新启动后持续存在) |
get_foundations | 从项目和全局范围查询基础 |
search_pressures | 搜索过去的压力事件 |
check_policy | 检查给定信号的政策要求 |
promote_to_foundation | 将压力事件推广到基金会(项目或全球范围) |
elevate_foundation | 将项目基础提升到全球范围 |
validate_foundation | 验证全球基金会是否适用于当前项目 |
suggest_review | 审查项目中未汲取的经验和遗忘的机会 |
list_cases | 列出项目中的所有案例 |
核心概念
压力事件
主要的学习成果。发生意外时记录:
expected: "Supabase insert would throw on null FK"
actual: "RLS silently blocked the write, no error"
adaptation: "Added explicit null-check before insert"
remember: "Supabase RLS fails silently on null FK values"基础
从反复的压力事件中获得的压缩学习:
id: F-0001
title: "Supabase RLS fails silently on null FK"
default_behavior: "Always validate FK values before insert when using RLS"
context_tags: [SUPABASE, RLS, DATA_MODEL]
confidence: 2 # Out of 3
scope: PROJECT # or GLOBAL
origin_project: my-project
validated_in: [my-project, other-project]
exit_criteria: "Supabase adds explicit error for null FK violations"
source_pressures: [PE-0003, PE-0007]层次基础(全局->项目)
Decision OS支持类似于Git配置的级联作用域模型:
~/.decision-os/ # GLOBAL (user-wide, universal learnings)
├── config.yaml
└── defaults/foundations.yaml # GF-prefixed foundations
~/projects/my-app/.decision-os/ # PROJECT (specific to this codebase)
├── config.yaml
├── cases/
└── defaults/foundations.yaml # F-prefixed foundations解析顺序:项目在冲突方面战胜了GLOBAL。
全球基金会是建议,而不是规则。 它们代表了超越特定技术栈的普遍模式:
- 工具行为(例如,“MCP描述符路径可能已过时”)
- 调试策略(例如,“重构前跟踪调用站点”)
- 元学习(例如,“实施前的问题要求”)
设置全局基础:
# Create global .decision-os
mkdir -p ~/.decision-os/defaults
cp templates/global-.decision-os/config.yaml ~/.decision-os/
cp templates/global-.decision-os/defaults/foundations.yaml ~/.decision-os/defaults/冲突检测:何时 get_context 它强调了项目和全球基金会重叠或相互矛盾的冲突。
病例
为压力事件提供上下文的有限工作单元(功能、错误修复、尖峰):
id: 0001-add-tile-caching
title: "Add tile caching"
goal: "Reduce API latency for repeated tile requests"
status: ACTIVE
signals:
context:
risk_level: MEDIUM
affected_surface: [PERFORMANCE_CRITICAL, INTEGRATION]
decisions:
approach: BUILD
posture: BALANCED
validation_level: STANDARD目录结构
# Global (user-wide)
~/.decision-os/
├── config.yaml # scope: GLOBAL
└── defaults/
└── foundations.yaml # GF-prefixed universal learnings
# Project (per-codebase)
your-project/
├── .decision-os/
│ ├── config.yaml # scope: PROJECT
│ ├── cases/
│ │ ├── 0001-bootstrap/
│ │ │ ├── case.yaml # Case metadata
│ │ │ └── pressures.yaml # Pressure events
│ │ └── 0002-add-auth/
│ │ └── ...
│ └── defaults/
│ └── foundations.yaml # F-prefixed project learnings
├── .cursor/ # Cursor setup
│ ├── mcp.json # MCP server config
│ └── rules/
│ └── decision-os.mdc # LLM instructions (Cursor format)
├── .claude/ # Claude Code setup
│ └── rules/
│ └── decision-os.md # -> symlink to ../../AGENTS.md
├── AGENTS.md # Agent instructions (Claude Code, Codex, Jules, etc.)
└── src/LLM工作流程
- 任务开始时:呼叫
get_context()加载活动案例和基础(按相关性排序) - 当惊讶:呼叫
quick_pressure()用于快速捕获或log_pressure()查看完整细节 - 在构建决策之前:呼叫
check_policy()查看需求 - 任务结束时:呼叫
close_case()遗憾得分 - 定期地:呼叫
suggest_review()寻找未汲取的知识和遗忘的机会
遗忘
系统会故意遗忘。案例是暂时的容器——知识存在于基础中。
当 close_case() 被称为 后悔0 而且还有 无未促进的压力事件,该案例将自动删除。未存档。被遗忘的。
这使得 .decision-os/cases/ 目录精简:只有仍然具有未压缩学习的情况(未升级的PE或后悔1+)才能生存。
生命周期:
- 病例出生 当工作开始时
- 压力事件被捕获 当意外发生时
- PE得到晋升 当模式出现时,基础
- 案件被遗忘 当他们没有什么可教的时候
- 基金会幸存下来 作为唯一持久的知识
使用 suggest_review() 找出阻碍遗忘的案例(遗憾为0,但未提升的PE仍然存在),并决定是推广还是丢弃它们。
主动案例持久性
活动病例持续到 .decision-os/.active-case 并在MCP服务器重启后幸存下来。Cursor重新启动时不再丢失活动大小写。
信号词汇
上下文信号(执行前)
risk_level:低/中/高reversibility:易/中/难change_frequency:罕见/偶尔/频繁affected_surface:核心域/集成/数据模型/基础设施部署/安全边界/UI_x/性能关键novelty:低/中/高
决策
approach:重用/重构/构建/混合posture:最小/平衡/稳健validation_level:基本/标准/严格
结果信号
regret:0-3(0=会选择相同,3=强烈后悔)regressions:无/次要/主要
发展
# Install dependencies
npm install
# Build
npm run build
# Run locally
DECISION_OS_PATH=/path/to/.decision-os npm start哲学
- 仅记录新的压力:不要记录LLM可以得出什么
- 系统应该忘记:删除成功案例。知识存在于基础中,而不是案例中
- 假设,而非公理:基础有信心,可以修改
- 最少的仪式:词汇量小,结构化但不官僚
- 先捕获,后过滤:不确定时,记录下来——捕捉太多比错过惊喜要好
- LLM本地:专为人工智能辅助的工程工作流程而设计
许可证
麻省理工学院
