📈 GH Trending Explorer 🎲 Surprise me

← all repos

duyongan / dots-agent

git clone https://github.com/duyongan/dots-agent.git v1.2.0 · 3d ago

一个会主动发现任务的智能体

+12
stars, 24h · #2,881
+~42
stars, 7 days · #4,648
+64
stars, 30 days · #10,205
64
★ total · +42% this week
11
forks · 0 open issues

Star history (as recorded here)

2026-10-20 · 46 ★ 2026-10-23 · 64 ★
LanguagePython
LicenseMIT
Created2026-10-15 (8d ago)
Last push3d ago
Watchers4
OwnerUser

GitHub topics

Links

README excerpt
# dots-agent
一个会主动发现任务、主动积累技能的智能体。
包名 `dots-agent`,命令是 `dots`(装完就有)。两种用法:**命令行**,或者 **Windows 桌面窗口**。
## 安装
### 命令行
 [code] 
> 国内镜像(清华、阿里等)同步新包有延迟,刚发布的几天可能报
> `No matching distribution found`。加官方源即可:
>
> [code] 
或者不装,直接在仓库里跑(两种方式命令都通用):
 [code] 
### 桌面版(Windows)
#### 怎么打开
日常使用**双击 `dots.exe`**(或者桌面/开始菜单里的 `dots` 快捷方式)。装好之后它在:
 [code] 
`dots- -setup.exe` 只是**安装器**,装一次就行,不是日常打开方式。
#### 安装
安装包由打包命令生成到 `release/`(该目录不进仓库):
 [code] 
双击安装。安装器是**按用户安装**,不需要管理员权限,默认装到
`%LOCALAPPDATA%\Programs\dots`。安装过程中可以改目录;会创建桌面快捷方式和开始菜单项。
卸载走 Windows 的「设置 → 应用 → 已安装的应用 → dots」。
安装包自带一份嵌入式 Python 和全部依赖(`resources/runtime/`),**机器上没装过 Python 也能跑**。
不想安装也可以直接运行 `release/win-unpacked/dots.exe`。它旁边必须保留 `resources/`
目录(运行时都在里面),不能只把这个 exe 单独拷走。
自己打包:
 [code] 
#### 在仓库里开发
 [code] 
开发模式不打包,直接用系统上的 Python;工作目录是仓库根,所以会读仓库根或 `~/.dots/`
下的 `dot.toml`。
## 快速开始
 [code] 
`--global` 把配置写到 `~/.dots/`,数据和 `workspace/` 也跟着放那儿 ——
一份到处用,换个目录不用再 init。不带参数就是 `dots init`,只写当前目录,
那样每个目录都得配一次。
也可以不带子命令,直接进交互终端。里面**直接打字就是和它说话**,
`/` 开头才是命令:
 [code] 
| 输入 | 干什么 |
|---|---|
| 直接打字 | 和它对话。**记得上下文**,能接着追问 |
| `/命令` | 命令行那些命令,前面加个 `/`(见下表) |
| `/help` | 看全部命令 |
| `/exit` | 退出(Ctrl-D、Ctrl-C 也行) |
对话走的是同一个大脑、同一个工作区,但它**不是目标**:不进 `dot ls`,
后台 tick 也不碰它,所以不会算进你的目标队列。要让它后台跑,用 `/goal`。
它想在对话里做 `ask` 类动作(比如发邮件)时会当场问你 y/n,不走邮件审批。
每条命令都会重新读一遍配置,所以改完 `dot.toml` 不用退出来重进。
打开 http://127.0.0.1:8765/ 看它在干什么。
想先不配模型试一遍:
 [code] 
## 桌面界面
一个窗口装下 `dots` 的全部日常操作:看它在干什么、给它派活、批准它想做的事、跟它说话。
不用开终端,不用背命令。它和命令行版共用同一份配置、同一个数据库、同一个工作区。
### 第一次启动前必须先有配置
这是最容易卡住的一步:
> **后端找不到 `dot.toml` 会直接退出**,界面顶栏变成「后端已停」,所有按钮变灰。
> 此时连「生成全局配置」也点不动 —— 那个按钮要求后端已经就绪。
所以第一次使用,先在终端里生成一份全局配置:
 [code] 
`dots init` 会自动探测环境变量里的模型 key。没探到就手填 `~/.dots/dot.toml` 的 `[model]` 段。
打包版查找配置的顺序:
1. `%APPDATA%\dots-desktop\dot.toml`(也就是应用的当前工作目录)
2. `~/.dots\dot.toml`
你的数据跟着配置文件走:全局配置在 `~/.dots/`,数据库和工作区也都在那儿。
### 启动过程
双击图标后:
1. Electron 先画窗口;
2. 拉起 `python -m dots bridge`;
3. 后端导入 langchain 那一整串依赖,**约 10 秒**;
4. 后端发出 `ready`,顶栏从「正在启动后端…」变成「值守中」。
这 10 秒里输入框和按钮是灰的。**不是卡死**。不要在这个时候狂点 —— 虽然界面会拦住,
但后端准备好之前发的命令会堆在管道里,顺序不可控。
如果后端起不来,顶栏显示「后端已停」,同时底部弹出输出面板,里面是 Python 的 stderr
尾部(常见的:「没找到配置」「ModuleNotFoundError」「API key 缺失」)。
### 界面总览
窗口从上到下五段:
 [code] 
窗口最小 720×520。窗口高度不足 640px 时,命令抽屉会自动收起且把手不可点,
保证上面的内容不被挤没。
### 顶栏:状态与值守开关
后端状态:
| 文字 | 含义 |
|---|---|
| 正在启动后端… | Python 子进程正在导入依赖,按钮全灰 |
| 值守中 | 后端就绪,可以操作 |
| 正在停止… | 正在优雅退出后端 |
| 后端已停 | 进程退出或起不来,详情看输出面板 |
顶栏中间显示:
- `每 60s 一轮`:循环在跑。数字来自 `[dot] tick_seconds`。
- `循环已停`:循环没跑,但后端还活着,你仍然可以手动「跑一轮」、聊天、点命令。
右边按钮:
- **停止**:请求停下循环。如果它正跑着一个目标,**不会立刻停** —— 要等这一轮结束。
 按钮会一直是「停止」,直到后端推来 `loop_stopped`。急着关窗口也没事,
 关闭时会先把没跑完的目标放回队列。
- **开始值守**:重新启动循环。
循环默认在界面启动时自动开启。它的存在感就是「主动」:不用你喊,它每轮自己找活干。
顶栏最右边「体检」= `dots doctor`。逐项检查:配置文件、读配置、审批规则、依赖、模型、
工作区可写、数据库、事件源、审批通道、技能库、bot、成本上限。每项失败都会给一句
「下一步怎么做」。
### 待批横幅:它停下来等你
只有存在挂起审批时才出现,是整个界面唯一用琥珀色强调的地方。
 [code] 
- 摘要会尽量说人话:`send_email` 显示收件人和主题,`run_shell` 显示命令,
 其它动作显示工具名。
- 每个审批有唯一编号(token)。点「批准」= `dots approve `,
 「拒绝」= `dots reject `。
- 决定写进 `approvals` 表,下一轮 tick 自动续跑对应目标。邮件回复和这里点按钮
 **走的是同一条路径**。
-