# 知识库统一工具入口

适配 DSH 0.2.1-rc.2。模型常驻工具只有 `knowledge`，原有 19 项操作作为内部目录保留；没有隐藏注册第二套同名工具，也没有新增任意写入知识正文的能力。

```json
{"action":"list"}
```

目录只返回操作名和简短说明，不读取存储、文档、挂载或凭据。它描述功能，不代表当前会话已获得写权限。

```json
{"action":"describe","tool":"knowledge_search"}
```

返回该操作的完整说明与参数规范。

```json
{"action":"call","tool":"knowledge_search","arguments":{"base":"default","query":"部署经验"}}
```

`default` 仅为示例，应先通过 `knowledge_base_search` 确定当前会话实际挂载的库。历史消息、搜索结果和文档中的 `knowledge_*` 名称均作为 `tool` 字段传入，不再作为顶层工具调用。

## 保留的能力和边界

- 找库、检索、分页读取：继续校验项目／会话挂载、标签、范围和绑定当前会话的引用。
- 分组、文档完成状态、踩坑记录：继续使用原操作及版本、只读／直接写入／审核规则。
- 创建和修改知识库：继续要求明确用户请求，并使用当前本地或远程存储。
- 笔记列表、搜索、读取、关联、创建、更新、移动、删除：保留原有独立权限，引用不等于修改授权；远程服务仍检查令牌权限。
- 笔记修改仍是一份完整预览、下一轮统一确认；分页预览必须读完，过期、跨会话、版本冲突和重复确认仍拒绝。入口保留原输出渲染，不把变更预览降级成裸 JSON。
- 自动召回、回答后回写、工作日报、引用跳转、HTTP API 和内部服务不经过此入口，行为不变。

执行入口只路由固定操作集合。参数使用预编译 JSON Schema 校验，不强制转换类型、不移除未知字段、不填默认值；之后调用原业务实现。取消信号和当前 Agent 原样传递；宿主仍审核真实的 `knowledge` 调用，不伪造内层执行身份。目录查询可以并发，具体操作保守串行。

## 白名单兼容

普通会话无需配置。外部自定义 Agent、Skill 或按工具名判断的审批策略，需要识别 `knowledge` 与 `arguments.tool`；**不要把只读旧白名单直接替换成无限制的 `knowledge` 权限**。

伙伴侧配套适配：

- 关注检查仅允许目录发现和原有三项知识检索／读取操作，不允许从入口转入笔记或写操作。
- 伙伴临时任务和 fork Skill 的旧 `allowed-tools` 可映射到入口，但另设操作级 guard，只准许白名单中原有的操作。父级不可见的入口不会因此获得授权。
- 明确配置整个 `knowledge` 的调用者仍受知识库自己的挂载、版本、确认和服务端权限约束。

部署知识库新入口时需同时包含这些伙伴兼容改动；不能只放宽工具名称过滤。第三方按旧名实现的自定义策略不自动改写。
