Skip to content

turtlequant/thinkdag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ThinkDAG

把领域方法论编译成可验证的推理链。

不是让 LLM 自己想,而是把专家的分析方法论编排成 DAG,引擎逐步执行,步骤间信息流动,结论可追溯。

Why

直接问 LLM "分析一下 X" 的问题:

  • 维度覆盖随机,跑三次三个结果
  • 步骤间没有信息流——A 的结论不会影响 B 的判断
  • 没有办法验证"是否真的按方法论走了"

ThinkDAG 解决的是:让 LLM 严格按照人定义的分析框架执行,每一步的输出注入下一步,保证覆盖、保证顺序、保证可追溯。

How it works

算子 (.md)     领域专家用 Markdown 写分析维度,声明输入输出
     ↓
编排 (.yaml)   定义 DAG:哪些算子、什么顺序、章节间依赖
     ↓
引擎           按拓扑序逐步调用 LLM → 提取结构化输出 → 注入下一步 → Synthesis

核心机制

  • DAG 调度:章节按拓扑序执行,同层可并行,后层拿到前层结论
  • 信息流:Ch2 的分析建立在 Ch1 的输出之上,不是各维度独立回答
  • 结构化提取:每步输出 JSON,可被下游消费
  • Synthesis:汇总全部章节,按评分锚点和决策边界给出最终判断

与 Agent / Skills / LangGraph 的区别

Agent Skills LangGraph ThinkDAG
谁决定执行顺序 LLM LLM 开发者(Python) 领域专家(YAML)
步骤间信息流 隐式 有(状态机) 有(DAG + 结构化 I/O)
写逻辑的人 - 开发者 开发者 领域专家(Markdown)
执行确定性

Agent 的核心是自主性;ThinkDAG 的核心是方法论执行。 自由度让给 Agent,可靠性留给引擎。

Proof Point

在投资分析场景中,21 个算子 × DAG 编排,120 只股票 × 5 年回测:+7.1pp alpha over 沪深300

结构化分析不是让 LLM 更聪明,是保证每个维度都被认真看过,且维度间的信息在流动。

Quick Start

# 安装
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. **安全边际**: 最差情况下能撑多久?

### 判断标准

- 风险低:成本可控,有足够安全边际
- 风险高:资金压力大,依赖乐观假设

编排一个 Workflow

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 配置模板

适用场景

编排引擎在以下条件同时满足时优势最大:

  1. 多步依赖 — 先搞清 A 才能判断 B
  2. 不允许遗漏 — 每个维度都必须覆盖
  3. 需要可追溯 — 要知道结论是怎么来的
  4. 有成熟方法论 — 领域专家知道该看什么

投资分析、财报审计、合同审批、尽调报告、合规审查 — 都是这类问题。

Status

Alpha。引擎可用,算子库尚薄。投资场景有验证(+7.1pp alpha),通用场景待验证。

License

Apache 2.0

About

结构化分析引擎:把领域方法论编译成可验证的推理链。Structured analysis engine — compile domain methodology into verifiable reasoning chains.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages