yohn1985/jarvisbot
GitHub: yohn1985/jarvisbot
一个自托管的持久化自主智能体运行时,通过有界决策循环、持久记忆和默认仅提议的安全模式,在可信任的前提下逐步承担服务器运维与开发辅助工作。
Stars: 1 | Forks: 0
```
██╗ █████╗ ██████╗ ██╗ ██╗██╗███████╗
██║██╔══██╗██╔══██╗██║ ██║██║██╔════╝
██║███████║██████╔╝██║ ██║██║███████╗
██ ██║██╔══██║██╔══██╗╚██╗ ██╔╝██║╚════██║
╚█████╔╝██║ ██║██║ ██║ ╚████╔╝ ██║███████║
╚════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═══╝ ╚═╝╚══════╝
```
**一个自托管的自主智能体(autonomous agent),它的入职方式就像一名新员工:它登陆到机器上,了解其**
**环境,并且在您信任它处理实际工作之前,始终保持“仅提议”(propose-only)状态。**
[](LICENSE)



[官网](https://jarvisbot.app) · [Wiki](https://github.com/yohn1985/jarvisbot/wiki)

## 它是什么
Jarvis 是一个持久的 agent runtime,其核心理念是:拥有一个具备真实心智的有界循环(bounded loop),让您可以随着时间推移真正信任它。每次唤醒时,它都会从持久化存储(durable memory)中重建自己的上下文,感知它的世界,决定**一件**要做的事,选择性地执行它,记录下它所学到的东西,然后继续休眠直到下一次唤醒。
当它登陆到一台机器上时,它**的入职过程就像一名新员工。** 它通过纯 Python 引导程序将自己安装到一台全新的 Linux 机器上,了解它的环境(服务、网络、事物之间的连接方式),维护一个知识库,并通过 Web dashboard 与您交流。在它仍在学习阶段时,它保持**仅提议**状态。
它在设计上是**天生充满怀疑的。** 在某个结论成功经受住对抗性红队测试(red-team)的考验之前,它不会信任该结论,并且会将它无法验证的内容交由您处理,而不是盲目猜测。
## 快速开始
```
git clone https://github.com/yohn1985/jarvisbot.git
cd jarvisbot
./install.sh up # venv, deps, services, dashboard
```
安装程序会打印您的**登录链接**(它嵌入了一个私人访问 token):
```
http://
:8787/?token=…
```
打开它。弄丢了?随时运行 `./install.sh url`(或者运行 `./install.sh token` 获取原始 token)。
然后在 **Settings → Brain & Models** 中连接一个大脑(使用 Claude/ChatGPT 订阅登录是最便宜的;使用 API key 也可以),打个招呼吧。
## 工作原理
```
wake → perceive → orient → decide (priority ladder) → act → reflect
```
- **`jarvis/kernel.py`** — 一个有界的 tick。围绕单次“心智”调用构建的简单、可靠的底层管道。
- **`jarvis/perceive.py`** — 从持久信号构建世界(数据源*中断*会被明确提示出来,而不是被静默处理为“无事可做”)。
- **`jarvis/adapters/llm.py`** — 一个模型路由器:`role → backend:model`。支持 CLI 后端(Claude、
Codex、Ollama)和 HTTP 后端(OpenAI 兼容 + Anthropic)。支持基于角色的 effort/thinking 设置。
- **`jarvis/memory/`** — 工作记忆(Redis,降级为进程内处理)+ 情景记忆
(Postgres,降级为 JSONL 账本)。Reflections 会被写入**并被重新读取**,因此经验会改变其行为。
- **`jarvis/verify.py`** — 提炼出的深度修复原则:生成一个红队 agent 去*反驳*某个
声明;**fail-closed**(一个未运行的检查永远不会被算作“通过”)。
- **`jarvis/safety/seatbelt.py`** — 自我修改的**安全带(seatbelt)**:快照 → 防篡改
适应度门控 → 独立的红队测试 → 一键回滚。已构建并经过测试,但**目前还没有任何东西在自动
驱动它** —— 该框架已为将来引入自我编辑功能做好了准备。`self_modify` 默认关闭。
- **`skills/`** — 内置的功能(Web 研究、网络发现、深度代码搜索、
youtube 研究)。一键安装依赖;在聊天中通过 `/skill …` 运行。
## 仪表板
一个零依赖(stdlib)的 Web UI:
- **Chat** — 逐个 token 流式输出回复,可折叠的 **Thought** 区块,支持 markdown + 代码
块、图片附件(视觉)、引导控制(发送新消息会中断当前消息)以及一个
停止按钮。输入 `/` 以运行技能。
- **Knowledge** — Jarvis 发现并整理的关于其世界的知识。
- **Activity** — kernel tick、生成的工作进程以及实时进程。
- **Settings** — 单一页面:**Brain & Models**(连接 + 路由)、**Behavior**(身份、允许自主执行的操作、优先级)、**Skills**。
## 安全默认设置(请阅读此部分)
- **开箱即用的仅提议模式。** 高风险的操作类别(`deploy`、`infra_mutate`、`self_modify`)
默认被**拒绝**;您需要在 Settings 中手动授予这些权限。
- **心智永远不会为自己的工作打分** —— 适应度测试框架是一个独立的、防篡改的进程。
- **验证机制 fail-closed** —— 降级的检查会返回“未验证”,绝不会产生误报的通过。
- **访问 token 就是您的密码** —— dashboard 受此保护;请保密您的链接。Secrets
仅存在于被 gitignore 的 `.env`(chmod 600)/您的保险库中,绝不会出现在源代码里。
## 配置
复制 `config.example.yaml` → `config.yaml` 并进行编辑(所有内容也都可以从 dashboard 中进行编辑)。
Secrets 请放入 `.env` 中(参见 `.env.example`)。`jarvis/` 包是唯一事实来源 —— 直接编辑文件
即可;`install.sh` 永远不会覆盖它们。
## 状态
目前处于早期测试阶段,迭代速度很快。核心循环、记忆、模型路由器、dashboard、技能以及自我修改的
**安全带(seatbelt)** 已经就位。(安全带是安全测试框架 —— Jarvis **目前还不会**自主编辑其自身的代码。)可能会存在一些粗糙的边缘;欢迎提交 issue 和 PR。
## 路线图
今天,Jarvis 可以入职并在仅提议模式下提供协助。未来的方向是一个 **roles(角色)** 系统:一旦它
足够了解您的环境,您就可以通过展示来教它一项工作,然后它会以基于信任逐步放开的节奏,慢慢承担起那份
责任,评判标准是结果,而不是全盘盲目交接。
这些角色完全**由您来定义。** 任何您会交给一名有能力的初级员工的事情都是可以的(监控
告警流、维护 pipeline、对某一类工单进行第一轮筛选,无论您的工作是什么)。
这是未来的计划,而不是已经发布的功能。当前的基础(仅提议默认设置、
fail-closed 验证、操作类别门控、自我修改的安全带)之所以存在,正是为了能够谨慎地
授予能力,而不是盲目放权。
## 贡献
这是一个开源项目,因为我们的愿景超越了个人的力量。如果您看懂了这个愿景,请帮助我们构建它 —
提交一个 issue 或 PR。请参阅 [Wiki](https://github.com/yohn1985/jarvisbot/wiki) 以获取关于架构的深入探讨
以及如何添加 adapters/skills。
## License
[Apache License 2.0](LICENSE) · 主页:[jarvisbot.app](https://jarvisbot.app)标签:AI智能体, Apex, Awesome, C2, Python, 搜索引擎查询, 无后门, 时序数据库, 本地部署, 机器学习, 测试用例, 系统管理, 自主代理, 逆向工具