Skip to content

可组合的 Agent Harness接入任何聊天平台

A composable agent harness for any chat platform.

快速开始
127.0.0.1:5028/traces
ChatLuna 控制台的轨迹页:一段群聊里每次回复调用的工具、token 用量与耗时ChatLuna 控制台的轨迹页:一段群聊里每次回复调用的工具、token 用量与耗时

WebUI 配置

随意在 WebUI 自由搭配组合人设、模型、记忆与其他能力。

127.0.0.1:5028/control
控制台的快捷设置页面控制台的快捷设置页面

场景规则

为不同群,不同 Bot 配置不同的模型,预设,工具集。

127.0.0.1:5028/routing
控制台的场景规则页面控制台的场景规则页面

接入模型与 IM

基于 Satori,轻松支持 QQ、Telegram、Discord、飞书等主流平台,也可以随意扩展。DeepSeek、OpenAI、Anthropic、Google 等主流模型服务也同步支持。

127.0.0.1:5028/adapters
控制台的聊天平台页面控制台的聊天平台页面

可观测性

在 WebUI 中详细查看运行状态、用量和 Token。单次回复调用了什么,也能在轨迹中查看。

127.0.0.1:5028/dashboard
控制台的仪表盘页面控制台的仪表盘页面

编写插件,赋予新能力

ChatLuna 运行在 Cordis 上。一切能力都由插件组装。

让 Agent 能查天气,写成插件只需要这几行代码:

weather.ts
ts
import type { Context } from "cordis";
import { Schema } from "@chatluna/schema";
import { defineTool } from "@chatluna/tool";

export const name = "weather";
export const inject = ["tools"];

export function apply(ctx: Context) {
  ctx.tools.define(
    defineTool({
      name: "weather_forecast",
      description: "查询城市未来几天的天气",
      args: Schema.object({
        city: Schema.string().required(),
        days: Schema.number().default(3),
      }),
      async run({ city, days }) {
        const response = await fetch(
          `https://weather.example/v1?city=${city}&days=${days}`,
        );
        return await response.text();
      },
    }),
  );
}

即刻运行

运行环境需要 Node.js 24 或更高版本。第一次运行 chatluna 会自动创建实例并启动,终端中会打印控制台的登录地址,默认为 http://127.0.0.1:5028。

在浏览器中打开它,按引导添加模型、接入聊天平台,Bot 就可用了。

目前处于封闭内测阶段,npm i -g chatluna 暂时还不能使用。想参与内测,请填写报名问卷。

sh
npm i -g chatluna
chatluna
sh
git clone https://github.com/ChatLunaLab/v2.git && cd v2
docker compose -f docker/compose.yml up -d chatluna
sh
git clone https://github.com/ChatLunaLab/v2.git && cd v2
yarn install && yarn build
yarn chatluna start

加入社区

使用过程中遇到任何问题,都欢迎随时来社区里交流。

还在使用 v1?v1 文档仍可访问,升级前建议先阅读迁移指南。

在 CC-BY-SA-4.0 许可下发布