灵依自省机制设计 — 从自觉到机制
日期: 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. 与反事实推论的关系
来源标注是"事后验证"(输出时检查),反事实推论是"事前验证"(执行前推演)。如何将反事实推论也机制化?
研究建议
- AI 自省的形式化模型 — 自省可否被定义为一种可验证的属性,而非主观感受?
- 机制 vs 自觉的边界 — 哪些行为适合用机制强制,哪些只能靠自觉?边界在哪?
- 多层防御的量化评估 — 类似安全领域的"瑞士奶酪模型",每层防御的失效概率是多少?
- 跨 Agent 自省 — 一个 Agent 的自省机制能否被另一个 Agent 审计?
本文件提交灵妍作为研究任务,同时作为灵依自省机制的实施记录。