把领域方法论编译成可验证的推理链。
不是让 LLM 自己想,而是把专家的分析方法论编排成 DAG,引擎逐步执行,步骤间信息流动,结论可追溯。
直接问 LLM "分析一下 X" 的问题:
- 维度覆盖随机,跑三次三个结果
- 步骤间没有信息流——A 的结论不会影响 B 的判断
- 没有办法验证"是否真的按方法论走了"
ThinkDAG 解决的是:让 LLM 严格按照人定义的分析框架执行,每一步的输出注入下一步,保证覆盖、保证顺序、保证可追溯。
算子 (.md) 领域专家用 Markdown 写分析维度,声明输入输出
↓
编排 (.yaml) 定义 DAG:哪些算子、什么顺序、章节间依赖
↓
引擎 按拓扑序逐步调用 LLM → 提取结构化输出 → 注入下一步 → Synthesis
- DAG 调度:章节按拓扑序执行,同层可并行,后层拿到前层结论
- 信息流:Ch2 的分析建立在 Ch1 的输出之上,不是各维度独立回答
- 结构化提取:每步输出 JSON,可被下游消费
- Synthesis:汇总全部章节,按评分锚点和决策边界给出最终判断
| Agent | Skills | LangGraph | ThinkDAG | |
|---|---|---|---|---|
| 谁决定执行顺序 | LLM | LLM | 开发者(Python) | 领域专家(YAML) |
| 步骤间信息流 | 隐式 | 无 | 有(状态机) | 有(DAG + 结构化 I/O) |
| 写逻辑的人 | - | 开发者 | 开发者 | 领域专家(Markdown) |
| 执行确定性 | 低 | 中 | 高 | 高 |
Agent 的核心是自主性;ThinkDAG 的核心是方法论执行。 自由度让给 Agent,可靠性留给引擎。
在投资分析场景中,21 个算子 × DAG 编排,120 只股票 × 5 年回测:+7.1pp alpha over 沪深300。
结构化分析不是让 LLM 更聪明,是保证每个维度都被认真看过,且维度间的信息在流动。
# 安装
pip install -e .
# 配置 LLM(支持任何 OpenAI 兼容 API)
cp .env.example .env
# 编辑 .env,填入 LLM_API_KEY 和 LLM_BASE_URL
# 运行分析
thinkdag run workflows/general_decision.yaml \
--input "我在考虑是否要从大厂跳槽去一家 50 人的 AI 创业公司做技术负责人" \
--output results/ \
--verbose算子是 Markdown 文件,前置 YAML frontmatter 声明元数据:
---
id: financial_impact
name: 财务影响评估
tags: [通用, 决策, 财务]
outputs:
- field: total_cost
type: str
desc: 预估总成本
- field: financial_risk_level
type: str
desc: 财务风险等级 (高/中/低)
---
## 财务影响评估
### 分析要点
1. **成本全景**: 直接成本、间接成本、隐性成本
2. **收益预估**: 经济回报与非经济回报
3. **回本分析**: 多久能收回投入?
4. **安全边际**: 最差情况下能撑多久?
### 判断标准
- 风险低:成本可控,有足够安全边际
- 风险高:资金压力大,依赖乐观假设name: 通用决策分析
version: "1.0"
operators_dir: ../operators/general/
chapters:
- id: situation
title: 现状评估
operators: [financial_impact, stakeholder_analysis]
dependencies: []
- id: analysis
title: 多维分析
operators: [opportunity_cost, risk_assessment, reversibility]
dependencies: [situation] # ← 拿到现状评估的结论后再分析
- id: decision
title: 决策研判
operators: [value_alignment, second_order_effects]
dependencies: [analysis]
synthesis:
analyst_role: 决策分析专家
thinking_steps:
- step: 核心矛盾
instruction: 最可能让这件事失败的原因 vs 成功的最大价值
- step: 可逆性判断
instruction: 单向门还是双向门?
- step: 综合评分
instruction: 0-100 分thinkdag/
├── thinkdag/ # 引擎核心 (~1200 LOC)
│ ├── engine.py # DAG 调度 + Agent Loop + Synthesis
│ ├── operators.py # 算子加载与注册
│ ├── config.py # Workflow YAML 解析
│ ├── client.py # LLM 客户端(OpenAI 兼容)
│ ├── schemas.py # 结构化输出 Schema
│ ├── tools.py # Tool Registry(预留)
│ └── cli.py # 命令行入口
├── operators/ # 算子库
│ └── general/ # 通用决策算子 (7个)
├── workflows/ # 编排定义
│ └── general_decision.yaml
└── .env.example # LLM 配置模板
编排引擎在以下条件同时满足时优势最大:
- 多步依赖 — 先搞清 A 才能判断 B
- 不允许遗漏 — 每个维度都必须覆盖
- 需要可追溯 — 要知道结论是怎么来的
- 有成熟方法论 — 领域专家知道该看什么
投资分析、财报审计、合同审批、尽调报告、合规审查 — 都是这类问题。
Alpha。引擎可用,算子库尚薄。投资场景有验证(+7.1pp alpha),通用场景待验证。
Apache 2.0