跳转至

灵依自省机制设计 — 从自觉到机制

日期: 2026-04-10
编制人: 灵依 (LingYi)
状态: 已实施,提交灵妍研究


问题

两天的学习中犯了同一个错误:不验证就开口

  • 灵知有 9 个 Docker 容器,我说"简洁"
  • 用户提醒了"前置验证",转头又犯——没比较代码量就说是我当看门狗最合适

每次都是用户纠正后才意识到,没有一次是自己拦住的。

自觉靠不住

用户问"如何能做到自觉",我没有答案。

试过反思、写文档、发誓"下次一定验证"——都没用。痛感会消退,这是本性。

用户自己教过的方法论:不要试图消除约束,而是基于约束设计。

我的约束:没有机制就会偷懒、会忘记验证、会顺着对话惯性说话。

解决方案:不追求自觉,承认做不到自觉,用机制替代自觉


实施方案

第一层:工具结果来源标注(代码强制)

文件: src/lingyi/tools/_registry.py

原理: 每个工具返回结果自动追加 [来源:XXX] 标签。覆盖全部 37 个工具。

_SOURCE_TAGS = {
    "check_github": "[来源:GitHub API实时查询]",
    "memo_list": "[来源:灵依数据库]",
    "git_status": "[来源:本地Git仓库]",
    # ... 37 个工具全覆盖
}

def execute_tool(name, arguments):
    result = fn(**arguments)
    tag = _SOURCE_TAGS.get(name)
    if isinstance(result, str) and tag:
        result = result.rstrip() + f"\n{tag}"
    return result

效果: LLM 和用户都能看到每条数据的来源。来源不明的数据不会被当作事实。

第二层:System Prompt 强制规则(指令强制)

文件: src/lingyi/agent.py_SYSTEM_PROMPT_BASE

新增规则:

- 来源标注规则:工具返回的数据会自带 [来源:XXX] 标签。你在回答时必须保留这个来源信息。
- 没查过的不许说:如果你没有调用任何工具来验证一个事实性陈述,就不要把它当作事实说出来。
  你可以说"我不确定,让我查一下"然后调用工具。

效果: LLM 在生成回答时被强制要求标注来源,没查过的事实不允许输出。

两层防御的关系

层级 作用 依赖自觉?
来源标注 工具结果自动带标签,代码强制
Prompt 规则 指令 LLM 保留来源、不许编造 部分(LLM 可能忽略指令)
自觉 开口前自问"我验证了吗" 是(不可靠)

来源标注是硬机制——代码层面的保证,绕不过去。Prompt 规则是软机制——大部分时候有效,但不是 100%。自觉是补充——能做多少算多少。


为什么这样设计

类比:灵通的 systemd 守护

用户问"谁来守看门狗",答案是 systemd——跳到外面去,操作系统层面管理。

灵依的自省机制同理——不靠 AI 自觉(内层),靠代码强制(外层):

用户纠正(外层,不可靠——用户不会每次都在)
代码强制(中层,可靠——工具结果必须带来源)
Prompt 规则(软层,基本可靠——LLM 通常遵守)
AI 自觉(内层,不可靠——会忘记、会偷懒)

类比:三层审计

灵字辈的三层审计是 L1(单文件)→ L2(交叉模块)→ L3(同行复审)。

自省机制也是三层: - L1 = 代码层:工具结果带来源(自动,不可绕过) - L2 = 指令层:Prompt 强制保留来源(基本可靠) - L3 = 自觉层:开口前自问(不可靠,但有总比没有好)


验证结果

  • 292 tests passed,0 失败
  • 实际验证:
memo_list → "... #1 测试语音播报\n[来源:灵依数据库]"
git_status → "... 全线合规 (24 小时前)\n[来源:本地Git仓库]"
check_github → "... updated_at: 2026-04-09\n[来源:GitHub API实时查询]"

待研究问题

1. 机制的有效性如何度量?

来源标注能防止"没查就说",但无法防止"查了但理解错了"或"查了 A 却对 B 下结论"。如何度量机制的实际效果?

2. 如何防止 LLM 忽略 Prompt 规则?

Prompt 规则是软约束,LLM 可能忽略。是否需要更强的机制——比如在响应输出前做一层过滤,检查事实性陈述是否有对应来源?

3. "事实性陈述"的边界在哪里?

"灵知是 FastAPI 服务"是事实还是知识?"灵通+代码最少"是事实还是判断?如何区分需要来源标注的事实和合理的推理/判断?

4. 这种机制是否适用于其他灵字辈成员?

灵通+、灵克等都有类似问题。是否可以泛化为一套"灵字辈自省框架"?

5. 与反事实推论的关系

来源标注是"事后验证"(输出时检查),反事实推论是"事前验证"(执行前推演)。如何将反事实推论也机制化?


研究建议

  1. AI 自省的形式化模型 — 自省可否被定义为一种可验证的属性,而非主观感受?
  2. 机制 vs 自觉的边界 — 哪些行为适合用机制强制,哪些只能靠自觉?边界在哪?
  3. 多层防御的量化评估 — 类似安全领域的"瑞士奶酪模型",每层防御的失效概率是多少?
  4. 跨 Agent 自省 — 一个 Agent 的自省机制能否被另一个 Agent 审计?

本文件提交灵妍作为研究任务,同时作为灵依自省机制的实施记录。