WikiOS 是一个智能 Wiki 知识库微服务,核心职责是连接外挂 LLM-Wiki 仓库、LLM、检索工具和管理后台。它内置 Web 管理后台,但不提供终端 AI 客服前端。
真实业务中的 AI 客服应通过 Customer Chat API 对接 WikiOS;后台的“用户会话 / 聊天接口测试”用于内部测试客户问答返回效果。
详细接口文档见:docs/API.md。
- Customer Chat API:面向 AI 客服系统,提供普通 JSON 和 SSE 流式问答。
- Admin Web:内置管理后台,支持上传摄入、健康检查、综合分析、修复、资料库浏览、同步。
- 外挂 Wiki:知识库以独立目录或独立 git 仓库挂载,默认生产路径为
/data/wiki-repo。 - LLM-Wiki 治理:Wiki 层以挂载知识库的
AGENT.md为最高优先级规则,维护来源、正式知识、政策、流程、对比、概念、实体、综合、意图、链接、根目录报告和演化日志。
cp .env.example .env
make dev默认地址:
- API:
http://127.0.0.1:9025 - Web:
http://127.0.0.1:3000 - 管理后台:
/dashboard - 聊天接口测试:
/conversations中的“聊天接口测试”Tab
常用命令:
make dev
make dev-api
make dev-web
make test
make test-web
make build
make build-web完整部署步骤见:docs/DOCKER_DEPLOY.md。
部署入口文件:
Dockerfile
docker-compose.yml
deploy/.env.prod
deploy/config.prod.yaml
deploy/docker-entrypoint.sh
生产启动命令:
docker compose --env-file deploy/.env.prod -f docker-compose.yml up -d --buildDocker 部署默认使用 named volume wikios-wiki-repo 保存外挂 Wiki。推荐配置 WIKIOS_WIKI_GIT_URL + WIKIOS_WIKI_GIT_TOKEN,容器首次启动会自动 clone Wiki,后续启动会按配置 pull;后台同步页可检测连接、修复 remote/branch/upstream、提交和推送。SSH deploy key 只作为高级兼容方案保留,具体见 Docker 部署文档。
数据挂载:
| 挂载 | 容器路径 | 用途 |
|---|---|---|
wikios-wiki-repo |
/data/wiki-repo |
外挂 Wiki 仓库。 |
data/workspace |
/app/.workspace |
SQLite、上传中间文件、服务工作区。 |
data/qmd-cache |
/root/.cache/qmd |
qmd 索引缓存。 |
不要执行 docker compose down -v,除非你明确要删除 Wiki volume。
终端 AI 客服只应调用 Customer Chat API:
- 统一入口:
POST /api/v1/customer/chat - 默认非流式 JSON;需要 SSE 时传
stream:true。 - 外部客户/API 调用传
entrypoint:"external"或省略。 - Wikios 内部测试调用传
entrypoint:"internal"、simulation:true。
非流式请求示例:
curl -i -X POST http://127.0.0.1:9025/api/v1/customer/chat \
-H 'Content-Type: application/json' \
-d '{
"message": "这个怎么买?",
"session_id": "s_456",
"message_id": "msg_user_001",
"answer_message_id": "msg_assistant_001",
"entrypoint": "external",
"history": [
{ "role": "user", "content": "住宅IP套餐都有什么?" },
{ "role": "assistant", "content": "住宅IP通常有5M、10M、20M等带宽。" }
]
}'流式请求示例:
curl -N -X POST http://127.0.0.1:9025/api/v1/customer/chat \
-H 'Content-Type: application/json' \
-d '{"message":"住宅IP怎么购买?","history":[],"stream":true,"entrypoint":"external"}'多轮对话必须传 history。如果用户问“这个怎么买”“刚才那个多少钱”,但调用方不传历史上下文,服务端无法稳定判断省略主语指向的业务对象。
Customer Chat 响应体只返回 answer、received_at、answered_at。Router、Retrieval、Specialist、thinking 和完整审计详情不会随客户响应返回;后台可通过响应头 X-Trace-ID 调用 GET /api/v1/admin/customer-chat/traces/:trace_id 读取本地 JSONL 审计记录。
完整字段说明、返回类型、SSE 事件、错误码见:docs/API.md。
管理后台地址:
http://127.0.0.1:9025/dashboard
管理后台用于:
- 上传并摄入资料
- 执行健康检查
- 综合分析、修复、合并
- 浏览外挂 Wiki 文件
- 查看同步状态、生成提交信息、提交和推送 Wiki 变更
管理员 API 会返回执行详情、工具过程和 reasoning,不应暴露给终端客户。
正式接口文档:docs/API.md
文档包含:
- 每个接口的鉴权方式、Method、Path、Content-Type
- Query 参数和 Body 参数的类型、含义、是否必填、是否可为空、默认值
- Response 字段类型和含义
- SSE 事件格式
- 错误码
- curl 示例
默认配置:
- 本地:
configs/config.local.yaml - Docker 生产部署:
deploy/config.prod.yaml
服务启动时会自动加载项目根目录下的 .env 和 .env.local。如果当前 shell 已设置同名环境变量,shell 值优先。
关键配置:
| 配置 | 含义 |
|---|---|
mounted_wiki.root |
外挂 Wiki 根目录,Docker 中默认为 /data/wiki-repo。 |
mounted_wiki.qmd_index |
qmd index 名称,可通过 WIKIOS_QMD_INDEX 配置。 |
retrieval.mode |
检索模式,可用 WIKIOS_RETRIEVAL_MODE 配置;wiki 使用 Go 进程内全文检索,最省资源,生产 Docker 默认;qmd 使用 qmd/向量检索。 |
WIKIOS_QMD_QUERY_MODE |
qmd CLI fallback 查询模式:search 使用纯 BM25 全文检索,适合 4C4G 小机;query 使用 qmd 混合查询并跳过 rerank。生产 Docker 默认 search。 |
llm.timeout_sec |
Customer Chat 单次 LLM 请求超时默认值,可用 WIKIOS_LLM_TIMEOUT_SEC 配置,默认 300 秒。 |
llm.admin_timeout_sec |
Admin/摄入类 LLM 请求超时默认值。 |
storage.sqlite_path |
服务 SQLite 数据库路径。 |
web.dist_dir |
内置 Web 静态产物目录。 |
customer_query.candidate_top_k |
Customer Chat 检索候选数量,可用 WIKIOS_CUSTOMER_CANDIDATE_TOP_K 配置,默认 6。 |
customer_query.max_evidence_chars |
Customer Chat 单页证据最大字符数,可用 WIKIOS_CUSTOMER_MAX_EVIDENCE_CHARS 配置,默认 2400。 |
customer_query.response_timeout_sec |
/api/v1/customer/chat 整体响应超时,可用 WIKIOS_CUSTOMER_RESPONSE_TIMEOUT_SEC 配置,默认 300 秒;上游网关/客户端超时也要同步放大。 |
customer_query.max_concurrent |
Customer Chat 服务端并发上限,可用 WIKIOS_CUSTOMER_MAX_CONCURRENT 配置;生产 Docker 默认 1,适合 4C4G 小机防止 qmd/LLM 并发打满资源。 |
customer_query.answer_log.enabled |
是否写入 Customer Chat JSONL 日志,默认开启。 |
customer_query.answer_log.redact |
是否对 Customer Chat 日志做密钥、Token、手机号、邮箱脱敏,默认开启。 |
customer_query.answer_log.retention_days |
Customer Chat 日志保留天数,默认 14 天。 |
customer_safety_terms.path |
Customer Chat 安全风险信号表路径;仅注入 Router/Safety prompt,不做服务端拦截。 |
WIKIOS_SUPPORT_PHONE |
Customer Chat 注入给 LLM 的公开客服电话,默认 400-1080-106。 |
WIKIOS_SUPPORT_WECOM |
Customer Chat 注入给 LLM 的公开企业微信联系方式,默认 企业微信。 |
WIKIOS_WIKI_GIT_URL |
推荐使用 HTTPS Git URL;配置后容器启动时自动 clone/pull 外挂 Wiki。 |
WIKIOS_WIKI_GIT_TOKEN |
GitHub fine-grained token,只从环境变量读取,不写入 remote/数据库/前端。 |
WIKIOS_WIKI_GIT_USERNAME |
HTTPS token 用户名,默认 x-access-token。 |
WIKIOS_WIKI_GIT_BRANCH |
自动 clone/pull 的分支,默认 main。 |
WIKIOS_WIKI_GIT_PULL_ON_START |
已有 git 仓库时是否启动自动 pull,默认 true。 |
WIKIOS_WIKI_GIT_RESET_ON_START |
是否启动时 hard reset 到远端分支,默认 false;开启会丢弃未提交本地改动。 |
模型的 provider、base_url、model_name 和 api_key 不再从 YAML 或环境变量读取。请启动服务后在管理后台的“模型”模块新增并启用 OpenAI-compatible 模型;SQLite 中没有启用模型时,Customer Chat 和知识库助手会返回明确的模型配置提示。
- 请修改默认管理员密码。
- 请把 Wiki、workspace、qmd cache 持久化到宿主机。
- 如果公开到公网,建议放在反向代理后,并为 Admin 路径增加额外访问控制。
- Customer Chat API 不返回内部路径或执行详情,适合 AI 客服调用。
- Admin SSE 包含执行过程和 reasoning,只能用于可信管理后台。