Decision OS 中文导航¶
原文: Decision OS — Structured decision-making platform
分类: 决策智能/多准则分析
大小: 5.5 MB
语言: TypeScript/JavaScript
📚 项目简介¶
Decision OS 是一个精英决策智能平台,将直觉驱动的决策转化为结构化、数据驱动的科学决策。它实现了确定性加权求和评分模型,带有敏感性分析——基于数十年的决策科学研究。所有计算在浏览器客户端完成,零账号、零后端、零数据收集。
GitHub: https://github.com/ericsocrat/decision-os
Live Demo: https://decision-os-hazel.vercel.app
🔧 核心功能¶
| 功能 | 状态 | 说明 |
|---|---|---|
| 决策构建器 | ✅ | 标题、选项、加权标准、评分矩阵 |
| 实时结果 | ✅ | 排名选项 + 可视化分数条 |
| 关键驱动因子 | ✅ | 识别最重要的标准 |
| 敏感性分析 | ✅ | 权重变化 ±5%-50% 测试稳健性 |
| TOPSIS 算法 | ✅ | 理想/反理想距离排名 |
| 最小最大遗憾 | ✅ | 基于最坏情况遗憾的排名 |
| 蒙特卡洛模拟 | ✅ | 10,000 次概率敏感性分析 |
| 框架对比 | ✅ | WSM/TOPSIS/Regret 共识引擎 |
| 置信度评分 | ✅ | 每个评分的高/中/低置信度 |
| 偏见检测 | ✅ | 检测中心化、锚定、乐观偏见 |
| AHP 向导 | ✅ | 成对比较导出权重 |
| 推理笔记 | ✅ | 每个评分的理由记录 |
| 拖放排序 | ✅ | 键盘支持的拖放 |
| JSON/CSV 导入 | ✅ | 带预览和验证的导入 |
| JSON 导出/URL 分享 | ✅ | 下载数据或分享链接 |
| 决策对比 | ✅ | 多个决策并排对比 |
| 多决策管理 | ✅ | 保存并切换多个决策 |
| 8 个决策模板 | ✅ | Job Offer/Vendor/Apartment/Investment 等 |
| 撤销/重做 | ✅ | 50 步历史,Ctrl+Z/Ctrl+Shift+Z |
| 暗色模式 | ✅ | 系统感知,FOUC 防护 |
| 图表可视化 | ✅ | Recharts 支持的柱状图/分解图 |
| 云同步 | ✅ | Supabase 双向同步 (可选) |
| 无障碍访问 | ✅ | 键盘导航、ARIA 标签 |
| 1,383 个测试 | ✅ | 单元测试 + E2E + a11y |
📁 目录结构¶
decision-os/
├── src/ # 源代码
│ ├── components/ # React 组件
│ │ ├── DecisionBuilder/ # 决策构建器
│ │ ├── ResultsView/ # 结果视图
│ │ ├── SensitivityView/ # 敏感性分析
│ │ ├── MonteCarloView/ # 蒙特卡洛视图
│ │ ├── CompareView/ # 对比视图
│ │ └── FrameworkComparison/ # 框架对比
│ ├── contexts/ # React Context
│ │ ├── DecisionContext.tsx
│ │ ├── OptionsContext.tsx
│ │ └── CriteriaContext.tsx
│ ├── lib/ # 核心逻辑
│ │ ├── scoring.ts # 加权求和引擎
│ │ ├── topsis.ts # TOPSIS 算法
│ │ ├── regret.ts # 遗憾分析
│ │ ├── monte-carlo.ts # 蒙特卡洛模拟
│ │ ├── consensus.ts # 共识引擎
│ │ ├── bias-detection.ts # 偏见检测
│ │ ├── validation.ts # 输入验证
│ │ └── templates.ts # 决策模板
│ ├── hooks/ # React Hooks
│ ├── utils/ # 工具函数
│ └── types/ # TypeScript 类型
├── docs/ # 文档
│ ├── SCORING_MODEL.md # 评分模型详解
│ ├── DECISION_FRAMEWORKS.md # 决策框架
│ ├── ARCHITECTURE.md # 架构设计
│ └── ROADMAP.md # 路线图
├── tests/ # 测试
│ ├── unit/ # 单元测试
│ ├── e2e/ # E2E 测试
│ └── a11y/ # 无障碍测试
├── public/ # 静态资源
├── next.config.ts # Next.js 配置
├── package.json
└── README.md
🚀 快速开始¶
安装¶
# 克隆仓库
git clone https://github.com/ericsocrat/decision-os.git
cd decision-os
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 访问 http://localhost:3000
# 预加载了一个演示决策,可以立即探索
第一个决策:工作 Offer 选择¶
// 1. 定义决策
const decision = {
title: "选择最佳工作 Offer",
options: [
{ id: "offer-a", name: "初创公司 A" },
{ id: "offer-b", name: "大厂 B" },
{ id: "offer-c", name: "远程公司 C" }
],
criteria: [
{ id: "salary", name: "薪资", weight: 0.3 },
{ id: "growth", name: "成长空间", weight: 0.25 },
{ id: "wlb", name: "工作生活平衡", weight: 0.25 },
{ id: "culture", name: "企业文化", weight: 0.2 }
]
}
// 2. 为每个选项打分 (1-10 分)
const scores = {
"offer-a": { salary: 7, growth: 9, wlb: 6, culture: 8 },
"offer-b": { salary: 9, growth: 7, wlb: 5, culture: 6 },
"offer-c": { salary: 6, growth: 8, wlb: 9, culture: 7 }
}
// 3. 计算加权总分
// Offer A: 0.3×7 + 0.25×9 + 0.25×6 + 0.2×8 = 7.45
// Offer B: 0.3×9 + 0.25×7 + 0.25×5 + 0.2×6 = 6.90
// Offer C: 0.3×6 + 0.25×8 + 0.25×9 + 0.2×7 = 7.45
// 4. 敏感性分析
// 测试权重变化 ±10% 是否改变排名
// 如果 Offer A 在所有测试中都保持第一,说明决策稳健
📖 评分模型¶
加权求和模型 (WSM)¶
\[T_j = \sum_{i=1}^{n} \hat{w}_i \times e_{j,i}\]
其中: - \(\hat{w}_i\) = 归一化权重 - \(e_{j,i}\) = 有效评分 (考虑收益/成本标准)
示例计算:
决策:选择公寓
选项:公寓 A, 公寓 B, 公寓 C
标准:租金 (成本), 面积 (收益), 位置 (收益), 设施 (收益)
公寓 A:
- 租金:¥8000 (成本,越低越好) → 标准化后 7 分
- 面积:60m² (收益) → 8 分
- 位置:市中心 (收益) → 9 分
- 设施:健身房 (收益) → 6 分
权重:租金 0.4, 面积 0.25, 位置 0.25, 设施 0.1
总分 = 0.4×7 + 0.25×8 + 0.25×9 + 0.1×6 = 7.65
TOPSIS 算法¶
- 构建决策矩阵
- 归一化矩阵
- 计算加权归一化矩阵
- 确定理想解 (正理想/负理想)
- 计算各选项到理想解的距离
- 计算相对贴近度排序
最小最大遗憾¶
- 计算每个标准下的最大可能收益
- 计算每个选项的遗憾值 (最大收益 - 实际收益)
- 找出每个选项的最大遗憾
- 选择最大遗憾最小的选项
💡 典型应用场景¶
1. 职业决策¶
2. 投资决策¶
3. 产品选型¶
4. 生活决策¶
🎯 决策框架对比¶
| 框架 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| WSM | 简单线性决策 | 直观易解释 | 假设标准独立 |
| TOPSIS | 多属性对比 | 考虑相对距离 | 计算复杂 |
| Minimax Regret | 风险厌恶决策 | 保守稳健 | 可能过度保守 |
| AHP | 权重不确定 | 成对比较科学 | 操作繁琐 |
| Monte Carlo | 不确定性高 | 概率分析 | 计算量大 |
🔗 相关资源¶
- Awesome-Operations-Research - 运筹学资源
- security-decision-labs - 决策科学实验平台
- decision-science-comprehensive-resources
📚 理论基础¶
多准则决策分析 (MCDA)¶
| 方法 | 提出者 | 年份 | 核心思想 |
|---|---|---|---|
| WSM | Churchman | 1954 | 线性加权求和 |
| AHP | Saaty | 1977 | 成对比较矩阵 |
| TOPSIS | Hwang & Yoon | 1981 | 理想解距离 |
| ELECTRE | Roy | 1968 | 等级排序 |
| PROMETHEE | Brans | 1985 | 偏好函数 |
认知偏见检测¶
| 偏见 | 说明 | 检测方法 |
|---|---|---|
| 锚定偏见 | 过度依赖初始值 | 检测评分分布集中趋势 |
| 中心化偏见 | 避免极端评分 | 检测方差过小 |
| 乐观偏见 | 系统性高估 | 与历史数据对比 |
🛠️ 扩展使用¶
自定义决策模板¶
// templates.ts
export const customTemplate = {
title: "我的决策模板",
criteria: [
{ id: "c1", name: "标准 1", weight: 0.3 },
{ id: "c2", name: "标准 2", weight: 0.3 },
{ id: "c3", name: "标准 3", weight: 0.4 }
],
options: [
{ id: "o1", name: "选项 1" },
{ id: "o2", name: "选项 2" },
{ id: "o3", name: "选项 3" }
]
}
API 调用 (云同步)¶
import { supabase } from '@/lib/supabase'
// 保存决策
const saveDecision = async (decision) => {
const { data, error } = await supabase
.from('decisions')
.insert({ data: decision })
return { data, error }
}
// 加载决策
const loadDecision = async (id) => {
const { data } = await supabase
.from('decisions')
.select('*')
.eq('id', id)
return data
}
🎓 学习路径¶
1. 访问 Live Demo → 体验完整流程
2. 阅读 docs/SCORING_MODEL.md → 理解评分模型
3. 本地安装 → 运行自己的决策
4. 尝试敏感性分析 → 测试决策稳健性
5. 阅读 docs/ARCHITECTURE.md → 了解技术实现
6. 贡献代码 → 添加新框架/功能
本地路径: /workspace/code-examples/decision-os/
创建时间: 2026-06-02
难度: ⭐⭐ (入门友好)
**Decision OS 中文导航 | 多准则决策分析平台**
[返回代码索引](../../README_UPDATED.md) | [决策科学资源大全](../../docs/resources/decision-science-comprehensive-resources.md)