项目介绍
Agent 开发框架 · 2026-11-09 更新 · 本站尚未实测
CerebrumKit 是一个面向“智能体项目”的自托管起点模板。它不包含任何具体行业数据(README 明确说明没有商品、订单、产品表),而是提供这类项目普遍需要的基础机制:把 Agent 拆成技能(skill)与工具(tool),把这两者都作为数据库记录保存,使业务流程负责人可以直接在面板里修改,无需等待重新部署。
前端为 Vue 应用,后端为 Python(FastAPI 路线),数据库可用 PostgreSQL,也可用 SQLite 快速试用。仓库当前处于早期阶段,作者自述 Agent 循环、工具与技能注册、存储、聊天、记忆、委派、用户角色以及管理端和客户端面板均可日常使用,但缺少可运行 Agent 的托管实例和测试套件。
核心能力
点击能力名称查看输入、输出和原文依据。
- 项目(Projects):把成员、Agent 和可用存储表归为一组,并在画布上编排 start / groups / stop 工作流,决定哪些 Agent 以何种顺序应答消息。
- Agent:由名称、作为系统提示词的描述以及所携带的技能组成,在所属项目中应答聊天。
- 技能与工具:工具是一份 OpenAI function spec 加一段 Python 函数体,两者都存数据库、可在面板编辑;技能是书面指令加上所需工具,授予 Agent 技能即连带其工具。提供根据描述生成初稿规格的生成器。
- 存储:在面板中创建表即落到数据库,支持 Excel 导入导出与行编辑;表分配给项目,工具可读写。
- 聊天与记忆:每个聊天通过 websocket 驱动 Agent 循环,流式输出工具卡片与文本,可中途停止;Agent 可按 Agent 与用户维度写备注,在同一用户与该 Agent 的其他聊天中可读。
- 委派:一个 Agent 可把独立任务交给项目内另一个 Agent 并采用其答复。
- 用户与角色:
admin可见全部并搭建项目,client只能看到分配给自己的项目与聊天。 - System 项目:不可改名或删除,内置 Project Manager Agent,其工具可创建和编辑用户、项目、Agent、技能、工具与存储表,因此可通过对话管理安装实例。
实际应用场景
适用场景
适合需要自建多 Agent 客服、内部流程助手或行业智能体项目原型的团队:已有业务表、希望让业务负责人自行调整提示词与工具、并且愿意接受单进程部署与早期阶段风险的用户。若只需要开箱即用的在线 Agent 服务,本项目并不提供可运行 Agent 的托管实例。
安装与接入
README 给出的前置条件为 Python 3.12+、Node 20+,以及 PostgreSQL(或保留 DATABASE_URL 默认值使用 SQLite 快速试用;SQLite 安装有面板与 Agent 循环,但没有表与列注释,因为存储描述依赖 COMMENT ON)。
快速开始步骤原文如下:
# 1. Database
docker compose up -d # or point DATABASE_URL at an existing server
createdb cerebrumkit # when you run Postgres yourself
# 2. Backend
cd backend
python -m venv venv
venv/Scripts/python.exe -m pip install -r requirements.txt # Windows
# source venv/bin/activate && pip install -r requirements.txt # macOS / Linux
cp .env.example .env # then set DATABASE_URL, SECRET_KEY,
# DEEPSEEK_* and the SEED_* accounts
venv/Scripts/python.exe seed_all.py
# 3. Frontend
cd ../frontend/cerebrumkit-vue
npm install
npm run dev
打开 http://localhost:5173,用在 backend/.env 中设置的 SEED_ADMIN_EMAIL / SEED_PASSWORD 登录。seed_all.py 会建表、生成国家列表、管理员与客户端账号、通用工具与技能,以及带 Project Manager 的 System 项目;每一步幂等,可重复执行。Windows 下也可运行 run.ps1 启动两个服务、stop.ps1 停止。
模型方面:种子脚本会把 DEEPSEEK_* 写入 platforms 表,系统实际读取该表;之后在 Admin -> Settings -> LLM Connections 中修改提供商、base URL、API Key 或模型,激活行对整个系统生效,仅在表为空时才使用 DEEPSEEK_*。资料明确提到 DeepSeek 相关配置项,但未说明对其他模型服务的完整兼容清单,需待核验。
使用条件与限制
- 是否需要部署
- 需自行准备运行环境,具体要求见正文
- 是否需要注册
- 账号和认证要求见正文;未明确说明的项目仍待核验
- 是否需要 API Key
- 待核验
- 费用与额度
- 费用边界见正文,项目许可不代表模型或托管服务免费
- 所需权限
- 待核验
- 许可证与服务条款
- 待核验
权限费用与限制
- 工具函数体即代码执行:README 明确说明工具体以完整内建函数运行且不沙箱化(刻意如此),内置工具会导入
requests、SQLAlchemy 和应用内部模块;因此工具编写仅限管理员,tools.body应像提交代码一样审查。 - 单进程部署:websocket 注册表与进行中的 Agent 任务存放在进程内存中,部署使用单个 uvicorn worker。
- 演示页不含后端:GitHub Pages 上的静态演示已回答预置快照,模型未连接、回复是固定的、编辑不保存;真实运行需在自己的容器或自建部署中进行。
- 默认口令风险:代码不附带默认账号,三个种子值均来自
backend/.env,任一为空时seed_all.py报错停止;SEED_PASSWORD为两个账号共用的同一个密钥,在实例可被本机以外访问前应修改。 - 费用:仓库代码本身按许可证免费使用,但模型 API 调用产生的费用需向所选模型服务商核验,README 未给出价格。
国内使用情况
网友核验 用户经验分享
与站长实测独立,不代表官方认证或本站已实测。
最近核验:暂无有效核验。参与人数按当前项目有效身份去重;不同核验项分别统计,不合并成用户总结果。仅统计审核通过且未过期的记录。
分项统计、有效期与样本量
| 核验项目 | 有效人数 | 成功 / 部分 / 失败 / 无法判断 | 成功率 | 最近核验 / 有效期 |
|---|---|---|---|---|
| 官方网站访问 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 7 天 |
| GitHub 仓库访问 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 7 天 |
| 安装与运行 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 官方服务国内连接 / MCP 连接 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 国内网络情况 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 7 天 |
| 国内模型兼容性 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 自定义 API | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 海外服务依赖 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 海外账号要求 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 中文界面 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 客户端兼容性 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
| 账号及费用信息 | 0 | 0 / 0 / 0 / 0 | 样本不足 | 暂无 / 30 天 |
成功率 = 成功 ÷(成功 + 部分成功 + 失败);无法判断不计入分母。至少 5 份可判断结果才显示成功率。账号、费用、海外依赖与语言等事实项,成功表示核查结论与资料吻合,具体观察另行统计;不表示免费或没有海外依赖。不同网络、客户端和版本的结果不能直接等同。
最近有效核验
暂无审核通过且未过期的网友核验。欢迎提交真实使用记录。
查看全部有效核验 →国内实测状态:国内可用性待核验。协议兼容和官方资料说明不等于国内网络可用。
- 官方网站访问
- 尚未实测 待核验
- GitHub 仓库访问
- 尚未实测 待核验
- 官方服务国内连接
- 尚未实测 待核验
- 国内网络情况
- 尚未实测 待核验
- 国内模型兼容性
- 尚未实测 待核验
- 自定义 API
- 尚未实测 待核验
- 海外服务依赖
- 尚未实测 待核验
- 海外账号要求
- 尚未实测 待核验
- 中文界面
- 尚未实测 待核验
- 国内最后核验时间
- 尚未实测
许可与国内使用
仓库附带 Apache License 2.0 许可证文件,README 亦声明为 Apache 2.0,允许使用、修改与再分发(含商业用途),要求保留版权声明、许可证文本与 NOTICE 文件,并注明修改过的文件;名称与标识不在许可范围内,分支需自行更换品牌。该许可仅覆盖仓库代码,第三方模型服务、托管平台等各有其条款,需分别核验。
国内使用方面:README 提供简体中文界面语言(README 所列语言资源含 zh),种子国家示例为 SEED_ADMIN_COUNTRY=CN。资料未说明各模型服务在境内的可用性与合规情况,境内部署适配性待核验。
仓库当前未归档,作者自述处于早期阶段;暂无测试套件。
项目资料与来源
字段依据与待核验事项
access:来源确认 · docker compose up -d # or point DATABASE_URL at an existing server
project_type:来源确认 · A self-hosted scaffold for agentic projects: agents, skills and tools are rows in your own database
原始 README(折叠技术参考)
# CerebrumKit
[](https://github.com/islomkhon/CerebrumKit/actions/workflows/ci.yml)
[](LICENSE)



[](https://islomkhon.github.io/CerebrumKit/)
[](https://codespaces.new/islomkhon/CerebrumKit)
**A self-hosted scaffold for agentic projects: agents, skills and tools are rows
in your own database, so the people who own a process change them from the panel
instead of waiting on a deploy.** If that is the part you keep rebuilding, a star
helps the next person find it.
Concretely, you get an admin panel where agents are built out of **skills** and
**tools**, a storage library of business tables you can hand those agents, and a
client panel where the people the project is for talk to them.
Nothing in here belongs to any particular business: no catalogue, no orders, no
product tables. What is here is the machinery every such project needs, so a new
project starts at "what should the agents do" instead of at "how do I run an
agent loop".

**[🎥 Watch the whole run - 71 seconds, captioned, no audio](https://youtu.be/yz9uJA67-IY)**
## Try it without installing anything
**[Open the hosted demo](https://islomkhon.github.io/CerebrumKit/)** - the panel
itself, served as static files from GitHub Pages. It answers from a snapshot of a
seeded install, so what you are looking at is real: two agents on the workflow
canvas, each tool's function spec beside the Python body that would run, the
orders table the support agent reads. It opens already signed in as the admin;
type any address into the sign-in form and one containing `client` opens the
client panel instead. What Pages cannot host is the backend, so the model is not
connected there - a chat reply is canned and your edits are not saved, which is
what the banner across the top says. [docs/DEMO.md](docs/DEMO.md) has the detail.
To run an agent for real, in a container of your own:
[](https://codespaces.new/islomkhon/CerebrumKit)
That link opens this repository in a container in your own GitHub account. It
brings up the database, installs both halves, seeds the demo data and starts the
backend and the panel: a couple of minutes, nothing to install, no
configuration. The two accounts it creates are:
| Account | Email | Password |
| --- | --- | --- |
| Admin | `admin@cerebrumkit.test` | `cerebrumkit-demo-password` |
| Client | `client@cerebrumkit.test` | `cerebrumkit-demo-password` |
The agents have no model to answer with until the install has one: add a key in
**Admin -> Settings -> LLM Connections**, or set a Codespace secret named
`DEEPSEEK_API_KEY` and rebuild. Everything else - both panels, the storage
library, the skills and tools, the workflow canvas - works as soon as it starts.
That container belongs to your account, so it spends your Codespaces allowance
rather than someone else's, and it is not a place for real data. For an install
you intend to keep, use the quickstart below.
## Status
Early, and honest about it. The agent loop, the tool and skill registry, storage,
chats, memory, delegation, users and roles, and the admin and client panels all
work and are used daily. What is missing is a hosted instance that can run an
agent, and a test suite. Until then there is a
[demo of the panel you can open right now](https://islomkhon.github.io/CerebrumKit/),
a [71-second walkthrough](https://youtu.be/yz9uJA67-IY) if you would rather
watch than read, and a
[container that comes up seeded](#try-it-without-installing-anything) if you
would rather poke at it - though that container is an instance in your own
account rather than one link that opens for everyone.
Two things to know before you run it anywhere real:
- **A tool body is code execution.** Bodies run with full builtins and are not
sandboxed, deliberately - the shipped tools import `requests`, SQLAlchemy and
app internals. Tool authoring is admin-only for that reason, and
`tools.body` should be reviewed like a commit.
- **One process.** The websocket registry and in-flight agent tasks live in
process memory, so the deploy runs a single uvicorn worker.
## What you get
- **Projects** - a project groups members, agents and the storage tables they
may use, and holds the **workflow**: start / groups / stop, wired on a canvas,
which decides which agents answer a message and in what order.
- **Agents** - a name, a description that is its system prompt, and the skills
it carries. It answers chats in the project it belongs to.
- **Skills and tools** - a tool is an OpenAI function spec plus a Python body
(both stored in the database, both editable in the panel). A skill is a
written instruction plus the tools it needs. Give an agent the skill and the
tools come with it. A generator turns a description into a first draft spec.
- **Storage** - create tables in the panel and they exist in the database, with
import/export to Excel and row editing. Tables are assigned to projects, and a
tool can read and write them.
- **Chats** - a websocket per chat drives the agent loop: it picks the agents
from the workflow, runs the tools they ask for, streams tool cards and text
into the transcript, and can be stopped mid-run.
- **Memory** - agents can write notes about a user, keyed by agent and user so a
note written in one chat is readable in that user's other chats with the same
agent.
- **Delegation** - one agent can hand a self-contained task to another agent in
the project and use the answer.
- **Users and roles** - `admin` sees everything and builds the projects;
`client` sees their own projects and chats and nothing else.
- **The System project** - a project that cannot be renamed or deleted, holding
a **Project Manager** agent whose tools let it create and edit users,
projects, agents, skills, tools and storage tables. An install can be
administered by asking it in chat.
## See it
**The admin panel is where the agents are built.** A project owns its members,
its agents and its tables, and the workflow on the right decides which agent
answers a message and in what order - every node carries the skills and tools it
runs with.

**The client panel is what the people the project is for actually see.** One chat
per conversation, the agents answering in order, and the user's own projects and
nothing else.

In the screenshot above the first agent answers from the tables, then the
escalation group's analyst reads the same order and corrects the policy the first
agent applied - which is the whole point of putting more than one agent in a
workflow.
**Storage is a table editor over real Postgres tables**, with a description on
the table and on every column, because those descriptions are what the model
reads when it decides which tool to call.

**A tool is a function spec plus a Python body, both database rows.** The panel
edits both; the next message uses the new version, with no restart and no deploy.

## Requirements
- Python 3.12+ and Node 20+
- PostgreSQL (or SQLite for a quick look, by leaving `DATABASE_URL` on its
default - the storage descriptions are a `COMMENT ON` feature, so a SQLite
install has the panels and the agent loop but no table or column comments)
## Quickstart
```bash
# 1. Database
docker compose up -d # or point DATABASE_URL at an existing server
createdb cerebrumkit # when you run Postgres yourself
# 2. Backend
cd backend
python -m venv venv
venv/Scripts/python.exe -m pip install -r requirements.txt # Windows
# source venv/bin/activate && pip install -r requirements.txt # macOS / Linux
cp .env.example .env # then set DATABASE_URL, SECRET_KEY,
# DEEPSEEK_* and the SEED_* accounts
venv/Scripts/python.exe seed_all.py
# 3. Frontend
cd ../frontend/cerebrumkit-vue
npm install
npm run dev
```
Open <http://localhost:5173> and sign in with the `SEED_ADMIN_EMAIL` /
`SEED_PASSWORD` you set in `backend/.env`.
### Accounts and credentials
`seed.py` creates two accounts, and both sign in with the same password:
| Account | Email | What it reaches |
| --- | --- | --- |
| Admin | `SEED_ADMIN_EMAIL` | The whole admin panel |
| Client | `SEED_CLIENT_EMAIL` | Only the projects assigned to that user |
No default pair is shipped in the code. All three values come from
`backend/.env`, and `seed_all.py` stops with an error while any of them is
empty, so a fresh checkout has no login anyone could guess:
```bash
SEED_ADMIN_EMAIL=admin@example.com
SEED_CLIENT_EMAIL=client@example.com
SEED_PASSWORD=the-password-you-choose
SEED_ADMIN_COUNTRY=CN
SEED_CLIENT_COUNTRY=CN
```
To change the password afterwards, edit the user in **Admin -> Users**;
re-running the seeder leaves an account that already exists untouched.
> `SEED_PASSWORD` is one secret shared by both accounts, and it is the pair an
> attacker tries first. Change it before the install is reachable from anywhere
> but your own machine.
`seed_all.py` creates the tables, the country list, the admin and client
accounts, the general tools and skills, and the System project with its Project
Manager agent. Every step is idempotent, so running it again is safe.
It also copies `DEEPSEEK_*` into the `platforms` table, which is what the system
actually runs on. After that, Admin -> Settings -> LLM Connections is the place
to change provider, base URL, API key or model: the active row is used by the
whole system, and the `DEEPSEEK_*` values only matter while the table is empty.
On Windows you can also double-click through `run.ps1`, which starts both
servers and `stop.ps1` stops them.
## First project
Either build it in the panel (Projects -> Create Project), or ask the Project
Manager in the System project's chat to do it for you. The order that works:
1. **Storage** - create the tables the project owns, with a description on the
table and on each column. Tools read these, and the agent sees the
descriptions.
2. **Tools** - one per thing an agent should be able to do. Write the Python
body if you know it, or describe the tool and let the generator draft the
spec. Bodies run with `project_id`, `chat_id`, `agent_id`, `user_id` and
`call_depth` already in scope.
3. **Skills** - group the tools under written instructions: when to use them,
what to pass, how to read the result.
4. **Agents** - a description that is the agent's standing brief, plus the
skills it carries. Optional: tools to run *before* every message, whose
output is injected into the prompt (useful for "always know the catalogue").
5. **Project** - assign the tables, add the agents, and wire the workflow so
messages reach them.
6. **Users** - create client accounts and add them to the project; they see only
their own projects and chats.
Change the seeded passwords before anyone else can reach the install.
## Layout
```
backend/
app/
core/ agent loop, tool execution, delegation, auth, config
models/ SQLAlchemy models: users, projects, agents, skills, tools,
chats, messages, memory, storage registry
routers/ REST + websocket API
schemas/ request/response models
system_management.py the manage_* tools the Project Manager uses
seed_all.py fresh install in one command
seed_*.py the individual seed steps
export_for_deploy.py, load_for_deploy.py move data between installs
seed_demo_showcase.py, export_demo_fixtures.py content for the hosted demo
frontend/cerebrumkit-vue/
src/views/admin/ Projects (agents, chats, workflow), Skills, Tools,
Storage, Users
src/views/client/ Projects and the chat with the agents
src/locales/ en, zh, ru, es, fr, de
src/demo/ the snapshot and the adapters the hosted demo runs on
```
## How it fits together
A message arrives on the chat websocket. The agent loop reads the project
workflow, picks the agent or group that should answer, builds the system prompt
from the agent's description plus its skills plus any pre-run tool output, and
calls the model. Tool calls come back as function calls; each is executed
against the tool body stored in the database, with the project, chat, agent and
user ids injected so a tool can only ever touch its own run. Results go back to
the model, and the text it produces is broadcast to the chat.
Tool and skill definitions live in the database rather than in the code, so
editing one in the panel takes effect on the next run with no restart and no
deploy.
## Deploying
See `DEPLOY.md` for nginx, systemd and a rebuild path that keeps the database
rows (tools, skills, agents) in step with the code.
The static demo on GitHub Pages is a separate artefact with its own workflow and
its own build command (`npm run build:demo`); it is not part of a deployment,
and nothing in it can reach a server. See `docs/DEMO.md`.
## Adding a business domain
Add your models under `backend/app/models/`, register them in
`app/models/__init__.py`, add routers and schemas the same way, and create the
tables with `backend/migrate.py`. Anything a project needs at runtime is better
as a tool over the storage library, because then the people who own the project
can change it without a deploy.
## Author

### Islomkhon Nizomkhonov (小伊)
- **Education**: Master's degree in Computer Science, China University of Mining
and Technology
- **Key skills**: Software Engineering, Deep Learning, Machine Learning, Data
Science, IoT, Predictive Maintenance
Islomkhon Nizomkhonov was born in 1994 in Tashkent, Uzbekistan. He is a senior
software engineer with more than six years of experience in machine learning and
predictive maintenance. He has worked with several industries and large
companies, including [XCMG (徐工集团)](https://www.xcmg.com/) and
[Uztelecom (Uzbekistan's national telecom provider)](https://uztelecom.uz/),
where he delivered solutions built on deep learning techniques. His research
focuses on the use of neural networks for fault diagnosis in industrial IoT
systems. Today his main interests are **AI agents**, **software engineering for
and with AI**, and **trustworthy AI**. If you would like to cooperate or discuss
a use case, please do not hesitate to contact him by email at
[islomkhon@126.com](mailto:islomkhon@126.com) or by phone at +86 139 1487 4257.
## License
Apache License 2.0 - see [LICENSE](LICENSE) and [NOTICE](NOTICE).
Anyone may use, modify and redistribute this software, including commercially.
In return the license asks that you keep the copyright notice, the license text
and the `NOTICE` file with any copy or derivative work, and note the files you
changed. It comes with no warranty, and it includes an express grant of patent
rights from contributors, so a contributor cannot later assert a patent over
code they contributed. The name and logo are not covered by the license, so a
fork needs its own branding.
历史前置条件说明(补充参考)
Python 3.12+、Node 20+;PostgreSQL 或 SQLite(SQLite 无表/列注释);需在 backend/.env 设置 DATABASE_URL、SECRET_KEY、DEEPSEEK_* 与 SEED_* 账号;模型需在 Admin -> Settings -> LLM Connections 配置 API Key 或设置 DEEPSEEK_API_KEY;模型调用费用与各服务商可用性待核验;Docker 用于启动数据库;工具函数体以完整权限运行且不沙箱化,工具编写限管理员。
项目来源与清单版权许可
https://github.com/islomkhon/CerebrumKit
整理来源:https://github.com/slavakurilyak/awesome-ai-agents
清单版权与许可:
MIT License
Copyright (c) 2024 Slava Kurilyak
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.