agent-loft 0.2.7 → 0.2.9
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 +14 -1
- package/package.json +2 -2
- package/web/apple-touch-icon.png +0 -0
- package/web/icon-maskable.svg +8 -9
- package/web/icon.svg +9 -9
- package/web/manifest.webmanifest +1 -1
package/README.md
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
|
+
<p align="center"><img src="web/icon.svg" width="120" alt="agent-loft"></p>
|
|
2
|
+
|
|
1
3
|
# agent-loft
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
**多个 agent 的工作台。** 把本机的 **Claude Code**、**Codex**(以后还有更多)放到同一张台面上统一管理,用飞书(以后还有 Telegram 等)和 Web 页面随时随地驱动它们。
|
|
4
6
|
|
|
5
7
|
由 `feishu-claude-bridge` 和 `feishu-codex-bridge` 合并而来:一个进程、一份配置,飞书和网页共用同一套会话、审批和模型切换。
|
|
6
8
|
|
|
9
|
+
## 理念
|
|
10
|
+
|
|
11
|
+
这里的 Loft 不是阁楼,是**工作台**:agent 是干活的人,agent-loft 是它们共用的那张台面。
|
|
12
|
+
|
|
13
|
+
- **多 agent,一张台面**:Claude Code、Codex 各有所长,不该各开一个窗口、各记一套会话。它们在这里共用工作目录、会话列表、审批和模型切换,同一条对话里随时换人接手,各自的上下文都还在。
|
|
14
|
+
- **统一管理,而不是再造一个 agent**:agent-loft 不自己做模型、不改 agent 的行为,只负责把官方的 agent 接进来、管起来。新的 agent 接一个驱动就能上台。
|
|
15
|
+
- **人在哪,台面就在哪**:电脑上用网页,手机上用 PWA 或飞书。同一个会话、同一个授权请求,在哪个渠道处理都行,其他地方自动同步。
|
|
16
|
+
- **跑在你自己的机器上**:代码、凭据和会话都留在本机,agent-loft 只是一层安全的遥控。
|
|
17
|
+
|
|
18
|
+
Logo 就是这个意思:一大两小几颗星(多个 agent)站在同一张台面上。
|
|
19
|
+
|
|
7
20
|
## 能做什么
|
|
8
21
|
|
|
9
22
|
- **多个 agent**:Claude Code(官方 Claude Agent SDK)、Codex(官方 `codex app-server`)。在同一条会话里 `/agent` 切换,各 agent 的上下文各自保留。
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-loft",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "多个 agent 的工作台:把本机 Claude Code / Codex 放到一处统一管理,用飞书和 Web 页面随时驱动——会话、审批、模型切换都共用",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"feishu",
|
|
8
8
|
"lark",
|
package/web/apple-touch-icon.png
CHANGED
|
Binary file
|
package/web/icon-maskable.svg
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
<stop offset="0" stop-color="#3b82f6"/>
|
|
5
|
-
<stop offset="1" stop-color="#06b6d4"/>
|
|
6
|
-
</linearGradient>
|
|
7
|
-
</defs>
|
|
2
|
+
<!-- Agent Loft:agent 工作台 —— 一大两小几颗星(多个 agent)站在同一张台面上,统一管理 -->
|
|
3
|
+
<defs><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="104" y1="104" x2="408" y2="408"><stop offset="0" stop-color="#3b82f6"/><stop offset="1" stop-color="#06b6d4"/></linearGradient></defs>
|
|
8
4
|
<rect width="512" height="512" fill="#fff"/>
|
|
9
|
-
<g transform="translate(256
|
|
10
|
-
<path d="
|
|
11
|
-
<path d="M256
|
|
5
|
+
<g transform="translate(256 257) scale(0.8) translate(-256 -257)">
|
|
6
|
+
<path d="M256 296L404 364L256 432L108 364Z" fill="url(#g)" fill-opacity=".3"/>
|
|
7
|
+
<path d="M256 252L404 320L256 388L108 320Z" fill="url(#g)"/>
|
|
8
|
+
<path d="M256 82C268.92 145.08 268.92 145.08 332 158C268.92 170.92 268.92 170.92 256 234C243.08 170.92 243.08 170.92 180 158C243.08 145.08 243.08 145.08 256 82Z" fill="url(#g)"/>
|
|
9
|
+
<path d="M152 186C158.46 217.54 158.46 217.54 190 224C158.46 230.46 158.46 230.46 152 262C145.54 230.46 145.54 230.46 114 224C145.54 217.54 145.54 217.54 152 186Z" fill="url(#g)" fill-opacity=".85"/>
|
|
10
|
+
<path d="M360 186C366.46 217.54 366.46 217.54 398 224C366.46 230.46 366.46 230.46 360 262C353.54 230.46 353.54 230.46 322 224C353.54 217.54 353.54 217.54 360 186Z" fill="url(#g)" fill-opacity=".85"/>
|
|
12
11
|
</g>
|
|
13
12
|
</svg>
|
package/web/icon.svg
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<path d="
|
|
10
|
-
<path d="
|
|
2
|
+
<!-- Agent Loft:agent 工作台 —— 一大两小几颗星(多个 agent)站在同一张台面上,统一管理 -->
|
|
3
|
+
<defs><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="104" y1="104" x2="408" y2="408"><stop offset="0" stop-color="#3b82f6"/><stop offset="1" stop-color="#06b6d4"/></linearGradient></defs>
|
|
4
|
+
<rect width="512" height="512" rx="116" fill="#fff"/>
|
|
5
|
+
<g transform="translate(256 257) scale(1.0) translate(-256 -257)">
|
|
6
|
+
<path d="M256 296L404 364L256 432L108 364Z" fill="url(#g)" fill-opacity=".3"/>
|
|
7
|
+
<path d="M256 252L404 320L256 388L108 320Z" fill="url(#g)"/>
|
|
8
|
+
<path d="M256 82C268.92 145.08 268.92 145.08 332 158C268.92 170.92 268.92 170.92 256 234C243.08 170.92 243.08 170.92 180 158C243.08 145.08 243.08 145.08 256 82Z" fill="url(#g)"/>
|
|
9
|
+
<path d="M152 186C158.46 217.54 158.46 217.54 190 224C158.46 230.46 158.46 230.46 152 262C145.54 230.46 145.54 230.46 114 224C145.54 217.54 145.54 217.54 152 186Z" fill="url(#g)" fill-opacity=".85"/>
|
|
10
|
+
<path d="M360 186C366.46 217.54 366.46 217.54 398 224C366.46 230.46 366.46 230.46 360 262C353.54 230.46 353.54 230.46 322 224C353.54 217.54 353.54 217.54 360 186Z" fill="url(#g)" fill-opacity=".85"/>
|
|
11
11
|
</g>
|
|
12
12
|
</svg>
|
package/web/manifest.webmanifest
CHANGED