web/api.py 提供 161 个端点(含 31 个路由模块),均为 HTTP JSON 接口。默认端口 8080,可通过 config.web.port 调整。
默认启用 HTTP Basic Auth(config.web.auth_enabled),白名单路径:/、/health、/api/auth/login、/static/*。
Authorization: Basic base64(username:password)
| 路径前缀 | 功能 |
|---|---|
/api/status · /api/health · /api/config-drift |
引擎状态 / 健康检查 / 配置漂移检测 |
/api/auth/login · /api/auth/me |
登录(返回 JWT)/ 当前登录用户态 |
/api/dashboard · /api/dashboard/stream-data |
实时仪表盘数据流(SSE 推送) |
/api/models · /api/models/status |
模型状态 / 健康检查 |
/api/skill-icons/{slug} |
技能图标静态资源(前端 <img> 直链,免 Basic Auth) |
/api/platforms · /api/system/paths · /api/platforms/health |
多平台状态与运行时路径 |
/api/kb |
知识库文档 CRUD、上传、URL 导入、检索、重排、钉钉/飞书文档同步 |
/api/skills(含技能市场) |
技能管理 / 安装 / 市场排行 |
/api/departments |
部门架构(懒加载) |
/api/conversations · /api/messages |
会话与消息记录查询、导出 |
/api/image/{path} · /api/image-token · /api/proxy/image |
图片 / OCR 代理与签名令牌(前端 <img> 直链,免 Basic Auth) |
/api/routing-quality |
路由质量统计与聚合 |
/api/memories |
长期记忆 CRUD 与分类 |
/api/dead-letters |
死信队列重放 / 丢弃 / 导出 |
/api/stats |
消息与工具调用统计 |
/api/drafts |
草稿审批(预览 / 批准 / 编辑 / 拒绝) |
/api/logs |
运行日志读取 |
/api/tools · /api/tools-chain |
工具清单 / 调用链路可视化 |
/api/feedback |
反馈记录(评估闭环) |
/api/decisions · /api/decisions/history · /api/decisions/stats · /api/decisions/export |
决策追踪(内存 / 持久化 / 统计) |
/api/orgs · /api/clear-cross-org-skips |
组织与跨组织熔断 |
/api/simulate |
对话模拟(调试) |
/api/keywords |
关键词规则 CRUD |
/api/cost-quality |
成本 / 质量看板(summary / trend / confidence-hist / citations) |
/api/persona |
风格人格画像与版本 |
/api/external-friends |
外部好友管理 |
/api/rules |
规则引擎配置 |
/api/intents |
意图分类体系(处置层+行动层) |
/api/dingtalk-docs |
钉钉文档搜索 / 同步 / 导入 |
/api/config · /api/llm/prompt |
配置读写、导入导出、系统提示词 |
/api/history/import · /api/messages/sync-history |
历史消息导入(POST 导入 / 同步;GET 查状态与日志) |
/api/metrics · /api/debounce-metrics · /api/backpressure-metrics · /api/embedding-status · /api/poller-status · /api/llm-metrics |
可观测性指标(含按 request_id 追溯) |
| 表名 | 说明 |
|---|---|
messages |
收发消息记录(含 msg_id、sender_id、peer_*) |
conversations |
会话缓存 |
memories |
长期记忆(含 sender_id 隔离) |
tool_execution_logs |
工具调用日志 |
kb_documents / kb_chunks |
知识库文档与分块 |
keyword_rules |
关键词规则 |
config |
配置中心持久化 |
decisions |
决策追踪记录(意图/动作/路由模式/路由工具/回复预览) |
feedback |
反馈记录(message_id / rating / correction / note) |
style_profiles |
风格人格画像(profile_json / updated_at,id=1 单例) |
GET /api/orgs返回已登录 DWS 的组织列表、当前/目标组织、跨组织跳过会话数及当前熔断状态。供设置页「目标组织」下拉与熔断状态展示使用。
响应示例:
{
"orgs": [
{ "corp_id": "ding9888ef577f7811cb", "corp_name": "珞石(山东)机器人集团股份有限公司" }
],
"current": { "corp_id": "ding9888ef577f7811cb", "corp_name": "珞石(山东)机器人集团股份有限公司" },
"target": "",
"skipped_count": 12,
"tripped": { "chat_message_list_all": 1756 }
}
tripped 为当前处于熔断冷却期的接口及其剩余冷却秒数;为空对象 {} 表示无熔断。
POST /api/clear-cross-org-skips清除跨组织/无效会话跳过名单,并重置全部 API 熔断器,下一轮轮询将重新探测所有会话与接口。切换目标组织或登录了更多组织后调用。
响应示例:
{
"cleared_conversations": 12,
"cleared_circuit": 1,
"skipped_count": 0,
"tripped": {}
}
GET /api/intents返回当前生效的抽象意图分类体系,包含处置层与行动层的完整定义、证据词、工具映射,以及当前路由模式。
响应示例:
{
"disposition": [
{"category": "business", "label": "业务消息", "description": "...", "cue_words": ["为什么", "怎么"]},
{"category": "social.gratitude", "label": "致谢", "description": "...", "cue_words": ["谢谢"]}
],
"action": [
{"category": "action.query", "label": "信息查询", "description": "...", "cue_words": []}
],
"tool_action_map": {"web_search": ["action.query"]},
"meta": {
"routing_mode": "smart",
"tools_count": 38,
"routing_mode_desc": "按意图关键词精准暴露相关工具;无明确意图时回退全量(不漏工具)"
}
}
GET /api/decisions返回最近 n 条消息处理决策(进程内内存队列,重启即清空)。供首页「最近决策追踪」卡片实时展示。
参数:n (int, 默认 50) — 返回条数
GET /api/decisions/history分页查询持久化决策历史,数据来自 SQLite decisions 表,进程重启不丢失。
参数:
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
page |
int | 1 | 页码 |
page_size |
int | 20 | 每页条数(上限 100) |
sender_name |
str | — | 按发送者名称过滤 |
conversation_id |
str | — | 按会话 ID 过滤 |
intent |
str | — | 按意图类别过滤 |
action |
str | — | 按处理动作过滤(skip / reply-rule / llm) |
响应示例:
{
"items": [
{
"id": 1,
"sender_name": "张三",
"conversation_name": "XX项目群",
"content_preview": "今天的进度怎么样了",
"intent": "business",
"action": "llm",
"routing_mode": "smart",
"routed_tools": ["kb_search", "send_message", "recall_memory"],
"reply_preview": "根据知识库记录...",
"created_at": "2026-07-11 22:30:15"
}
],
"total": 1523,
"page": 1,
"page_size": 20
}
GET /api/decisions/stats决策统计概览,返回各意图/动作/发送者的计数分布,及筛选下拉选项列表。
响应示例:
{
"total": 1523,
"by_intent": {"business": 1100, "social.gratitude": 320, "social.acknowledge": 80},
"by_action": {"llm": 850, "reply-rule": 350, "skip": 323},
"by_sender": {"张三": 420, "李四": 350},
"senders": ["张三", "李四", "王五"],
"intents": ["business", "social.gratitude", "social.acknowledge"],
"actions": ["skip", "reply-rule", "llm"]
}
POST /api/feedback提交一条对 AI 回复的反馈,用于评估闭环(Feature D)。
请求体:
| 字段 | 类型 | 说明 |
|---|---|---|
message_id |
str | 被评价的消息 ID |
conversation_id |
str | 会话 ID |
sender_id |
str | 发送者 ID |
rating |
int | 1=有用 / -1=无用 |
correction |
str | 主人纠正的正确回复(可选) |
note |
str | 备注 |
响应示例:
{ "success": true, "feedback_id": 12, "message": "反馈已记录" }
GET /api/feedback回溯已记录的反馈列表,默认返回最近 200 条。
参数:limit (int, 默认 200)
响应示例:
{ "success": true, "feedback": [ { "id": 12, "rating": -1, "correction": "正确答案应为……", "created_at": "2026-07-17 21:00:00" } ] }
离线评测另见
scripts/eval_rag.py+scripts/golden_qa.json:以黄金问答集对 RAG 检索与重排序做批量回归,持续校准阈值与权重。