Skip to content
dsh.fish
Bundle

dsh-host-kimi-search

Registers a kimi-coding web search provider (api.kimi.com/coding/v1/search) into ctx.web, zero-config via the local kimi-coding credentials.

Source
quei4r
License
MIT
Updated
Updated 5 days ago

Readme

# dsh-host-kimi-search

中文 | [English](README.en.md)

DeepSeek Harness(DSH)宿主插件:**零配置 Kimi Coding 联网搜索**。

向 `ctx.web` 注册一个 `kimi-coding` 搜索 provider,把内置 `web_search` 工具的请求 POST 到 `https://api.kimi.com/coding/v1/search`。凭据复用本地 kimi-coding 模型 provider 的同一把 key——**已配置 Kimi Coding 套餐的用户装上即用,无需任何额外设置**。

## 工作原理

- 每次搜索实时解析凭据,顺序为:
  1. DSH 凭据服务(启动环境变量 → 持久凭据库 `~/.dsh/.credentials.yaml`)中的 `KIMI_CODING_API_KEY` → `DEEPSEEK_API_KEY` → `KIMI_API_KEY`
  2. 文件回退:`~/.kimi-code/config.toml`、`~/.kimi/config.toml` 中的 `api_key`
- 响应中的 `search_results` 映射为标准 sources(url / title / snippet / publishedAt),遵循 `maxResults` 截断并标记 `truncated`
- 401 与网络错误以明确信息抛出,便于诊断
- 安全加固(v0.2.0):结果 URL 仅放行 `http(s)`(端点被攻破也无法把 `javascript:`/`data:` 链接注入渲染结果);响应体超过 5 MB 在解析前拒绝(无界读取不可能);无信号调用兜底 60s 超时

## 安装

```bash
dsh plugin --profile web add dsh-host-kimi-search
```

安装后**重启 `dsh web`** 生效(插件行与 provider 注册都在启动时挂载)。

本包自带 bundle patch,安装会同时做两件事:

1. 插入 `kimi-search` 插件行(注册 provider);
2. 把 `web` 插件的 `searchProvider` 设为 `kimi-coding`(即**安装后立即接管内置 web_search**,无需手动改配置)。

> 想换回官方搜索:编辑 `~/.dsh/profiles/web/cordis.patch.yml`,加一行用户层覆盖即可(用户层优先于插件层):
>
> ```yaml
> - id: web
>   config:
>     searchProvider: deepseek-official
> ```

## 配置

| 环境变量 | 作用 |
|----------|------|
| `KIMI_CODING_API_KEY` / `DEEPSEEK_API_KEY` / `KIMI_API_KEY` | 凭据来源(优先级从高到低) |
| `KIMI_SEARCH_BASE_URL` | 覆盖搜索端点(兼容网关用,默认 `https://api.kimi.com/coding/v1/search`) |

## 文件说明

| 文件 | 说明 |
|------|------|
| `package.json` | 包清单,含 `dsh.bundle` 声明 |
| `index.js` | 宿主侧全部逻辑(`apply(ctx)` 注册 provider,`inject: ['web']`) |
| `cordis.patch.yml` | bundle patch:插入插件行 + 切换 searchProvider |

兼容性:随 `@deepseek-ai/dsh` 0.1.0-rc.6 测试通过。无任何第三方运行时依赖(仅用 Node 标准库 + 全局 fetch)。

## License

MIT

Install

dsh plugin --profile web add github:quei4r/dsh-host-kimi-search

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source