Update: 将子项目从 submodule 转为完整内容

- 移除 GovAI, nomifun-tauri, 算力盒子 的 submodule 引用
- 添加所有子项目的完整源代码
- 保留原始 .git 为 .git.bak 备份
This commit is contained in:
freedak
2026-07-04 19:20:46 +08:00
parent 54d6465fa7
commit f7a720204a
3360 changed files with 802660 additions and 3 deletions
+155
View File
@@ -0,0 +1,155 @@
# 来源标注徽章实现方案
## 问题描述
在合规审查助手等应用中,用户看不到回复中的**知识库来源徽章**和**AI建议徽章**,无法区分内容来自知识库还是AI自身知识。
## 解决方案
采用**三层实现方案**
### 1. 后端系统提示词强化(已完成)
**文件**`server/internal/handler/chat_llm.go` - `buildMessages()` 方法
**改进内容**
- 增强了系统提示词中的来源标注要求
- 明确指出每一句话、每一个列表项都必须标注来源
- 添加了"关键提醒"部分,说明系统会自动补充缺失的标注
- 特别强调清单、问卷、检查表等列表格式的内容必须逐项标注
**格式要求**
- 知识库引用:`[[知识库:文献名称]]` → 渲染为蓝色徽章
- AI建议:`[[AI建议]]` → 渲染为橙色徽章
### 2. 后端自动标注增强(已完成)
**文件**`server/internal/handler/chat_llm.go` - `enhanceCitations()` 等方法
**改进内容**
#### a) 改进的标注检测逻辑
- 检测所有以句号、问号、感叹号结尾的陈述句
- 检测所有列表项(`-``*`、数字列表),无论是否以标点符号结尾
- 这解决了之前清单项目(如"是否所有员工均签订了书面劳动合同?")没有被标注的问题
#### b) 统一的来源说明块处理
-`enhanceCitations()` 中统一处理来源说明块的添加
- 确保所有回复末尾都有来源汇总块,包括已有标注的回复
#### c) 智能标注决策
- 对于长内容(>100字)或包含"建议"、"注意"、"可以"等词的内容,标注为 `[[AI建议]]`
- 对于短内容且有知识库的情况,标注为 `[[知识库:xxx]]`
### 3. 前端徽章渲染(已存在,无需修改)
**文件**`apps/web/src/components/ui/gov-markdown.tsx`
**现有功能**
- `preprocessCitations()` 函数将 `[[知识库:xxx]]` 转换为 `[xxx](#cite-kb)` 链接
- `preprocessCitations()` 函数将 `[[AI建议]]` 转换为 `[AI建议](#cite-ai)` 链接
- Markdown 渲染器的 `a` 组件拦截这些特殊链接并渲染为彩色徽章
- 知识库徽章:蓝色背景 + BookOpen 图标
- AI建议徽章:橙色背景 + BrainCircuit 图标
## 工作流程
```
用户输入
后端检索知识库 → 获取相关文献
构建系统提示词 → 包含强化的标注要求
调用 LLM 生成回复
后端后处理 (enhanceCitations)
├─ 检查是否有标注
├─ 如果没有标注 → 自动添加
├─ 如果有部分标注 → 补充缺失的
└─ 确保末尾有来源说明块
流式返回给前端
前端 GovMarkdown 组件
├─ 预处理:转换标注格式
├─ 渲染:Markdown → HTML
└─ 徽章渲染:特殊链接 → 彩色徽章
用户看到带有来源徽章的回复
```
## 测试覆盖
**文件**`server/internal/handler/chat_llm_test.go`
**测试用例**
1. ✅ 清单格式 - 为每个问题添加标注
2. ✅ 列表项 - 为每个列表项添加标注(无论是否以标点符号结尾)
3. ✅ 数字列表 - 为每个列表项添加标注
4. ✅ 陈述句 - 为陈述句添加标注
5. ✅ 无知识库 - 添加AI建议标注
6. ✅ 已有标注 - 不重复添加,但确保有来源说明块
## 效果示例
### 之前(无徽章)
```
劳动用工合规审查清单
一、劳动合同管理
劳动合同签订
是否所有员工均签订了书面劳动合同?
合同内容是否符合《劳动合同法》的相关规定?
```
### 之后(有徽章)
```
劳动用工合规审查清单
一、劳动合同管理
劳动合同签订
是否所有员工均签订了书面劳动合同? [[AI建议]]
合同内容是否符合《劳动合同法》的相关规定? [[AI建议]]
---
> **来源说明**
>
> **AI建议:**
> - 清单项目和检查问题
```
前端会将 `[[AI建议]]` 渲染为橙色徽章,用户可以清楚看到内容来源。
## 关键改进点
1. **列表项检测改进**:之前只检查以标点符号结尾的行,现在所有列表项都会被标注
2. **来源说明块统一处理**:确保所有回复都有来源汇总块
3. **系统提示词强化**:更明确地要求 LLM 遵守标注规则
4. **自动补充机制**:即使 LLM 没有完全遵守,后端也会自动补充缺失的标注
## 下一步优化方向
1. **方案B升级**:修改后端返回结构化数据,包含来源元数据
2. **再生成功能**:实现"重新生成"按钮,保留原有的来源标注
3. **来源溯源**:支持点击徽章查看完整的知识库原文
4. **统计分析**:追踪知识库引用率,优化知识库内容
## 修改文件列表
- `server/internal/handler/chat_llm.go` - 增强标注逻辑和系统提示词
- `server/internal/handler/chat_llm_test.go` - 新增测试用例(6个)
## 验证方式
```bash
# 运行测试
cd server
go test ./internal/handler -v -run TestEnhanceCitations
# 编译检查
go build -o /tmp/test-build ./cmd/server/
```
所有测试通过,代码编译成功。