finch-multi-agent 0.1.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 +162 -0
- package/dist/index.js +1976 -0
- package/i18n/en-US.json +88 -0
- package/i18n/zh-CN.json +88 -0
- package/icon.png +0 -0
- package/icons/agents.svg +9 -0
- package/package.json +91 -0
package/README.md
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# finch-multi-agent
|
|
2
|
+
|
|
3
|
+
Run a job as a team of sub-agents — inside the conversation you are already in.
|
|
4
|
+
|
|
5
|
+
You describe what you want in plain language. Finch splits it into subtasks, starts one
|
|
6
|
+
worker Session per subtask, and runs them in parallel. Each worker hands its result back as
|
|
7
|
+
an **artifact** — an immutable, content-hashed snapshot — instead of pasting it into someone
|
|
8
|
+
else's chat. A versioned run report and an explicit handoff graph keep the whole thing
|
|
9
|
+
auditable after the fact.
|
|
10
|
+
|
|
11
|
+
There is no extra window to learn: the tool runs in the current conversation, every task is
|
|
12
|
+
tied to its own Session, and the answer comes back where you asked.
|
|
13
|
+
|
|
14
|
+
## What it is good for
|
|
15
|
+
|
|
16
|
+
- **Parallel research** — one worker per source, topic, competitor or document, then one
|
|
17
|
+
synthesis step.
|
|
18
|
+
- **Multi-module review** — one reviewer per file, package, or subsystem, each with its own
|
|
19
|
+
fresh context window.
|
|
20
|
+
- **Batch processing** — translate, summarise, or classify a pile of items in parallel.
|
|
21
|
+
- **Multi-stage drafting** — outline → sections → editorial pass, where each stage consumes
|
|
22
|
+
the previous stage's artifact through an explicit handoff.
|
|
23
|
+
|
|
24
|
+
It is **not** a fit for small jobs, tightly coupled work, or anything that needs fast
|
|
25
|
+
back-and-forth — a single agent is cheaper and faster there.
|
|
26
|
+
|
|
27
|
+
## How you use it
|
|
28
|
+
|
|
29
|
+
Just ask, the way you normally would:
|
|
30
|
+
|
|
31
|
+
> Split this into parallel sub-agents: research the three competitors in `docs/market/`,
|
|
32
|
+
> one worker each, then have a fourth worker compare them into a single positioning brief.
|
|
33
|
+
|
|
34
|
+
> Review each of these four packages in its own sub-agent, then collect the findings.
|
|
35
|
+
|
|
36
|
+
> Translate these six pages at the same time and merge them into one file.
|
|
37
|
+
|
|
38
|
+
Finch plans the subtasks, starts them, tells you which are still running, and reads the
|
|
39
|
+
results back when you ask for the final answer. You never have to say "use
|
|
40
|
+
`multi_agent_run`".
|
|
41
|
+
|
|
42
|
+
## What you get back
|
|
43
|
+
|
|
44
|
+
- **One Session per task — all of them, right away.** Every worker Session is created the
|
|
45
|
+
moment you dispatch, including the ones that must wait for an upstream worker. They all
|
|
46
|
+
nest under the conversation you asked in and share a batch label, so the batch stays
|
|
47
|
+
together in your session list instead of scattering across it.
|
|
48
|
+
- **Titles that say who is doing what.** Each worker's session title reads
|
|
49
|
+
`<role> · <what it is doing>` — “竞品调研 · 摸清三家定价”, not “定价情况”. You can tell
|
|
50
|
+
what a worker is up to from the session list alone.
|
|
51
|
+
- **One call, live progress.** Dispatching waits for the batch and reports progress while it
|
|
52
|
+
waits, so you are not watching an agent wake up every minute to ask “done yet?”. If a batch
|
|
53
|
+
outlives one call, the assistant keeps waiting on it rather than handing the job back to you
|
|
54
|
+
— you only hear about it when it is actually done.
|
|
55
|
+
- **Real deliverables.** The finished answer is assembled from the workers' published
|
|
56
|
+
artifacts, with the artifact ids and content hashes listed so you can tell whether two
|
|
57
|
+
results are byte-identical.
|
|
58
|
+
|
|
59
|
+
## Changing course mid-run
|
|
60
|
+
|
|
61
|
+
From your side there are only ever two steps: you ask, you get the answer. The planning,
|
|
62
|
+
parallel execution and waiting all happen inside one continuous chain of tool calls, and
|
|
63
|
+
Finch keeps waiting on the workers rather than handing the job back to you to babysit.
|
|
64
|
+
|
|
65
|
+
If you interrupt with a new direction — "actually, drop the Cursor research and look at
|
|
66
|
+
Cline instead" — the run bends instead of restarting. The affected subtasks are stopped,
|
|
67
|
+
their replacements are queued into the **same** run, and anything that was waiting on them
|
|
68
|
+
carries on with the new result. Workers you didn't touch are never disturbed, and the
|
|
69
|
+
shared report keeps its history.
|
|
70
|
+
|
|
71
|
+
## Choosing models
|
|
72
|
+
|
|
73
|
+
By default every worker uses your normal app default model, and you can ask for a specific
|
|
74
|
+
one in plain language: *"use Opus for the reasoning tasks, a fast model for the rest."*
|
|
75
|
+
Finch looks up your actually-enabled models first, maps what you said onto a real
|
|
76
|
+
`provider:model` key, and assigns it per task. If a name doesn't match anything, it says so
|
|
77
|
+
instead of quietly using the default.
|
|
78
|
+
|
|
79
|
+
Set a standing preference under **Settings → Default worker model**: the row shows the chosen
|
|
80
|
+
model and its provider, and opens a submenu grouped provider → model. Pick "Follow app
|
|
81
|
+
default" to go back.
|
|
82
|
+
|
|
83
|
+
## Notes
|
|
84
|
+
|
|
85
|
+
- Run state is kept in a local SQLite database inside the mini tool's own storage folder —
|
|
86
|
+
nothing leaves your machine, and no network access is requested.
|
|
87
|
+
- Workers run with automatic permission handling so an unattended run does not stall; a
|
|
88
|
+
genuinely dangerous operation still waits for you.
|
|
89
|
+
- Requires Finch 1.6.4 or newer.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
# finch-multi-agent(中文)
|
|
94
|
+
|
|
95
|
+
把一件事交给一支子智能体小队——就在你当前这个对话里完成。
|
|
96
|
+
|
|
97
|
+
你用自然语言说明想要什么,Finch 会把它拆成子任务,为每个子任务启动一个 worker 会话并行执行。
|
|
98
|
+
每个 worker 交出的是**产物**(不可变、带内容哈希的快照),而不是往别人的对话里粘贴一段回复。
|
|
99
|
+
整轮任务的报告以带版本号的文档维护,交接关系也被显式记录下来,事后可以完整追溯。
|
|
100
|
+
|
|
101
|
+
没有额外的窗口要学:工具就在当前对话里执行,每个任务绑定自己的会话,答案回到你提问的地方。
|
|
102
|
+
|
|
103
|
+
## 适合什么场景
|
|
104
|
+
|
|
105
|
+
- **并行调研** —— 每个来源 / 主题 / 竞品 / 文档一个 worker,最后再汇总一步。
|
|
106
|
+
- **多模块审查** —— 每个文件、包或子系统一个 reviewer,各自拥有全新的上下文窗口。
|
|
107
|
+
- **批量处理** —— 并行翻译、摘要、分类一批条目。
|
|
108
|
+
- **多阶段起草** —— 提纲 → 分节 → 统稿,每一阶段通过显式交接消费上一阶段的产物。
|
|
109
|
+
|
|
110
|
+
它**不适合**小任务、强耦合的工作,以及需要快速来回确认的事情——那些场景单智能体更快也更省。
|
|
111
|
+
|
|
112
|
+
## 怎么用
|
|
113
|
+
|
|
114
|
+
像平常一样提要求就行:
|
|
115
|
+
|
|
116
|
+
> 把这件事拆给多个子智能体并行做:调研 `docs/market/` 里的三家竞品,每家一个 worker,
|
|
117
|
+
> 再由第四个 worker 把它们综合成一份定位简报。
|
|
118
|
+
|
|
119
|
+
> 这四个包各用一个子智能体审查,然后把结论收集起来。
|
|
120
|
+
|
|
121
|
+
> 这六页同时翻译,最后合并成一个文件。
|
|
122
|
+
|
|
123
|
+
Finch 会自己规划子任务、派发执行、告诉你哪些还在跑,并在你要最终答案时把结果读回来。
|
|
124
|
+
你不需要说出 `multi_agent_run` 这个名字。
|
|
125
|
+
|
|
126
|
+
## 能拿到什么
|
|
127
|
+
|
|
128
|
+
- **每个任务一个会话,而且一开始就建好。** 发起的那一刻,所有 worker 会话(包括要等上游的)
|
|
129
|
+
就都创建好了,统一挂在当前对话下面、带上同一批次的标签,因此这批会话会稳稳聚在一起,
|
|
130
|
+
而不会散落在会话列表各处。
|
|
131
|
+
- **标题说清谁在干什么。** 每个 worker 的会话标题都写成「角色 · 在做什么」——
|
|
132
|
+
「竞品调研 · 摸清三家定价」,而不是「定价情况」。光看会话列表就知道它在忙什么。
|
|
133
|
+
- **一次调用,进度实时。** dispatch 会自己等完整批并实时汇报进度,不用看着 agent 每分钟
|
|
134
|
+
醒一次问「好了吗」。如果一批活超出了一次调用的等待窗口,助手会接着继续等,
|
|
135
|
+
而不是把活退回给你——真正跑完了它才来汇报。
|
|
136
|
+
- **真正的产出。** 最终答案由各个 worker 发布的产物拼装而成,并列出产物 id 与内容哈希,
|
|
137
|
+
因此可以判断两份结果是否逐字节一致。
|
|
138
|
+
|
|
139
|
+
## 中途改方向
|
|
140
|
+
|
|
141
|
+
对你来说永远只有两步:提问 → 拿到结果。规划、并行执行、等待都在一条连续的调用链里完成,
|
|
142
|
+
Finch 会一直盯到出结果,而不是把活退回给你看着。
|
|
143
|
+
|
|
144
|
+
如果你中途插话改方向——比如「Cursor 那路别查了,换成 Cline」——这一轮会跟着拐弯,而不是重开:
|
|
145
|
+
受影响的子任务被掐掉,替代任务排进**同一轮**,原本在等它的下游直接改用新结果。
|
|
146
|
+
你没碰过的 worker 完全不受影响,整轮报告的来龙去脉也还在。
|
|
147
|
+
|
|
148
|
+
## 模型选择
|
|
149
|
+
|
|
150
|
+
默认情况下所有 worker 都用你应用里的默认模型。你也可以用自然语言指定:
|
|
151
|
+
"推理类任务用 Opus,其余用快一点的模型"。Finch 会先查你**真正启用的**模型列表,
|
|
152
|
+
把你说的名字映射成真实的 `provider:model` 键,再按任务分配。如果名字匹配不上,
|
|
153
|
+
它会明说,而不是悄悄用默认模型。
|
|
154
|
+
|
|
155
|
+
想固定一个偏好,就在 **设置 → 默认工作模型** 里选:这一行会显示当前选的模型和它的 provider,
|
|
156
|
+
点开是「provider → 模型」的两级子菜单;选「跟随应用默认」即可还原。
|
|
157
|
+
|
|
158
|
+
## 说明
|
|
159
|
+
|
|
160
|
+
- 任务状态保存在小程序自己存储目录下的本地 SQLite 数据库里——数据不出本机,也不申请网络权限。
|
|
161
|
+
- worker 采用自动权限处理,避免无人值守时卡住;真正危险的操作仍然会等你确认。
|
|
162
|
+
- 需要 Finch 1.6.4 或更高版本。
|