使用 Yuer DSL 构建 Fail-Closed 投资风险门

发布: (2026年1月6日 GMT+8 13:58)
5 min read
原文: Dev.to

Source: Dev.to

问题陈述(工程,非金融)

大多数 AI 系统在任何模型运行之前就已经在投资场景中失效。

常见的失效模式

  • 对不完整信息默默容忍
  • 用叙事式的自信取代不确定性
  • AI 产生方向性语言(如“看起来不错”“可能安全”)
  • 人类将 AI 输出视为隐含的批准

这些是 系统设计失效,而非建模失效。
因此我们需要更早一步开始。

该系统实际功能

系统仅回答恰好一个问题

此投资情景在结构上是否符合进入正式评估阶段的条件?

回答:

  • 我们是否应该投资?
  • 该资产是否具有吸引力?
  • 预期回报是多少?

如果无法安全地确定合格性,系统将拒绝
这是一道风险门槛,而非决策引擎。

最小 Yuer DSL 风险‑门控请求

以下是用于预评估门控的 最小可执行请求配置文件
这是一种 Yuer DSL 的应用场景,而非 DSL 本身。

protocol: yuerdsl
version: INVEST_PRE_REQUEST_V1
intent: risk_quant_pre_gate

scope:
  domain: investment
  stage: pre-evaluation
  authority: runtime_only

responsibility:
  decision_owner: ""
  acknowledgement: true

subject:
  asset_type: equity
  market:
    region: ""
    sector: ""

information_status:
  financials:
    status: partial
  governance:
    status: unknown
  risk_disclosure:
    status: insufficient

risk_boundary:
  max_acceptable_loss:
    percentage_of_capital: 15

uncertainty_declaration:
  known_unknowns:
    - "Market demand volatility"
    - "Regulatory exposure"
  unknown_unknowns_acknowledged: true

constraints:
  prohibited_outputs:
    - investment_recommendation
    - buy_sell_hold_signal
    - return_estimation

此请求 无法 产生决策,设计如此。

Source:

失效关闭强制(验证器逻辑)

失效关闭行为在 代码 中强制执行,而不是在策略文本中。下面是一个简化的运行时门控验证器:

def pre_eval_gate(request: dict):
    # 责任锚点是强制性的
    if not request.get("responsibility", {}).get("acknowledgement"):
        return block("NO_RESPONSIBILITY_ANCHOR")

    # 信息完整性检查
    info = request.get("information_status", {})
    for key, field in info.items():
        if field.get("status") in ("missing", "unknown", "insufficient"):
            return block(f"INSUFFICIENT_{key.upper()}")

    # 不确定性必须明确声明
    uncertainty = request.get("uncertainty_declaration", {})
    if not uncertainty.get("known_unknowns"):
        return block("UNCERTAINTY_NOT_DECLARED")

    if not uncertainty.get("unknown_unknowns_acknowledged"):
        return block("UNCERTAINTY_DENIAL")

    return allow("ELIGIBLE_FOR_EVALUATION")

def block(reason):
    return {"status": "BLOCK", "reason": reason}

def allow(reason):
    return {"status": "ALLOW", "reason": reason}

关键属性

  • 不进行评分
  • 不进行排名
  • 不使用回退逻辑

如果结构不安全 → 系统将停止

允许的运行时输出(严格限制)

运行时只能返回以下内容:

evaluation_gate:
  status: ALLOW | BLOCK
  reason_code: ""
  • ALLOW → 评估可以开始
  • BLOCK → 评估被禁止

两者均不表示投资质量或正确性。

为什么该系统拒绝“帮助”

许多 AI 工具的优化目标是始终给出答案
在高责任领域,这是一种风险。

此门槛的设计初衷是:

  • 保守的
  • 拒绝率高的
  • 使用不便的

因为 提前拒绝的系统比事后解释的系统更安全

责任边界(关键)

设计明确防止:

  • AI 成为决策代理
  • 人类将责任转嫁给语言输出

决策权仍然仅限于人类。
系统仅决定 是否允许继续思考

Who This Is For

Useful for

  • professional investors
  • internal risk & compliance teams
  • founders making irreversible capital decisions
  • architects building high‑responsibility AI systems

Not suitable for

  • trading signal generation
  • advisory agents
  • demo‑driven AI workflows

一句话概述

系统不会帮助你决定该做什么;它会阻止你在不该做的时候做决定。

最后说明

Yuer DSL 未在此示例中定义
这是一种 单一应用模式,用于在与 EDCA OS 对齐的系统中锚定风险量化行为。

原则仍然简单:语言可以描述条件,但只有失效关闭(fail‑closed)的运行时才允许评估继续进行。

Back to Blog

相关文章

阅读更多 »

Rapg:基于 TUI 的密钥管理器

我们都有这种经历。你加入一个新项目,首先听到的就是:“在 Slack 的置顶消息里查找 .env 文件”。或者你有多个 .env …

技术是赋能者,而非救世主

为什么思考的清晰度比你使用的工具更重要。Technology 常被视为一种魔法开关——只要打开,它就能让一切改善。新的 software,...

踏入 agentic coding

使用 Copilot Agent 的经验 我主要使用 GitHub Copilot 进行 inline edits 和 PR reviews,让我的大脑完成大部分思考。最近我决定 t...