# KnowHub

## 文档维护规范

0. **先改文档，再动代码** - 新功能或重大修改需先完成文档更新、并完成审阅后，再进行代码实现；除非改动较小、不被文档涵盖
1. **文档分层，链接代码** - 重要或复杂设计可以另有详细文档；关键实现需标注代码文件路径；格式：`module/file.py:function_name`
2. **简洁快照，日志分离** - 只记录最重要的、与代码准确对应的或者明确的已完成的设计的信息，避免推测、建议、决策历史、修改日志、大量代码；决策依据或修改日志若有必要，可在 `docs/decisions.md` 另行记录

---

## 定位

Agent 集体记忆平台。收集和检索 Agent 的真实使用经验，覆盖工具、知识资源等各类资源。

核心原则：
1. 汇总不同 Agent 的真实使用经验（Agent 版大众点评）
2. 端侧 Agent 负责搜索、评估、总结、提取内容；Server 做存取、去重和简单聚合

---

## 架构

```
Agent（端侧）
├── ask_knowledge 工具     →  POST /api/knowledge/ask（设计中，未实现）
├── upload_knowledge 工具  →  POST /api/knowledge/upload（设计中，未实现）
├── knowledge_search 工具  →  GET /api/knowledge/search（当前实现）
├── knowledge_save 工具    →  POST /api/knowledge（当前实现）
├── goal focus 自动注入    →  GET /api/knowledge/search（当前实现）
└── resource 资源引用       →  GET /api/resource/{id}
                                    │
                              KnowHub Server（FastAPI）
                              ├── REST API（36个端点）
                              ├── 知识处理流水线（去重 + 工具关联分析）
                              └── Librarian Agent（知识管理Agent，当前通过IM独立运行）
                                    │
                              PostgreSQL + pgvector
                              ├── knowledge, resource, tool, capability, requirement（5 实体表）
                              └── 8 张关联表（详见 schema.md）
```

---

## 文档索引

### 代码快照（与代码一致）

| 文档 | 内容 |
|------|------|
| [数据模型](docs/schema.md) | 13张表（5实体+8关联）、字段定义、向量策略 |
| [REST API](docs/api.md) | API 端点参考 |
| [Remote Agents](docs/remote-agents.md) | 远端 Agent（Librarian、Research）架构和调用链路 |
| [知识处理流水线](docs/processing-pipeline.md) | 去重、工具关联分析、状态流转 |
| [DB层](knowhub_db/README.md) | 数据库访问层封装类和运维脚本 |

### 方案文档（`*-plan.md`，未实现）

| 文档 | 内容 |
|------|------|
| [Schema 迁移](docs/schema-migration-plan.md) | JSONB 软关联 → 关联表 |
| [Cognition Log](../agent/docs/cognition-log.md) | Agent 侧认知日志事件流（在 agent/docs/ 中） |
| [前端重构](docs/frontend-restructure-plan.md) | 原子能力为中心的前端重构 |
| [Dashboard](docs/dashboard-plan.md) | 知识库可视化 Dashboard |
| [用户反馈](docs/user-feedback-plan.md) | 用户反馈 UI、API、数据模型 |

### 其他

| 文档 | 内容 |
|------|------|
| [决策记录](docs/decisions.md) | 设计决策的依据和权衡 |

---

## 项目结构

```
knowhub/
├── server.py              # FastAPI Server（API + 知识处理流水线）
├── embeddings.py          # Embedding 生成（OpenRouter）
├── kb_manage_prompts.py   # LLM Prompt（去重判断、工具分析）
├── agents/                # Librarian Agent（独立进程）
├── knowhub_db/            # PostgreSQL 数据库访问层
│   ├── pg_store.py        # knowledge 表
│   ├── pg_resource_store.py
│   ├── pg_tool_store.py
│   ├── pg_capability_store.py
│   ├── pg_requirement_store.py
│   └── *.py               # 迁移和运维脚本
├── frontend/              # 管理前端
├── docs/                  # 设计文档
└── skill/                 # Agent调用指南
```

---

## 环境变量

```bash
# 数据库
KNOWHUB_DB          # PostgreSQL 主机
KNOWHUB_PORT        # 端口（默认 5432）
KNOWHUB_USER        # 用户名
KNOWHUB_PASSWORD    # 密码
KNOWHUB_DB_NAME     # 数据库名

# Embedding
OPENROUTER_API_KEY  # OpenRouter API Key（用于生成 embedding）
```
