@tt-a1i/hive 0.6.0-alpha.0 → 0.6.0-alpha.2
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/CHANGELOG.md +61 -2
- package/README.md +166 -90
- package/README.zh-CN.md +213 -0
- package/SECURITY.md +1 -2
- package/assets/hive-hero.png +0 -0
- package/dist/src/server/agent-runtime.js +3 -0
- package/dist/src/server/agent-runtime.js.map +1 -1
- package/dist/src/server/routes-workspaces.js +12 -7
- package/dist/src/server/routes-workspaces.js.map +1 -1
- package/dist/src/server/runtime-store-helpers.d.ts +2 -0
- package/dist/src/server/runtime-store-helpers.js +10 -0
- package/dist/src/server/runtime-store-helpers.js.map +1 -1
- package/dist/src/server/runtime-store.d.ts +1 -0
- package/dist/src/server/runtime-store.js +1 -0
- package/dist/src/server/runtime-store.js.map +1 -1
- package/dist/src/server/team-list-serializer.d.ts +2 -8
- package/dist/src/server/team-list-serializer.js +2 -1
- package/dist/src/server/team-list-serializer.js.map +1 -1
- package/dist/src/server/terminal-state-mirror.d.ts +6 -0
- package/dist/src/server/terminal-state-mirror.js +21 -0
- package/dist/src/server/terminal-state-mirror.js.map +1 -1
- package/dist/src/server/worker-output-tracker.d.ts +14 -0
- package/dist/src/server/worker-output-tracker.js +51 -0
- package/dist/src/server/worker-output-tracker.js.map +1 -0
- package/dist/src/shared/types.d.ts +3 -0
- package/package.json +2 -1
- package/web/dist/assets/index-BGhNuRRP.css +1 -0
- package/web/dist/assets/index-D8sy4JED.js +75 -0
- package/web/dist/index.html +2 -2
- package/web/dist/assets/index-CjlaoOoA.css +0 -1
- package/web/dist/assets/index-CwdRvXrs.js +0 -63
package/CHANGELOG.md
CHANGED
|
@@ -2,11 +2,70 @@
|
|
|
2
2
|
|
|
3
3
|
All notable user-facing changes will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## 0.6.0-alpha.
|
|
5
|
+
## 0.6.0-alpha.2 - 2026-05-14
|
|
6
|
+
|
|
7
|
+
Follow-up to alpha.1 — corrects a handful of inconsistencies and tightens the
|
|
8
|
+
runtime-down experience that was deferred from the alpha.1 review.
|
|
9
|
+
|
|
10
|
+
- Removed the OrchestratorHintOverlay introduced in alpha.1. The hint card on
|
|
11
|
+
the Orchestrator pane was judged as unnecessary; agent terminals are now
|
|
12
|
+
back to a clean full-bleed PTY.
|
|
13
|
+
- Runtime-down handling is no longer half-finished: when the local Hive
|
|
14
|
+
runtime is unreachable on startup, the WelcomePane "Add your first
|
|
15
|
+
workspace" CTA is disabled with an explicit footnote, and `createWorkspace`
|
|
16
|
+
failures now surface as an error toast instead of being swallowed.
|
|
17
|
+
- npm releases are now published with `--provenance`, matching the prior
|
|
18
|
+
claim in README/CHANGELOG. The alpha.0 / alpha.1 tarballs do not have
|
|
19
|
+
provenance attestations; alpha.2 is the first release that actually does.
|
|
20
|
+
- Toast ids no longer use `Math.random()` (AGENTS.md §6); switched to a
|
|
21
|
+
module-level monotonic counter — `crypto.randomUUID` was the previous
|
|
22
|
+
fallback but a future LAN deployment would not have a secure context.
|
|
23
|
+
- README and SECURITY no longer pin a specific version number in the public
|
|
24
|
+
preview banner — the npm badge now carries that responsibility.
|
|
25
|
+
- Windows is documented as Tier 2 (CI smoke + manual verification before
|
|
26
|
+
release) rather than Tier 1; the previous wording oversold what the CI
|
|
27
|
+
matrix actually covers.
|
|
28
|
+
|
|
29
|
+
## 0.6.0-alpha.1 - 2026-05-14
|
|
30
|
+
|
|
31
|
+
UI onboarding revamp. Three audits (visual / UX / competitive) called the
|
|
32
|
+
first-run state too sparse to ship publicly; this release answers all of them
|
|
33
|
+
in one batch.
|
|
34
|
+
|
|
35
|
+
- Empty main area now renders a WelcomePane with a 3-step guide and a primary
|
|
36
|
+
CTA, replacing the previous black null branch in WorkspaceDetail.
|
|
37
|
+
- Sidebar EmptyState absorbs the New workspace CTA so the call-to-action sits
|
|
38
|
+
in the eye-flow center; the bottom dashed Add Workspace button still appears
|
|
39
|
+
once the list is non-empty.
|
|
40
|
+
- Topbar drops the hardcoded `v0.1` and reads the real package version. The
|
|
41
|
+
Blueprint and Notifications actions hide while no workspace is active.
|
|
42
|
+
- Cards lose the `translateY(-1px)` hover lift. Role badges now blend the
|
|
43
|
+
status color into the surface with `color-mix(in oklab, ... 22%, var(--bg-2))`
|
|
44
|
+
so they ride the token system instead of hardcoded hex.
|
|
45
|
+
- Runtime-down on first load surfaces an explicit error toast instead of
|
|
46
|
+
falling through to "No workspaces."
|
|
47
|
+
- Orchestrator pane shows a Cursor-style hint overlay on the first run; any
|
|
48
|
+
keystroke or the explicit Dismiss button removes it.
|
|
49
|
+
- Worker cards expose the last terminal output line for working workers,
|
|
50
|
+
backed by a new `last_output_line` field on the team list payload and a new
|
|
51
|
+
per-run `worker-output-tracker` on the runtime.
|
|
52
|
+
- New Try Demo flow renders a fully client-side demo workspace (fake
|
|
53
|
+
orchestrator + two workers, prerecorded scrollback, prefilled tasks
|
|
54
|
+
checklist). The demo never touches the server.
|
|
55
|
+
- New first-run wizard auto-opens once per browser via a localStorage flag and
|
|
56
|
+
routes users into Add Workspace, Try Demo, or Skip.
|
|
57
|
+
- Server: duplicate-start guard in `agent-runtime.startAgent` reuses the
|
|
58
|
+
active run rather than spawning a second PTY when the orchestrator autostart
|
|
59
|
+
collides with a manual start.
|
|
60
|
+
- App refactor: split into `AppProviders` + `AppInner`, extracted
|
|
61
|
+
`useFirstRunWizard`, `useEffectiveWorkspaceState`, and
|
|
62
|
+
`WorkspaceTaskDrawer` so `web/src/app.tsx` stays under the 150-line hard
|
|
63
|
+
cap.
|
|
64
|
+
|
|
65
|
+
## 0.6.0-alpha.0 - 2026-05-13
|
|
6
66
|
|
|
7
67
|
- Prepared Hive for public preview package distribution.
|
|
8
68
|
- Added Apache-2.0 licensing metadata and repository support documents.
|
|
9
69
|
- Documented supported platforms, supported CLI presets, first-run flow, safety
|
|
10
70
|
model, and troubleshooting guidance.
|
|
11
71
|
- Added package smoke validation for packaged runtime startup.
|
|
12
|
-
|
package/README.md
CHANGED
|
@@ -1,127 +1,165 @@
|
|
|
1
1
|
# Hive
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
their own PTYs, and the web UI keeps tasks, terminals, and reports in one place.
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="./assets/hive-hero.png" alt="Hive local-first multi-agent coding workspace hero image" />
|
|
5
|
+
</p>
|
|
7
6
|
|
|
8
|
-
Hive is
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
Hive is a local multi-agent workspace for CLI coding agents. It lets you run
|
|
8
|
+
Claude Code, Codex, OpenCode, Gemini, or any custom CLI agent as a visible team:
|
|
9
|
+
one Orchestrator coordinates the plan, worker agents run in their own PTYs, and
|
|
10
|
+
the web UI keeps tasks, terminals, and reports in one place.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
[](https://www.npmjs.com/package/@tt-a1i/hive)
|
|
13
|
+
[](https://nodejs.org/)
|
|
14
|
+
[](./LICENSE)
|
|
15
|
+
[-lightgrey.svg)](#platform-support)
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
English · [简体中文](./README.zh-CN.md)
|
|
15
18
|
|
|
16
|
-
|
|
19
|
+
> Public preview. Hive is local-first, runs on `127.0.0.1`, and is intended
|
|
20
|
+
> for developers who already use CLI coding agents. The latest published
|
|
21
|
+
> version is on [npm](https://www.npmjs.com/package/@tt-a1i/hive) and the
|
|
22
|
+
> badge above resolves to it.
|
|
17
23
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
## Why Hive
|
|
25
|
+
|
|
26
|
+
CLI coding agents are powerful, but coordinating several of them manually is
|
|
27
|
+
awkward:
|
|
28
|
+
|
|
29
|
+
- Long-running sessions are spread across terminals.
|
|
30
|
+
- It is hard to split a task into implementation, review, and testing without a
|
|
31
|
+
routing layer.
|
|
32
|
+
- Worker progress disappears into scrollback.
|
|
33
|
+
- Restart recovery depends on each CLI's native session behavior.
|
|
34
|
+
|
|
35
|
+
Hive adds that coordination layer without replacing the CLIs. The agents remain
|
|
36
|
+
real terminal processes running on your machine; Hive manages the team shell
|
|
37
|
+
around them.
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
Prerequisites:
|
|
42
|
+
|
|
43
|
+
- Node.js 22 or newer.
|
|
44
|
+
- At least one supported agent CLI installed, authenticated, and available on
|
|
45
|
+
`PATH`.
|
|
22
46
|
|
|
23
|
-
|
|
47
|
+
Install and start Hive:
|
|
24
48
|
|
|
25
49
|
```bash
|
|
26
|
-
|
|
50
|
+
npm install -g @tt-a1i/hive
|
|
51
|
+
hive --port 4010
|
|
27
52
|
```
|
|
28
53
|
|
|
29
54
|
Open the printed local URL, usually `http://127.0.0.1:4010/`.
|
|
30
55
|
|
|
31
|
-
First
|
|
56
|
+
First-run flow:
|
|
32
57
|
|
|
33
|
-
1.
|
|
58
|
+
1. Create a workspace from a project folder.
|
|
34
59
|
2. Choose an Orchestrator preset.
|
|
35
60
|
3. Hive creates `<workspace>/.hive/tasks.md`, starts the Orchestrator PTY, and
|
|
36
|
-
injects the internal `team` command into agent
|
|
61
|
+
injects the internal `team` command into the agent session.
|
|
37
62
|
4. Add workers from the Team Members panel.
|
|
38
|
-
5.
|
|
39
|
-
|
|
63
|
+
5. Ask the Orchestrator to delegate work. It sends tasks with
|
|
64
|
+
`team send <worker-name> "<task>"`; workers report back with `team report`.
|
|
65
|
+
|
|
66
|
+
## How It Works
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
Browser UI on 127.0.0.1
|
|
70
|
+
tasks, team, terminals, reports
|
|
71
|
+
|
|
|
72
|
+
| HTTP + WebSocket
|
|
73
|
+
v
|
|
74
|
+
Hive runtime
|
|
75
|
+
SQLite metadata, PTY lifecycle, task dispatch
|
|
76
|
+
|
|
|
77
|
+
+-- Orchestrator PTY
|
|
78
|
+
| can call: team send, team list, team report
|
|
79
|
+
|
|
|
80
|
+
+-- Worker PTY
|
|
81
|
+
| can call: team report
|
|
82
|
+
|
|
|
83
|
+
+-- Worker PTY
|
|
84
|
+
can call: team report
|
|
85
|
+
|
|
86
|
+
Workspace task graph:
|
|
87
|
+
<workspace>/.hive/tasks.md
|
|
88
|
+
```
|
|
40
89
|
|
|
41
|
-
|
|
90
|
+
Three details matter:
|
|
42
91
|
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
install a global `team` command.
|
|
50
|
-
- Stores runtime metadata under `~/.config/hive` by default, or under
|
|
51
|
-
`HIVE_DATA_DIR` when set.
|
|
92
|
+
- Agents are real CLI processes, not simulated subagents.
|
|
93
|
+
- `team` is injected only inside Hive-managed agent sessions by prepending the
|
|
94
|
+
package's internal bin directory to `PATH`; it is not installed as a global
|
|
95
|
+
command.
|
|
96
|
+
- The task graph is a markdown file in the workspace, so you can inspect or
|
|
97
|
+
edit it outside the app.
|
|
52
98
|
|
|
53
|
-
##
|
|
99
|
+
## Agent Presets
|
|
54
100
|
|
|
55
|
-
| Preset | Command expected on PATH |
|
|
56
|
-
| --- | --- | --- |
|
|
57
|
-
| Claude Code | `claude` |
|
|
58
|
-
| Codex | `codex` |
|
|
59
|
-
| OpenCode | `opencode` |
|
|
60
|
-
| Gemini | `gemini` |
|
|
61
|
-
| Custom | Any executable |
|
|
101
|
+
| Preset | Command expected on `PATH` | Default bypass mode | Session resume |
|
|
102
|
+
| --- | --- | --- | --- |
|
|
103
|
+
| Claude Code | `claude` | `--dangerously-skip-permissions`, `--permission-mode=bypassPermissions` | `--resume <session_id>` |
|
|
104
|
+
| Codex | `codex` | `--dangerously-bypass-approvals-and-sandbox` | `resume <session_id>` |
|
|
105
|
+
| OpenCode | `opencode` | `--dangerously-skip-permissions` | `--session <session_id>` |
|
|
106
|
+
| Gemini | `gemini` | `--yolo` | `--resume <session_id>` |
|
|
107
|
+
| Custom | Any executable | User configured | User configured |
|
|
108
|
+
|
|
109
|
+
Hive does not install these CLIs for you. Install and authenticate them in the
|
|
110
|
+
same shell environment you use to start Hive.
|
|
111
|
+
|
|
112
|
+
## What Hive Provides
|
|
62
113
|
|
|
63
|
-
|
|
64
|
-
|
|
114
|
+
- Workspace sidebar for switching between local projects.
|
|
115
|
+
- Orchestrator and worker terminals backed by real PTYs.
|
|
116
|
+
- Add Worker flow with role presets for coder, reviewer, tester, and custom
|
|
117
|
+
members.
|
|
118
|
+
- `.hive/tasks.md` editor with external-file conflict handling.
|
|
119
|
+
- Background PTY preservation and best-effort native session resume.
|
|
120
|
+
- Local SQLite metadata under `~/.config/hive` by default, or `$HIVE_DATA_DIR`
|
|
121
|
+
when set.
|
|
122
|
+
|
|
123
|
+
Hive does not provide sandboxing, multi-user auth, cloud hosting, or its own
|
|
124
|
+
coding model. It coordinates tools you already run locally.
|
|
65
125
|
|
|
66
126
|
## Platform Support
|
|
67
127
|
|
|
68
128
|
| Platform | Status | Notes |
|
|
69
129
|
| --- | --- | --- |
|
|
70
|
-
| macOS | Tier 1 |
|
|
71
|
-
| Linux | Tier 1 | CI
|
|
72
|
-
| Windows | Tier
|
|
130
|
+
| macOS | Tier 1 | Main development and release verification target. |
|
|
131
|
+
| Linux | Tier 1 | CI verified. Native folder picking expects `zenity`; manual path entry works without it. |
|
|
132
|
+
| Windows | Tier 2 | CI runs a Windows test subset and a packaged-install smoke. Folder picking uses Windows PowerShell and the package includes `team.cmd`. Treat as best-effort — full Windows verification before each release is manual. |
|
|
133
|
+
|
|
134
|
+
All platforms require Node.js 22+. Hive depends on `node-pty`, so native install
|
|
135
|
+
tooling may be required when prebuilt binaries are unavailable.
|
|
73
136
|
|
|
74
137
|
## Safety Model
|
|
75
138
|
|
|
76
|
-
Hive is a local development tool, not a hosted
|
|
139
|
+
Hive is a local development tool, not a hosted service.
|
|
77
140
|
|
|
78
141
|
- The runtime binds to `127.0.0.1`. Do not expose the Hive port through a public
|
|
79
142
|
tunnel, reverse proxy, or shared network interface.
|
|
80
143
|
- Built-in presets intentionally use each CLI's non-interactive or bypass mode
|
|
81
144
|
where available. Treat workers as able to run arbitrary shell commands inside
|
|
82
145
|
the selected workspace.
|
|
83
|
-
-
|
|
146
|
+
- Open only trusted workspaces. A worker has the same filesystem access as the
|
|
84
147
|
shell account running Hive.
|
|
85
148
|
- Agent tokens are session scoped, generated by the local runtime, injected into
|
|
86
149
|
agent process environments, and not intended as internet-facing credentials.
|
|
87
|
-
- Hive has no multi-user authentication boundary.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
See [SECURITY.md](SECURITY.md) before using Hive with sensitive repositories.
|
|
91
|
-
|
|
92
|
-
## Development
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
pnpm install
|
|
96
|
-
pnpm dev
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
The development runtime uses `127.0.0.1:4010`; the Vite web server uses
|
|
100
|
-
`127.0.0.1:5180` and proxies API and WebSocket traffic to the runtime.
|
|
101
|
-
|
|
102
|
-
Useful checks:
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
pnpm check
|
|
106
|
-
pnpm build
|
|
107
|
-
pnpm test
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## Production-Style Local Run
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
pnpm build
|
|
114
|
-
node dist/src/cli/hive.js --port 4010
|
|
115
|
-
```
|
|
150
|
+
- Hive has no multi-user authentication boundary. Treat same-machine processes
|
|
151
|
+
that can reach the local port as trusted local access.
|
|
116
152
|
|
|
117
|
-
|
|
118
|
-
needed after `pnpm build`.
|
|
153
|
+
Read [SECURITY.md](SECURITY.md) before using Hive with sensitive repositories.
|
|
119
154
|
|
|
120
|
-
|
|
155
|
+
## Data Locations
|
|
121
156
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
157
|
+
| Data | Location |
|
|
158
|
+
| --- | --- |
|
|
159
|
+
| Runtime metadata | `~/.config/hive` or `$HIVE_DATA_DIR` |
|
|
160
|
+
| Workspace tasks | `<workspace>/.hive/tasks.md` |
|
|
161
|
+
| Internal `team` command | Packaged under `dist/bin/`, injected into PTYs |
|
|
162
|
+
| Web UI assets | Served by the runtime from the packaged `web/dist` build |
|
|
125
163
|
|
|
126
164
|
## Troubleshooting
|
|
127
165
|
|
|
@@ -132,7 +170,7 @@ same shell, and available on `PATH`.
|
|
|
132
170
|
|
|
133
171
|
**Port already in use**
|
|
134
172
|
|
|
135
|
-
Start Hive with
|
|
173
|
+
Start Hive with another local port:
|
|
136
174
|
|
|
137
175
|
```bash
|
|
138
176
|
hive --port 4020
|
|
@@ -140,9 +178,9 @@ hive --port 4020
|
|
|
140
178
|
|
|
141
179
|
**Native PTY install fails**
|
|
142
180
|
|
|
143
|
-
Hive depends on `node-pty`, which
|
|
144
|
-
your package manager cache clean, and verify your platform
|
|
145
|
-
|
|
181
|
+
Hive depends on `node-pty`, which uses native binaries. Use Node.js 22+, keep
|
|
182
|
+
your package manager cache clean, and verify your platform build tools are
|
|
183
|
+
available.
|
|
146
184
|
|
|
147
185
|
**Folder picker does not open on Linux**
|
|
148
186
|
|
|
@@ -158,17 +196,55 @@ workspace path manually.
|
|
|
158
196
|
Hive detected a newer `.hive/tasks.md` on disk. Use `Reload` to accept the file
|
|
159
197
|
from disk, or `Keep Local` to keep the editor contents and save again.
|
|
160
198
|
|
|
161
|
-
|
|
199
|
+
**Worker appears stuck in `working`**
|
|
200
|
+
|
|
201
|
+
Hive does not guess task completion from process activity. Workers move back to
|
|
202
|
+
`idle` when they call `team report`. If a worker is blocked, stop or restart it
|
|
203
|
+
from the UI.
|
|
204
|
+
|
|
205
|
+
## Development
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
pnpm install
|
|
209
|
+
pnpm dev
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Development mode runs the runtime on `127.0.0.1:4010`; Vite runs on
|
|
213
|
+
`127.0.0.1:5180` and proxies API and WebSocket traffic to the runtime.
|
|
214
|
+
|
|
215
|
+
Useful checks:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
pnpm check
|
|
219
|
+
pnpm build
|
|
220
|
+
pnpm test
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Production-style local run:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
pnpm build
|
|
227
|
+
node dist/src/cli/hive.js --port 4010
|
|
228
|
+
```
|
|
162
229
|
|
|
163
|
-
|
|
230
|
+
The production server serves the built web UI directly. No Vite server is
|
|
231
|
+
needed after `pnpm build`.
|
|
232
|
+
|
|
233
|
+
## Release
|
|
234
|
+
|
|
235
|
+
Maintainer dry run:
|
|
164
236
|
|
|
165
237
|
```bash
|
|
166
238
|
pnpm release:dry
|
|
167
239
|
```
|
|
168
240
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
241
|
+
Tag pushes matching `v*` run the GitHub Actions release workflow. The workflow
|
|
242
|
+
verifies macOS, Ubuntu, and Windows, then publishes to npm with `NPM_TOKEN`.
|
|
243
|
+
|
|
244
|
+
## Status
|
|
245
|
+
|
|
246
|
+
Hive is in alpha public preview. Expect UI and protocol details to keep moving
|
|
247
|
+
while the core local orchestration model hardens.
|
|
172
248
|
|
|
173
249
|
## License
|
|
174
250
|
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# Hive
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="./assets/hive-hero.png" alt="Hive 本机多 agent 协作工作台" />
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
Hive 是一个本机多 agent 协作工作台。它让 Claude Code、Codex、OpenCode、Gemini 或任意自定义 CLI Agent 组成一个可见的团队:一个 Orchestrator 负责协调计划,多个 Worker 在各自的 PTY 里执行任务,Web UI 把任务、终端和汇报集中在一处。
|
|
8
|
+
|
|
9
|
+
[](https://www.npmjs.com/package/@tt-a1i/hive)
|
|
10
|
+
[](https://nodejs.org/)
|
|
11
|
+
[](./LICENSE)
|
|
12
|
+
[-lightgrey.svg)](#平台支持)
|
|
13
|
+
|
|
14
|
+
[English](./README.md) · 简体中文
|
|
15
|
+
|
|
16
|
+
> Public preview。Hive 是本机优先的工具,只监听 `127.0.0.1`,面向已经在用 CLI Coding Agent 的开发者。最新发布版本见 [npm](https://www.npmjs.com/package/@tt-a1i/hive),上面的 badge 会指向它。
|
|
17
|
+
|
|
18
|
+
## 为什么需要 Hive
|
|
19
|
+
|
|
20
|
+
CLI Coding Agent 各自都很强,但同时管几个就有点别扭:
|
|
21
|
+
|
|
22
|
+
- 长任务的会话散在好几个终端里,注意力来回切。
|
|
23
|
+
- 想把"实现 / review / 测试"分给三个 agent,却没有一层把它们路由起来。
|
|
24
|
+
- Worker 的进度淹在 scrollback 里,回头看找不到。
|
|
25
|
+
- 想重启接着干,全看每个 CLI 自己的 session 恢复行为,散乱不可控。
|
|
26
|
+
|
|
27
|
+
Hive 加上这一层调度,**不替换**任何 CLI。Agent 还是真实跑在你电脑上的终端进程,Hive 只是它们外面的"团队 shell"。
|
|
28
|
+
|
|
29
|
+
## 快速开始
|
|
30
|
+
|
|
31
|
+
前置条件:
|
|
32
|
+
|
|
33
|
+
- Node.js 22 或更新版本
|
|
34
|
+
- 至少一个支持的 Agent CLI 已经安装好、登录过、在 `PATH` 上可调用
|
|
35
|
+
|
|
36
|
+
安装并启动 Hive:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install -g @tt-a1i/hive
|
|
40
|
+
hive --port 4010
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
打开终端打印出来的本机地址,通常是 `http://127.0.0.1:4010/`。
|
|
44
|
+
|
|
45
|
+
首次使用流程:
|
|
46
|
+
|
|
47
|
+
1. 选择一个项目目录作为 workspace。
|
|
48
|
+
2. 挑一个 Orchestrator 预设。
|
|
49
|
+
3. Hive 会创建 `<workspace>/.hive/tasks.md`,启动 Orchestrator 的 PTY,把内部的 `team` 命令注入这个 agent 会话。
|
|
50
|
+
4. 在 Team Members 面板里添加 Worker。
|
|
51
|
+
5. 跟 Orchestrator 说一声让它派活,它会用 `team send <worker-name> "<task>"` 发任务,Worker 完事后用 `team report` 回报。
|
|
52
|
+
|
|
53
|
+
## 工作方式
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
浏览器 UI 跑在 127.0.0.1
|
|
57
|
+
任务 · 团队 · 终端 · 汇报
|
|
58
|
+
|
|
|
59
|
+
| HTTP + WebSocket
|
|
60
|
+
v
|
|
61
|
+
Hive Runtime
|
|
62
|
+
SQLite 元数据 · PTY 生命周期 · 任务派单
|
|
63
|
+
|
|
|
64
|
+
+-- Orchestrator PTY
|
|
65
|
+
| 可调用:team send、team list、team report
|
|
66
|
+
|
|
|
67
|
+
+-- Worker PTY
|
|
68
|
+
| 可调用:team report
|
|
69
|
+
|
|
|
70
|
+
+-- Worker PTY
|
|
71
|
+
可调用:team report
|
|
72
|
+
|
|
73
|
+
Workspace 任务图:
|
|
74
|
+
<workspace>/.hive/tasks.md
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
三个细节值得记住:
|
|
78
|
+
|
|
79
|
+
- Agent 是真正的 CLI 进程,不是模拟的 subagent。
|
|
80
|
+
- `team` 命令**只**在 Hive 管理的 agent 会话里可用——通过把包内 bin 目录 prepend 到 PATH 实现,不会装成全局命令。
|
|
81
|
+
- 任务图就是 workspace 里的一份 markdown 文件,你可以在编辑器里直接看或者改。
|
|
82
|
+
|
|
83
|
+
## Agent 预设
|
|
84
|
+
|
|
85
|
+
| 预设 | `PATH` 上的命令 | 默认 bypass 模式 | 会话恢复 |
|
|
86
|
+
| --- | --- | --- | --- |
|
|
87
|
+
| Claude Code | `claude` | `--dangerously-skip-permissions`、`--permission-mode=bypassPermissions` | `--resume <session_id>` |
|
|
88
|
+
| Codex | `codex` | `--dangerously-bypass-approvals-and-sandbox` | `resume <session_id>` |
|
|
89
|
+
| OpenCode | `opencode` | `--dangerously-skip-permissions` | `--session <session_id>` |
|
|
90
|
+
| Gemini | `gemini` | `--yolo` | `--resume <session_id>` |
|
|
91
|
+
| 自定义 | 任意可执行文件 | 自己配 | 自己配 |
|
|
92
|
+
|
|
93
|
+
Hive 不替你安装这些 CLI。请在启动 Hive 的同一个 shell 环境里先装好、登录好。
|
|
94
|
+
|
|
95
|
+
## Hive 提供什么
|
|
96
|
+
|
|
97
|
+
- Workspace 侧边栏,方便在多个本机项目之间切换。
|
|
98
|
+
- Orchestrator 和 Worker 终端都是真实 PTY 支撑的。
|
|
99
|
+
- Add Worker 流程预置了 coder / reviewer / tester 和自定义成员的角色模板。
|
|
100
|
+
- `.hive/tasks.md` 编辑器,带外部文件冲突处理。
|
|
101
|
+
- PTY 后台保留 + 尽力使用各 CLI 原生 session 恢复。
|
|
102
|
+
- 元数据存在本机 SQLite,默认在 `~/.config/hive`,或者通过 `$HIVE_DATA_DIR` 指定。
|
|
103
|
+
|
|
104
|
+
Hive **不**提供 sandbox 隔离、多用户认证、云端托管,也没有自带的编码模型。它只负责调度你已经在用的本机工具。
|
|
105
|
+
|
|
106
|
+
## 平台支持
|
|
107
|
+
|
|
108
|
+
| 平台 | 状态 | 备注 |
|
|
109
|
+
| --- | --- | --- |
|
|
110
|
+
| macOS | Tier 1 | 主开发与发布验证平台 |
|
|
111
|
+
| Linux | Tier 1 | CI 持续验证。目录选择器需要 `zenity`,没装也可以手动粘贴路径 |
|
|
112
|
+
| Windows | Tier 2 | CI 跑 Windows 测试子集 + 打包安装 smoke。目录选择器走 Windows PowerShell,包内带了 `team.cmd`。视为 best-effort——每次发版前的完整 Windows 验证仍是手动 |
|
|
113
|
+
|
|
114
|
+
所有平台都需要 Node.js 22+。Hive 依赖 `node-pty`,没有预编译二进制时需要你本机有原生构建工具链。
|
|
115
|
+
|
|
116
|
+
## 安全模型
|
|
117
|
+
|
|
118
|
+
Hive 是本机开发工具,**不是**托管服务。
|
|
119
|
+
|
|
120
|
+
- Runtime 只监听 `127.0.0.1`。不要把 Hive 端口通过公网隧道、反向代理或任何共享网络接口暴露出去。
|
|
121
|
+
- 内置预设会主动传 CLI 的 non-interactive / bypass flag。Worker 在选中的 workspace 里有跟启动 shell **同等**的执行权限——把它当成"会自动跑命令的你自己"。
|
|
122
|
+
- 只打开你信任的 workspace。Worker 拥有跟你登录账户一样的文件系统访问权限。
|
|
123
|
+
- Agent token 是 session 级的,由本机 runtime 生成,注入到 agent 进程环境变量里,**不**用于跨网络通信。
|
|
124
|
+
- Hive 不做多用户认证。任何能从本机访问到端口的进程都视为可信本地访问。
|
|
125
|
+
|
|
126
|
+
在敏感仓库里用 Hive 之前,请先读 [SECURITY.md](SECURITY.md)。
|
|
127
|
+
|
|
128
|
+
## 数据位置
|
|
129
|
+
|
|
130
|
+
| 数据 | 位置 |
|
|
131
|
+
| --- | --- |
|
|
132
|
+
| Runtime 元数据 | `~/.config/hive` 或 `$HIVE_DATA_DIR` |
|
|
133
|
+
| Workspace 任务图 | `<workspace>/.hive/tasks.md` |
|
|
134
|
+
| 内部 `team` 命令 | 包内 `dist/bin/`,通过 PATH 注入 PTY |
|
|
135
|
+
| Web UI 资源 | 由 runtime 从包内 `web/dist` 直接服务 |
|
|
136
|
+
|
|
137
|
+
## 故障排查
|
|
138
|
+
|
|
139
|
+
**找不到 Agent CLI**
|
|
140
|
+
|
|
141
|
+
确认选中的命令已经安装好、登录好、在启动 Hive 那个 shell 里能直接调用,且在 `PATH` 上。
|
|
142
|
+
|
|
143
|
+
**端口被占用**
|
|
144
|
+
|
|
145
|
+
换个本机端口启动:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
hive --port 4020
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**node-pty 原生构建失败**
|
|
152
|
+
|
|
153
|
+
Hive 依赖 `node-pty`,它用原生二进制。确认 Node.js 22+,清干净 package manager 缓存,并准备好你平台的构建工具(macOS Xcode CLI、Linux build-essential + python3、Windows VS Build Tools)。
|
|
154
|
+
|
|
155
|
+
**Linux 上目录选择器不弹**
|
|
156
|
+
|
|
157
|
+
装 `zenity`,或者直接在对话框里粘路径。
|
|
158
|
+
|
|
159
|
+
**Windows 上目录选择器不弹**
|
|
160
|
+
|
|
161
|
+
确认 `powershell.exe` 在 `PATH` 上,或者直接粘路径。
|
|
162
|
+
|
|
163
|
+
**Tasks 文件冲突 banner 出现**
|
|
164
|
+
|
|
165
|
+
Hive 检测到磁盘上的 `.hive/tasks.md` 比 UI 里的新。`Reload` 接受磁盘版本,`Keep Local` 保留 UI 编辑并覆盖保存。
|
|
166
|
+
|
|
167
|
+
**Worker 卡在 `working` 状态**
|
|
168
|
+
|
|
169
|
+
Hive 不通过进程活动猜测任务完成。Worker 只有在调 `team report` 时才会回到 `idle`。如果它确实卡了,从 UI 里 Stop 或 Restart。
|
|
170
|
+
|
|
171
|
+
## 开发
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
pnpm install
|
|
175
|
+
pnpm dev
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
开发模式下 runtime 跑在 `127.0.0.1:4010`,Vite 跑在 `127.0.0.1:5180`,把 API 和 WebSocket 代理到 runtime。
|
|
179
|
+
|
|
180
|
+
常用命令:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
pnpm check
|
|
184
|
+
pnpm build
|
|
185
|
+
pnpm test
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
预演 production 构建:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
pnpm build
|
|
192
|
+
node dist/src/cli/hive.js --port 4010
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Production 模式下 runtime 直接服务构建好的 web UI,不需要单独的 Vite。
|
|
196
|
+
|
|
197
|
+
## 发布
|
|
198
|
+
|
|
199
|
+
维护者本地预演:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
pnpm release:dry
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
带 `v*` 的 tag push 会触发 GitHub Actions release workflow。workflow 会在 macOS、Ubuntu、Windows 三平台验证,然后用 `NPM_TOKEN` 发布到 npm。
|
|
206
|
+
|
|
207
|
+
## 状态
|
|
208
|
+
|
|
209
|
+
Hive 正处于 alpha public preview 阶段。在本机调度模型稳定下来之前,UI 和协议细节还会继续调整。
|
|
210
|
+
|
|
211
|
+
## License
|
|
212
|
+
|
|
213
|
+
Apache-2.0。详见 [LICENSE](LICENSE)。
|
package/SECURITY.md
CHANGED
|
@@ -43,6 +43,5 @@ Please include:
|
|
|
43
43
|
|
|
44
44
|
- Running Hive as a shared server for multiple users.
|
|
45
45
|
- Exposing Hive through a public tunnel or reverse proxy.
|
|
46
|
-
-
|
|
46
|
+
- Operating Hive as a hardened production service.
|
|
47
47
|
- Sandboxing third-party CLI agents beyond the controls provided by those CLIs.
|
|
48
|
-
|
|
Binary file
|
|
@@ -81,6 +81,9 @@ export const createAgentRuntime = (agentManager, agentRunStore, sessionStore, ge
|
|
|
81
81
|
},
|
|
82
82
|
async startAgent(workspace, agentId, input) {
|
|
83
83
|
launchCache.setWorkspaceId(agentId, workspace.id);
|
|
84
|
+
const activeRun = getActiveRunByAgent(registry, launchCache.getWorkspaceId, syncRun, workspace.id, agentId);
|
|
85
|
+
if (activeRun)
|
|
86
|
+
return activeRun;
|
|
84
87
|
return startLiveRun(workspace, agentId, launchCache.get(workspace.id, agentId), input.hivePort);
|
|
85
88
|
},
|
|
86
89
|
stopAgentRun(runId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runtime.js","sourceRoot":"","sources":["../../../src/server/agent-runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-runtime.js","sourceRoot":"","sources":["../../../src/server/agent-runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAsB,MAAM,qBAAqB,CAAA;AAEjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,YAAsC,EACtC,aAAgC,EAChC,YAAmC,EACnC,gBAAiE,EACjE,WAA2D,EAC3D,gBAA+B,uBAAuB,EAAE,EACxD,QAA6E,EAC/D,EAAE;IAChB,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAA;IACxC,MAAM,WAAW,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAA;IACzD,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAA;IAChD,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAC3F,OAAO,YAAY,CAAA;IACrB,CAAC,CAAA;IACD,MAAM,WAAW,GAAG,6BAA6B,CAAC,cAAc,CAAC,CAAA;IAEjE,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAE,EAAE,CACpC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IAC3F,MAAM,eAAe,GAAG,0BAA0B,CAAC;QACjD,YAAY;QACZ,eAAe,EAAE,WAAW,CAAC,IAAI;QACjC,cAAc,EAAE,WAAW,CAAC,cAAc;QAC1C,QAAQ;QACR,OAAO;KACR,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,qBAAqB,CAAC;QACzC,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,KAAK,EAAE,aAAa;QACpB,YAAY;QACZ,aAAa;QACb,gBAAgB;QAChB,QAAQ;QACR,aAAa;KACd,CAAC,CAAA;IAEF,OAAO;QACL,KAAK,CAAC,KAAK;YACT,MAAM,iBAAiB,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC1D,CAAC;QACD,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK;YAC9C,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QAC/C,CAAC;QACD,uBAAuB,CAAC,WAAW,EAAE,OAAO;YAC1C,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;QACD,qBAAqB,CAAC,WAAW,EAAE,OAAO;YACxC,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAC/C,CAAC;QACD,qBAAqB,CAAC,WAAW,EAAE,OAAO;YACxC,OAAO,mBAAmB,CACxB,QAAQ,EACR,WAAW,CAAC,cAAc,EAC1B,OAAO,EACP,WAAW,EACX,OAAO,CACR,CAAA;QACH,CAAC;QACD,UAAU,CAAC,KAAK;YACd,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC/B,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAA;YACzD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;QACrB,CAAC;QACD,eAAe;YACb,OAAO,WAAW,CAAC,YAAY,EAAE,CAAA;QACnC,CAAC;QACD,aAAa,CAAC,OAAO;YACnB,OAAO,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;QACtF,CAAC;QACD,QAAQ,CAAC,KAAK;YACZ,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;QACD,cAAc,CAAC,OAAO;YACpB,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QACD,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI;YAC9B,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;QACD,SAAS,CAAC,KAAK;YACb,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;YACxC,WAAW,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAA;YACjD,MAAM,SAAS,GAAG,mBAAmB,CACnC,QAAQ,EACR,WAAW,CAAC,cAAc,EAC1B,OAAO,EACP,SAAS,CAAC,EAAE,EACZ,OAAO,CACR,CAAA;YACD,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAA;YAC/B,OAAO,YAAY,CACjB,SAAS,EACT,OAAO,EACP,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EACtC,KAAK,CAAC,QAAQ,CACf,CAAA;QACH,CAAC;QACD,YAAY,CAAC,KAAK;YAChB,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QACrD,CAAC;QACD,kBAAkB,EAAE,aAAa,CAAC,QAAQ;QAC1C,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE;YAC/E,eAAe,CAAC,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QACpF,CAAC;QACD,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI;YAC3E,eAAe,CAAC,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAA;QAChG,CAAC;QACD,oBAAoB,CAAC,WAAW,EAAE,IAAI;YACpC,eAAe,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QACzD,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
|