@xiaodye/runeclaw 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +224 -0
- package/dist/index.js +6409 -0
- package/package.json +70 -0
package/README.md
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="./assets/runeclaw-logo.svg" alt="RuneClaw logo" width="720" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# RuneClaw
|
|
6
|
+
|
|
7
|
+
RuneClaw 是一个基于 TypeScript 的本地 AI Agent CLI。它把模型调用、文件工具、RAG、记忆、MCP、子 Agent、定时任务、插件和飞书通道放在同一个运行时里,适合做可迭代的个人 Agent 实验。
|
|
8
|
+
|
|
9
|
+
## 特性
|
|
10
|
+
|
|
11
|
+
- DeepSeek 兼容模型接入,默认使用 `deepseek-v4-flash`
|
|
12
|
+
- 交互式 CLI,支持多轮对话和工具调用
|
|
13
|
+
- 本地文件工具:读取、写入、编辑、列目录、grep、glob
|
|
14
|
+
- Shell 工具:可执行命令并返回输出
|
|
15
|
+
- 记忆系统:跨会话保存、读取、搜索记忆
|
|
16
|
+
- RAG 知识库:自动导入 `docs/`,也支持手动导入其它文档
|
|
17
|
+
- MCP 接入:可挂载外部工具,当前默认有 GitHub mock 示例
|
|
18
|
+
- 子 Agent:支持任务分发与执行记录查看
|
|
19
|
+
- 定时任务:支持查看任务与执行日志
|
|
20
|
+
- 插件、技能、飞书 Channel、上下文视图、用量统计、循环检测
|
|
21
|
+
|
|
22
|
+
## 环境要求
|
|
23
|
+
|
|
24
|
+
- Node.js 22+
|
|
25
|
+
- `pnpm` 10.x
|
|
26
|
+
|
|
27
|
+
## 安装
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm install
|
|
31
|
+
pnpm build # 编译到 dist/(bin 指向 dist/index.js)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
开发时直接跑源码、不用每次编译:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pnpm run dev # 等价于 tsx src/index.ts
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
把 `runeclaw` 注册成全局命令(二选一):
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# 方式一:全局安装(推荐,任意目录都能用)
|
|
44
|
+
pnpm add -g .
|
|
45
|
+
|
|
46
|
+
# 方式二:开发时链接本地项目
|
|
47
|
+
pnpm link --global
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
> 不想注册全局命令的话,也可以用 `pnpm exec runeclaw` 直接运行。
|
|
51
|
+
> 修改源码后重新执行 `pnpm build` 即可让全局命令生效。
|
|
52
|
+
|
|
53
|
+
## 快速开始
|
|
54
|
+
|
|
55
|
+
首次运行建议先初始化配置:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
runeclaw init
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
然后启动:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
runeclaw
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
如果你已经有完整的配置文件,也可以直接启动。
|
|
68
|
+
|
|
69
|
+
`runeclaw` 支持以下命令:
|
|
70
|
+
|
|
71
|
+
| 命令 | 说明 |
|
|
72
|
+
| --- | --- |
|
|
73
|
+
| `runeclaw` / `runeclaw start` | 启动交互式 Agent(默认) |
|
|
74
|
+
| `runeclaw init` | 运行初始化向导,生成 `runeclaw.config.json` 与 `.env` |
|
|
75
|
+
| `runeclaw continue` | 启动 Agent(预留会话续接) |
|
|
76
|
+
| `runeclaw help` / `--help` | 查看帮助 |
|
|
77
|
+
| `runeclaw version` / `--version` | 查看版本号 |
|
|
78
|
+
|
|
79
|
+
## 发布到 npm
|
|
80
|
+
|
|
81
|
+
包名是 `@xiaodye/runeclaw`,`publishConfig.access: public` 已配置好(scoped 包默认私有,必须显式公开):
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
npm login # 首次发布需要登录 npm 账号
|
|
85
|
+
pnpm build # prepublishOnly 会自动执行,这里手动确认一次
|
|
86
|
+
npm publish # 或 pnpm publish
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
发布后其他人可以这样安装使用:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
npm install -g @xiaodye/runeclaw
|
|
93
|
+
runeclaw init
|
|
94
|
+
runeclaw
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
> 发布包只包含 `dist/`(`files` 字段已限制),不会带源码、`.env`、知识库等运行时数据;用户安装后在自己的目录里运行 `runeclaw init` 生成配置。
|
|
98
|
+
|
|
99
|
+
## 配置说明
|
|
100
|
+
|
|
101
|
+
初始化后会生成两个文件:
|
|
102
|
+
|
|
103
|
+
- `runeclaw.config.json`
|
|
104
|
+
- `.env`
|
|
105
|
+
|
|
106
|
+
约定是:
|
|
107
|
+
|
|
108
|
+
- `runeclaw.config.json` 只保留占位符,不放明文密钥
|
|
109
|
+
- 真正的模型和飞书密钥放在 `.env`
|
|
110
|
+
|
|
111
|
+
配置文件里的 `${LLM_MODEL}`、`${LLM_API_BASE}`、`${LLM_API_KEY}`、`${FEISHU_APP_ID}`、`${FEISHU_APP_SECRET}` 会在启动时自动从环境变量替换。
|
|
112
|
+
|
|
113
|
+
### 推荐的 `.env`
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
LLM_MODEL=deepseek-v4-flash
|
|
117
|
+
LLM_API_BASE=https://api.deepseek.com
|
|
118
|
+
LLM_API_KEY=your-deepseek-api-key
|
|
119
|
+
|
|
120
|
+
FEISHU_APP_ID=cli_xxx
|
|
121
|
+
FEISHU_APP_SECRET=xxx
|
|
122
|
+
|
|
123
|
+
DASHSCOPE_API_KEY=your-dashscope-api-key-for-embeddings
|
|
124
|
+
|
|
125
|
+
TAVILY_API_KEY=
|
|
126
|
+
# 或者
|
|
127
|
+
SERPER_API_KEY=
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 模型选择
|
|
131
|
+
|
|
132
|
+
`runeclaw init` 会默认提供这些 DeepSeek 模型:
|
|
133
|
+
|
|
134
|
+
- `deepseek-v4-flash`
|
|
135
|
+
- `deepseek-v4-pro`
|
|
136
|
+
- 自定义模型名
|
|
137
|
+
|
|
138
|
+
如果你手动编辑配置,也建议继续使用 DeepSeek 的 OpenAI-compatible 接入方式。
|
|
139
|
+
|
|
140
|
+
## 常用命令
|
|
141
|
+
|
|
142
|
+
启动后可以直接输入这些命令:
|
|
143
|
+
|
|
144
|
+
### 基础
|
|
145
|
+
|
|
146
|
+
- `exit` 退出
|
|
147
|
+
- `/context` 查看上下文占用
|
|
148
|
+
- `/usage` 查看 token 和成本统计
|
|
149
|
+
- `status` 查看当前消息、记忆和知识库状态
|
|
150
|
+
|
|
151
|
+
### 记忆
|
|
152
|
+
|
|
153
|
+
- `/memory` 查看记忆列表
|
|
154
|
+
- `/memory search <关键词>` 搜索记忆
|
|
155
|
+
|
|
156
|
+
### 知识库
|
|
157
|
+
|
|
158
|
+
- `/rag` 查看知识库状态
|
|
159
|
+
- `ingest <path>` 导入本地文档到知识库
|
|
160
|
+
|
|
161
|
+
### 技能与插件
|
|
162
|
+
|
|
163
|
+
- `/skill` 或 `/skill list` 查看技能
|
|
164
|
+
- `/skill load <name>` 激活技能
|
|
165
|
+
- `/skill unload <name>` 卸载技能
|
|
166
|
+
- `/plugin` 或 `/plugin list` 查看插件
|
|
167
|
+
- `/plugin load <name>` 加载插件
|
|
168
|
+
- `/plugin unload <name>` 卸载插件
|
|
169
|
+
|
|
170
|
+
### 通道、定时任务、子 Agent
|
|
171
|
+
|
|
172
|
+
- `/channel` 查看已注册通道
|
|
173
|
+
- `/cron` 查看定时任务
|
|
174
|
+
- `/cron logs` 查看最近执行日志
|
|
175
|
+
- `/agents` 查看子 Agent 执行记录
|
|
176
|
+
- `/role [角色]` 查看或切换角色
|
|
177
|
+
|
|
178
|
+
### 调试
|
|
179
|
+
|
|
180
|
+
- `sim` 或 `模拟长对话` 注入测试对话
|
|
181
|
+
- `defend` 或 `执行防线` 应用上下文防线
|
|
182
|
+
- `/cache on`、`/cache off` 切换 cache 模拟
|
|
183
|
+
|
|
184
|
+
## Codex PR 审查机器人
|
|
185
|
+
|
|
186
|
+
仓库通过 `openai/codex-action` 自动审查同仓库分支提交的非草稿 PR。机器人会在 PR 创建、重新打开、转为可审查状态或推送新提交时运行,并持续更新同一条中文审查评论。
|
|
187
|
+
|
|
188
|
+
启用前,在 GitHub 仓库的 **Settings → Secrets and variables → Actions** 中新增 Repository secret:
|
|
189
|
+
|
|
190
|
+
```text
|
|
191
|
+
OPENAI_API_KEY=your-openai-api-key
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
出于安全考虑,workflow 不处理来自 fork 的 PR,也不会向 Codex 授予仓库写权限。配置见 `.github/workflows/codex-pr-review.yml`。
|
|
195
|
+
|
|
196
|
+
## 项目结构
|
|
197
|
+
|
|
198
|
+
```text
|
|
199
|
+
src/
|
|
200
|
+
agent/ Agent 循环、重试、循环检测
|
|
201
|
+
agents/ 子 Agent 注册与调度
|
|
202
|
+
channels/ 飞书通道
|
|
203
|
+
commands/ CLI 命令
|
|
204
|
+
config/ 初始化、加载、校验
|
|
205
|
+
context/ prompt 组装、压缩、上下文视图
|
|
206
|
+
cron/ 定时任务
|
|
207
|
+
memory/ 记忆系统
|
|
208
|
+
plugins/ 插件管理
|
|
209
|
+
rag/ 向量库、embedding、检索
|
|
210
|
+
security/ 工具安全钩子
|
|
211
|
+
session/ 会话持久化
|
|
212
|
+
skills/ Skills 加载
|
|
213
|
+
tools/ 内置工具与 MCP 适配
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## 说明
|
|
217
|
+
|
|
218
|
+
- 启动时会自动导入 `docs/` 下的 `.md` 文档到知识库
|
|
219
|
+
- 当前项目里的飞书配置只应通过 `.env` 提供,不要把 secret 写进 `runeclaw.config.json`
|
|
220
|
+
- Web 搜索工具会优先使用 `TAVILY_API_KEY`,没有时可用 `SERPER_API_KEY`
|
|
221
|
+
|
|
222
|
+
## 许可证
|
|
223
|
+
|
|
224
|
+
ISC
|