Releases: betyourluck/Fuseforks
Release list
Outcasts Fuseforks v0.1.12
✨ What's new
🔍 Perplexity as a first-class provider — with four provider-specific skills
A seventh wire, Provider::PerplexityResponses, speaks Perplexity's Agent API directly. Registering a Perplexity model now offers four toggles under provider-specific skills:
- Web search — grounded answers with real source URLs
- Finance search — market and company data
- People search — person and profile lookup
- URL fetch — read a specific page
Sources come back as an actual URL list (Perplexity returns them as search_results, which the app now maps into the grounding note — previously the note could only say "no sources were returned"). Perplexity is also the only wire that reports the actual dollar cost of a request; it lands in the log as tool_cost_usd= on pplx tools: lines.
A practical observation: with all four skills ON, the model picks tools loosely — finance questions sometimes get answered from web search. Turning ON only the skill a servant is for (one template per purpose) keeps the tool choice honest. That is why the toggles are four separate switches rather than one.
Small fixes
- Double-clicking Start no longer fires twice. While a servant is transitioning, the power button and the batch controls' stop side are disabled
- The animated dashed tie only flows when both ends are running. Previously one running end was enough, which misread as "these two are talking"
📦 Install via winget
Fuseforks is now in the official winget repository:
winget install --id Outcasts.Fuseforks
winget upgrade --id Outcasts.Fuseforks
macOS (Apple Silicon): brew install --cask betyourluck/tap/fuseforks
⚠️ What you take on
- Perplexity's search tools bill per request on Perplexity's side (roughly $0.0025 per search plus tokens). The actual amount is visible in the log, but the app's budget ceiling counts tokens, not dollars
- Keep one purpose per template. All four skills ON works, but tool selection is then up to the model and can drift
✨ 変更点
🔍 Perplexity が正式対応になり、固有スキルが 4 本付きました
7 本目のワイヤ Provider::PerplexityResponses が Perplexity の Agent API を直接話します。Perplexity のモデルを登録すると、固有スキルとして 4 本のトグルが現れます:
- Web 検索 — 実在する出典 URL つきの接地された回答
- 金融検索 — 市場・企業データ
- 人物検索 — 人物・プロフィールの照会
- URL 取得 — 指定したページを読む
出典は実 URL の一覧で返ります(Perplexity は search_results という形で返すため、それまで接地の注記は「参照元は返ってきていません」としか言えませんでした)。また Perplexity は要求の実額(USD)を返す唯一の口で、ログの pplx tools: 行に tool_cost_usd= として残ります。
運用の観察を 1 つ: 4 本すべて ON にすると、ツールの選択がモデル任せでバラけます — 金融の質問が web 検索で答えられることがあります。使う 1 本だけ ON にした用途別テンプレートにすると選択が安定します。トグルを 1 本にまとめず 4 本に割ってあるのはこのためです。
小さな修正
- 起動ボタンの二度押しが効かなくなりました。 遷移中は電源ボタンと一括操作の停止側を無効化します
- 絆の破線のアニメーションは、両端が稼働しているときだけ流れます。 片端だけで流れると「この 2 体が話している」と誤読できました
📦 winget で入るようになりました
公式リポジトリに登録されました:
winget install --id Outcasts.Fuseforks
winget upgrade --id Outcasts.Fuseforks
macOS (Apple Silicon): brew install --cask betyourluck/tap/fuseforks
⚠️ 利用者が負う条件
- Perplexity の検索ツールは Perplexity 側で要求ごとに課金されます(概ね検索 1 回 $0.0025 + トークン)。実額はログで読めますが、アプリの予算の天井はトークン建てで、ドルは数えません
- テンプレートは用途ごとに分けてください。 4 本すべて ON でも動きますが、ツールの選択がモデル任せになって揺れます
Outcasts Fuseforks v0.1.11
✨ What's new
💵Statistics now show approximate cost
The statistics screen has a cost estimate. Register a model's prices — input, output, cache read, cache write, and optionally the 1-hour cache write rate — and the totals gain an ≈ $ line.
Prices live on the model template, so they travel with the village. The Fetch button in the model registration dialog pulls a price table from a URL you can change or empty in System settings › Cost management. It is fetched only when you press the button — the app never reaches out on its own.
The estimate is labelled ≈ and comes with a coverage line, on purpose. Coverage is reported on two axes — how many servants have prices, and what share of tokens they account for. The first real measurement here read 5/7 servants · 99.9% of tokens: by headcount it looks like a third is missing, by tokens it looks complete. Either number alone would mislead.
Two accuracy fixes underpin this:
- Cache writes are now counted separately across all six wires. Measurement showed that what the app had been calling "uncached input" was almost entirely cache writes (100.0% on Anthropic, 99.8% on OpenAI-compatible). Writes cost more than reads, so the earlier numbers understated input cost — on Anthropic models by about 1.6×
- Per-servant totals are now keyed by (servant, model). Previously a servant that changed models had all of its turns folded into whichever model it used last, which put the wrong price on every earlier turn
🗨️"All conversations" in statistics is now a monthly total
Lifetime totals grow forever, and the longer you use the village the harder it becomes to read "what did last month cost." The all-conversations view now shows one closing month at a time, with ◀ ▶ to walk backwards and a toggle to go back to the lifetime total.
The closing day is set in System settings › Cost management (1–28 or end-of-month, default end-of-month) and is stored on your machine, not in the village. Days 29–31 are not offered — February has no 30th, and allowing it would require a second rule for what happens that month.
Closing day 1 is not the same as end-of-month. Day 1 gives you 7/2–8/1; end-of-month gives 8/1–8/31. Rather than explain that, the settings page shows the current period live, right under the selector.
🌊Plan review — check the plan before the wave goes out
Off by default. Existing villages behave exactly as before.
Turn on Plan review for a servant and its plan calls stop before dispatch: the plan is shown in the work-status pane, where you can edit each task's text, delete tasks, and then Dispatch or Discard.
What the mechanism buys you is not convenience — you could already ask a coordinator to propose a plan in prose and wait for your go-ahead. What that cannot give you is identity between what you saw and what runs: after your approval the model rewrites the plan arguments, so the plan you approved and the plan that executes are two different objects. Here the data you looked at is dispatched directly. The model is not on the path after approval.
The turn does not block while it waits for you. The proposal ends the turn normally, and your approval starts a new causal chain — which means the wave gets a fresh token budget and a fresh cancel scope, and the bundled results come back to the coordinator as a new turn.
⏰️Delegation wait time is configurable, and circular delegation is refused instantly
The wait for a delegated answer was a fixed 180 seconds. One clock was doing two opposite jobs — waiting long enough for a deep investigation, and breaking out of two servants delegating to each other. Deep research lost that argument: investigations that take minutes were being discarded, and the worker kept running, so the answer was produced, billed, and thrown away.
The two jobs are now separate:
- Cycles are refused structurally. Each envelope carries the chain of servants currently waiting. If a delegation targets someone already in that chain, it is refused immediately — not queued, not waited on. The refusal explains itself and tells the model what to do instead, so it can change course in the same round
- The clock is now a safety net, not a cycle breaker. The default is 600 seconds, adjustable from 30 to 3600 in System settings › Cost management. It is stored in the village, so it travels with it
A delegation that took 206 seconds now returns its full 2,849-character answer instead of being discarded at 180.
🛠Smaller changes
- The editor understands
Ctrl+S,Ctrl+F, andCtrl+R.Ctrl+Ssaves (subject to the same conditions as the Save button), the search panel is translated, andCtrl+Rwhile the editor has focus no longer reloads the window and discards what you were writing - A Chinese README (
README_zh.md) - Manually entered prices now save. They were being dropped silently — a number-typed input hands the setter a number even without the
.numbermodifier, and the string-only setter died on it. Only the empty field, which arrives as a string, was getting through - The log records which build touched the village — a
version: app=… profile=…line at startup reply:lines carryrefusal=yes|no, a plain observation of whether a reply took the shape of a refusal. It has no effect on routing
⚠️ What you take on
- If you drive this village from an MCP client, add a
timeoutto your.mcp.json. The default wait is now 600 seconds, which is longer than the default client-side timeout — without it your client gives up before the village does - Do not open this village with an older build. Older versions do not know the price fields, drop them as unknown, and write the file back without them — silently. The startup line added in this release lets you tell afterwards which build touched it, but it does not prevent the loss. If you have both the MSI and the NSIS installer on one machine, they share the same village
- The cost figure is an estimate. It is a token count multiplied by prices you entered. Tiered pricing, per-request minimums, and provider-side discounts are not modelled — the
≈and the coverage line are there to say so - Turns recorded before v0.1.11 have no cache-write figure, so their cost reads low. This fades as new turns accumulate; nothing was built to correct it
- The price table is fetched from an external URL when you press Fetch. The default host sees the request and your IP. You can point it elsewhere or clear it
✨ 変更点
💵統計におおよその金額が出ます
統計画面に金額の推定が付きました。モデルごとの単価 — 入力・出力・キャッシュ読み出し・キャッシュ書き込み、任意で 1 時間キャッシュの書き込み — を登録すると、集計に ≈ $ の行が増えます。
単価はモデルテンプレートに住むので、村を配ると一緒に付いて回ります。モデル登録ダイアログの「取得」ボタンが単価表を取りに行き、その取得先はシステム設定 › コスト管理で変更も空にもできます。押したときだけ取りに行き、アプリが自分から外部へ問い合わせることはありません。
推定であることを ≈ と被覆率で明示しています。 被覆率は 2 軸 — 単価が登録されているサーヴァントの数と、その個体が占めるトークンの割合です。最初の実測は 5/7 体・トークン 99.9% で、体数だけ見れば「3 割欠けている」、トークンだけ見れば「揃っている」と読めます。 片方だけでは嘘になります。
これを支える精度の修正が 2 つ入っています:
- キャッシュ書き込みを 6 つのワイヤすべてで別に数えるようにしました。 実測すると、それまで「未キャッシュ入力」として扱っていたものはほぼ全部がキャッシュ書き込みでした(Anthropic で 100.0%、OpenAI 互換で 99.8%)。書き込みは読み出しより単価が高いので、それまでの数字は入力コストを過小に出しており、Anthropic のモデルでは 約 1.6 倍のずれがありました
- 個体ごとの集計を (個体, モデル) の組で数えるようにしました。 以前はモデルを切り替えた個体の全ターンが最後に使ったモデルに畳まれており、それ以前のターンに違う単価が当たっていました
🗨️統計の「全会話」が月ごとの集計になりました
生涯の累計は増え続けるので、使い込むほど「先月いくらだったか」が読めない数字に育ちます。全会話の表示を締め月 1 か月ぶんに変え、◀ ▶ で前の月へ遡れるようにしました。生涯累計へ戻すトグルもあります。
締め日はシステム設定 › コスト管理で選びます(1〜28 日または月末。既定は月末)。保存先は端末で、村には入りません。29〜31 日を選べないのは、2 月に存在しない日を許すと「その月はどうなるか」という規則がもう 1 つ必要になるためです。
締め日 1 は月末と同じではありません。 1 日締めは 7/2〜8/1、月末締めは 8/1〜8/31 です。これを説明文で伝える代わりに、選択肢のすぐ下に「今の期間」をライブで表示しています。
🌊計画の確認 — 波を撒く前に計画を見る
既定は OFF です。既存の村の挙動は 1 ミリも変わりません。
サーヴァントの設定で「計画の確認」を ON にすると、その個体の plan は配送の手前で止まります。計画が作業状況ペインに提示され、各タスクの本文を書き換え、不要なものを削ってから「実行」または「破棄」を選べます。
この機構が買っているのは手間の削減ではありません — 「まず計画を文章で出して、承認を待ってから撒け」と条例に書くことは以前からできました。それでは得られないのが「見た計画と走る計画が同じものである」ことです。承認の後にモデルが plan の引数を書き直すので、承認した計画と実行される計画が別物になりえます。この機構では人が見たデータがそのまま配送され、承認後の経路に LLM は居ません。
ターンの中で人を待ちません。 提示でターンは正常に終わり、承認が新しい因果の起点になります。つまり波には新しいトークン予算と打ち切りの範囲が与えられ、束ねた結果は新しいターンとして進行役へ届きます。
⏰️委譲の待ち時間を設定できるようになり、循環する委譲は即座に拒否されます
委譲した答えを待つ時間は 180 秒の固定値でした。1 本の時計が逆向きの 2 つの仕事を担っていたことになります — 深い調査を待ち切ることと、互いに委譲し合う 2 体から抜け出すことです。負けていたのは調査の側で、分単位の調査が捨てられ、しかも相手のターンは止まらないので、答えは作られ、課金され、届かずに捨てられていました。
2 つの仕事を分けました:
- 輪は構造で拒否します。 依頼の封筒が「いま答えを待っているサーヴァントの連鎖」を運び、その連鎖に居る相手へ委譲しようとすると即座に拒否されます(受信箱に積まれず、待ちも発生しません)。拒否には理由と次の手が書かれているので、モデルは同じ周で進路を変えられます
- 時計は保険へ格下げしました。 既定は 600 秒で、システム設定 › コスト管理から 30〜3600 秒の範囲で変えられます。保存先は村なので、配ると一緒に付いて回ります
206 秒かかった委譲が、180 秒で捨てられずに 2,849 字の答えを返すようになりました。
🛠細かい変更
- エディタが
Ctrl+S/Ctrl+F/Ctrl+Rを理解します。Ctrl+Sで保存でき(条件は保存ボタンと同じ)、検索パネルが日本語になり、エディタにフォーカスがある間のCtrl+Rは画面を再読み込みして書きかけを消すことがなくなりました - 中国語の README を追加しました(
README_zh.md) - 手で入力した単価が保存されるようになりました。 それまで黙って捨てられていました —
type="number"の入力欄は.number修飾子が無くても数値を渡すため、文字列前提の処理がそこで死んでおり、文字列で届く空欄だけが通っていました - どの版が村を触ったかがログに残ります — 起動時に
version: app=… profile=…の 1 行を出します reply:の行にrefusal=yes|noが付きます。 返信が断りの形をしていたかどうかの観測で、配送には一切影響しません
⚠️ 利用者が負う条件
- MCP クライアントからこの村を使っている場合は、
.mcp.jsonにtimeoutを書き足してください。 既定の待ち時間が 600 秒になり、クライアント側の既定より長くなったため、書かないとクライアントが先に諦めます - この村を古い版で開かないでください。 古い版は単価の欄を知らないため未知のフィールドとして捨て、そのまま書き戻して消します。警告は出ません。 この版で足した起動行のおかげで後からどの版が触ったかは読めますが、消えること自体は防げません。MSI と NSIS のインストーラを同じ端末に両方入れている場合、2 つは同じ村を共有します
- 金額はあくまで推定です。 トークン数に入力された単価を掛けたもので、段階課金・要求ごとの最低額・提供元の割引は考慮していません。
≈と被覆率の行はそれを言うために付いています - v0.1.11 より前に記録されたターンにはキャッシュ書き込みの数字がないため、金額が低めに出ます。新しいターンが積まれるにつれ薄まります。これを補正する機構は作っていません
- 単価表は「取得」を押したときに外部の URL から取得します。 既定の配信元には要求の事実と IP が残ります。取得先は変更も空にもできます
Outcasts Fuseforks v0.1.9
What's new
macOS builds are now signed and notarized
No application code changed in this release. What changed is how the macOS build is distributed.
Until now the .dmg and .app were neither signed nor notarized. macOS attaches a quarantine attribute to downloaded files, so Gatekeeper refused to launch them — users met either "the app is damaged and can't be opened" or had to grant permission explicitly from System Settings.
From v0.1.9 the macOS artifacts are signed with a Developer ID Application certificate and notarized by Apple. They open on a double click.
Windows and Linux artifacts are unchanged, and the Windows installers are still unsigned. "Signed" here covers macOS only.
What you take on
- macOS is Apple Silicon only. There is no Intel Mac build. That was already true, but it was written down nowhere; this release states it in the README
- There are no feature changes and no bug fixes. If you are on Windows or Linux there is no reason to update
Scope of the change
.github/workflows/build.yml |
Signing and notarization wiring. It activates only when all five secrets are present; if any is missing the build proceeds unsigned and says so in the log |
README.md / README_jp.md |
States that macOS is Apple Silicon only. Drops the account of the move away from AGPL from the license section — the repository was already MPL-2.0 when it went public, so it answered a question no outside reader had |
CLAUDE.md |
Development notes |
変更点
macOS のビルドに署名と公証が付きました
この版でアプリの中身は 1 行も変わっていません。 変わったのは macOS の配布物の性質だけです。
これまでの .dmg / .app は署名も公証もされていませんでした。macOS はダウンロードしたファイルに検疫属性を付けるため、Gatekeeper が起動を拒み、利用者は「壊れているため開けません」という表示か、システム設定からの明示的な許可操作に突き当たっていました。
v0.1.9 からは Developer ID Application で署名し、Apple の公証を通したものを配布します。普通にダブルクリックで開きます。
Windows と Linux の配布物はこれまでどおりで、Windows のインストーラは署名されていません。 「署名した」の範囲は macOS だけです。
利用者が負う条件
- macOS は Apple Silicon 専用です。 Intel Mac 向けのビルドは存在しません。以前からそうでしたが、どこにも書いていませんでした。この版から README に明記しています
- アプリの機能・不具合修正はゼロです。 Windows か Linux をお使いなら、この版へ更新する理由はありません
変更の範囲
.github/workflows/build.yml |
署名と公証の配線。秘密が 5 つ揃ったときだけ有効になり、欠けていれば署名せずにその旨をログへ出します |
README.md / README_jp.md |
macOS が Apple Silicon 専用であることを明記。ライセンス節から AGPL からの変更経緯を削除(公開時点で既に MPL-2.0 だったため、外部の読み手が持っていない疑問への答えでした) |
CLAUDE.md |
開発側の記録 |
Outcasts Fuseforks v0.1.8
What's new
Stats view — read what this village has paid
Open it from the bar chart icon in the bottom bar, to the left of the clock. It
replaces the three panes wholesale and reads your spending by conversation ×
servant × how each turn ended × time.
- Units are tokens. Nothing is converted to currency — price tables cannot be
kept in step with each vendor's changes, and the same model costs different
amounts depending on the cache band. As one comparable number it reports
effective tokens (uncached ×1 + cached ×0.1 + output ×4) — the same weights
the budget ceiling already uses - Per servant: turns / failures / effective / average / cache rate / output share /
average latency, with the model name, so you can see which model costs what - A breakdown of how turns ended (completed / tool limit / failed:CODE /
interrupted / budget exhausted) - Effective tokens per turn as a time series
Failed turns now land in the village's numbers
A turn whose output hit the limit with an empty body was billed by the provider
yet appeared in neither the card totals, the budget, nor the turn log line. All
four turn exits (completed / failed / interrupted / budget) now settle, and the
stats view counts them. This closes the caveat from the v0.1.7 notes.
The budget ceiling now reserves
The ceiling check changed from "look at what's left" to "reserve the next call
first". When a coordinator fans out to nine servants, nine could previously slip
through with one token left (overshooting by a factor of the fan-out); now the
overshoot is bounded by the in-flight estimation error.
Also
turnlog lines end withmodel=(which model you paid, readable from the log alone)- Servant start / stop is recorded in the log
specs/tla/— TLA+ models that check the important invariants
What you take on with this version
- Stats recording starts with this version. Earlier conversations have no
stored numbers, so they show "no records" rather than zeros - Near the ceiling, part of a fan-out can be dropped. A servant that cannot
reserve stops for that turn and is not asked again automatically. If a
bundle comes back incomplete, raise the ceiling or fan out to fewer servants - "All conversations" lists conversation titles (the first 30 characters of each
request). Check what is on screen before sharing a screenshot of this view
変更点
統計画面 — この村がいくら払ったかを読む
最下段の帯、時計の左のグラフアイコンから開きます。3 ペインを丸ごと差し替える
全画面で、会話 × サーヴァント × ターンの終わり方 × 時間で払いを読めます。
- 単位はトークン。通貨には換算しません — 各社の価格改定に追従できず、同じ
モデルでもキャッシュの帯で単価が変わるため。比較できる 1 つの数字として
実効トークン(未キャッシュ ×1 + キャッシュ ×0.1 + 出力 ×4)を出します。
これは予算の天井が使っているのと同じ重みです - サーヴァントごとに ターン数 / 失敗 / 実効 / 平均 / キャッシュ率 / 出力の割合 /
平均所要 が並びます。モデル名つきなので、どの機種が高いかがそのまま読めます - 終わり方の内訳(完走 / ツール上限 / 失敗:CODE / 打ち切り / 予算切れ)
- ターンごとの実効トークンを時系列の棒で
失敗したターンの払いが、村の数字に入るようになりました
出力上限で本文が空になったターンは、プロバイダには課金されているのに
カードの累計にも予算にも turn 行にも出ていませんでした。今はターンの
4 つの出口(完走 / 失敗 / 打ち切り / 予算切れ)すべてで清算され、統計にも出ます。
v0.1.7 のノートに書いた「失敗したターンの払いは予算に計上されない」は解消しました。
予算の天井が予約制になりました
天井の検査が「残っているか見るだけ」から「次の 1 呼び出しぶんを先に確保する」形に
変わりました。並列委譲で 9 体へ撒いたとき、以前は残り 1 トークンでも 9 体が同時に
通り抜けられた(超過が人数倍になりえた)のが、飛行中の見積もり誤差の範囲に収まります。
そのほか
turn行の末尾にmodel=(どの機種で払ったかがログだけで分かる)- サーヴァントの起動・停止をログに残す
specs/tla/— 重要な不変条件を TLA+ のモデルで検査する仕組み
この版で利用者が負う条件
- 統計の記録はこの版から始まります。 それより前の会話には数字が保存されて
いないので、開くと「記録がありません」と出ます。0 ではありません - 天井の近くでは、並列委譲の一部が欠けることがあります。 予約が確保できな
かったサーヴァントはそのターンで止まり、自動では頼み直しません。束ねに
欠けが出たら、天井を上げるか、撒く人数を減らしてください - 統計の「全会話」は会話のタイトル(依頼文の先頭 30 字)を一覧で出します。
この画面を撮って共有するときは、何が写るかを確認してください
Outcasts Fuseforks v0.1.7
What's new
(This release supersedes v0.1.6 and includes everything from it.)
Kizuna, the map of your servants, has been rebuilt
- The map is drawn by a new engine. Nodes are now round portraits with a name — nothing else
- Drag a node to place it. Positions are saved, so the arrangement you make is the arrangement you get back. Nothing rearranges itself behind you
- Hover a node for its profile — a readout panel in the top-right shows the model, status, tokens, connections and RAG folders. It appears only while you hover, so the map stays clear
- The selected servant grows and takes a bright ring. Selection no longer moves anything
- Ties read at a glance — bidirectional ties are thick, one-way ties are thin, and a tie leading out of a running servant animates
- The dotted background is back, and Fit / auto-fit sit at the bottom left of the map
- What left the node is not lost. Model name, role badge and token count were removed from the map because all three are already on the card in the left pane
One thing the map never actually did
- The on-screen help said you could draw a tie by dragging between node handles. That operation never existed — the handles were never drawn, so there was nothing to drag. The text has been corrected
- There are two ways to draw a tie, and both still work exactly as before: drag a servant card onto a node in the map, or tick the connection checkboxes in the servant's settings
Tokens spent on a turn that failed at the output limit are now written to the log
- When a reply is cut off at the output limit and nothing usable comes back, the turn fails with a named reason. The tokens that were already paid for now appear in
fuseforks.log(truncated:with the input, cached, output and thinking counts) - Please read this part. Those tokens are not added to the servant's token total and not subtracted from the token ceiling — but your provider does bill them. A servant whose "max output tokens" is set too low can keep failing while the ceiling never moves. If you see the truncation message repeatedly, raise the limit or split the request
- Counting them properly is a separate change we have not made yet, because "was this actually billed?" has a different answer for each kind of failure
Small note on the thinking level
- For Anthropic models the thinking level you pick in the model template is not sent — that provider is asked to think adaptively instead, and it fits its thinking to the output limit you set. The setting still works for the other connections
変更点
(この版は v0.1.6 を置き換えるもので、その内容をすべて含みます。)
サーヴァントの絆(地図)を作り直しました
- 描画の仕組みを入れ替えました。ノードは丸いアバターと名前だけになります
- ノードはドラッグで動かせます。 位置は保存されるので、並べたとおりに戻ってきます。勝手に並び替わることはありません
- ノードにマウスを載せると詳細が出ます — 右上のパネルにモデル・状態・トークン・接続数・RAG フォルダ数。載せている間だけ出るので、地図が塞がりません
- 選択したサーヴァントは大きくなり、明るい輪が付きます。 選択で配置が動くことはありません
- 絆は見ただけで分かります — 双方向は太く、一方向は細く、稼働中のサーヴァントから出ている絆は流れます
- 点描の背景が戻り、フィットと自動フィットは地図の左下にあります
- ノードから消えた情報は失われていません。 モデル名・役職バッジ・トークン数を地図から外したのは、3 つとも左のカードに載っているからです
実は一度もできなかった操作が 1 つありました
- 画面の案内に「ノードのハンドル同士をドラッグして絆を結ぶ」と書いていましたが、その操作は存在しませんでした。ハンドルが描かれていなかったので、掴むものが無かったのです。案内文を直しました
- 絆の張り方は 2 つで、どちらも今までどおり動きます — サーヴァントのカードを地図のノードへドロップする / サーヴァントの設定で接続先にチェックを入れる
出力上限で失敗したターンの払いが、ログに出るようになりました
- 返答が出力上限で切れて何も返らなかったとき、ターンは理由付きで失敗します。そのとき既に払っているトークン数が
fuseforks.logに出るようになりました(truncated:の行に入力・キャッシュ・出力・思考の内訳) - ここはお読みください。 そのトークンはサーヴァントの累計にも加算されず、トークン制限からも引かれませんが、接続先の課金は発生しています。「最大出力トークン」を小さくしすぎたサーヴァントは、制限が減らないまま失敗し続けることがあります。切り詰めのメッセージが繰り返し出るときは、上限を上げるか依頼を分けてください
- 正しく計上する変更はまだ入れていません。「本当に課金されたのか」が失敗の種類ごとに違うためです
思考の深さについて 1 点
- Anthropic のモデルでは、モデル登録で選んだ思考の深さが送られていません。あちらには「枠に合わせて考える」形で依頼しており、設定した出力上限に合わせて思考量が決まります。他の接続先では今までどおり効きます
Outcasts Fuseforks v0.1.5
What's new
Attach audio, video and PDFs — not just images
-
Until now you could only attach images. From this release you can also attach audio, video and PDF files, and servants read them directly
-
Not every destination can carry every kind. Fuseforks checks this before the message is sent and tells you which kinds the servant's model can take, so you find out at the input box rather than from a confusing answer
Connection Image Audio Video PDF OpenAI-compatible ✓ ✓ — ✓ Anthropic ✓ — — ✓ Gemini (native) ✓ ✓ ✓ ✓ xAI Responses ✓ — — ✓ OpenAI Responses ✓ — — ✓ Meta Responses (new) ✓ ✓ ✓ ✓ -
Attachments are expensive. A 10 MB PDF can consume roughly a quarter of the default one-million-token ceiling in a single turn. The size limit is checked in bytes, not tokens, so a file that passes the check can still be very large in tokens
-
An attachment rides one turn only. It is not resent on later turns. If you need it again, attach it again — and if you ask a servant to pass it on to another servant, it will tell you it no longer holds the file rather than forwarding an empty message
-
If a servant receives a message whose attachment its model cannot carry, the message still arrives with a note explaining what was dropped. In our field test the sending servant read that note and transcribed the image into words so the other servant could still work with it
A sixth connection: Meta (api.meta.ai) with web search
- Fuseforks can now talk to Meta's native endpoint. Choose Meta native (Responses) in the model template
- Web search is available and can be switched on per template. When sources come back, they are shown with the answer
- When no sources come back, Fuseforks says so plainly — "no sources were returned; URLs in the text could not be confirmed as citations." In our field test three out of four searches returned no sources, so this distinction matters: the search ran, but nothing was verifiable
- Search makes a request much larger. Measured input grew roughly five-fold on the turns that searched. With search off, request size does not move
- This connection carries all four attachment kinds — the second one that does, alongside Gemini
Please read this before attaching files to a Meta servant
- Files you attach are uploaded to Meta and stored on their side with no expiry. This is not specific to the new connection — images sent through the OpenAI-compatible endpoint to Meta are stored the same way
- Fuseforks itself keeps nothing extra and sends nothing anywhere else, but what leaves your machine for Meta stays there. Treat confidential material accordingly
Smaller things
- The thinking level you choose is honoured per connection. Meta's scale stops one step below the top level Fuseforks offers, so choosing "maximum" now uses Meta's highest setting instead of failing the request
- If a reply is cut off because the output limit was reached, the servant reports it by name — with the current limit and what to do about it — instead of returning an empty answer. The servant stays running; only that one request fails
変更点
画像だけでなく、音声・動画・PDF も貼れるようになりました
-
これまで添付できたのは画像だけでした。この版から 音声・動画・PDF も貼れて、サーヴァントがそのまま読みます
-
接続先によって運べる種別が違います。 Fuseforks は送信する前にそれを確かめ、その個体のモデルが受け取れない種別なら入力欄の時点で知らせます(答えが変になってから気づく形にしないためです)
接続先 画像 音声 動画 PDF OpenAI 互換 ✓ ✓ — ✓ Anthropic ✓ — — ✓ Gemini ネイティブ ✓ ✓ ✓ ✓ xAI Responses ✓ — — ✓ OpenAI Responses ✓ — — ✓ Meta Responses(新) ✓ ✓ ✓ ✓ -
添付は高くつきます。 10 MB の PDF は 1 ターンで既定の天井(100 万トークン)の 4 分の 1 ほどを使うことがあります。大きさの制限はバイト数で見ていてトークン数では見ていないので、制限を通ったファイルでもトークンでは非常に大きいことがあります
-
添付が渡るのはそのターンだけです。次のターンには持ち越されません。もう一度必要なら貼り直してください。別のサーヴァントへ渡すよう頼んだ場合も、「手元にもう画像がない」と答えます(黙って中身のない依頼を転送しません)
-
モデルが運べない添付が届いたときは、何が落ちたかを添えて本文だけが届きます。実例では、渡す側のサーヴァントがその注記を読んで画像の内容を文章に書き起こして渡し、受け取った側はそれを使って作業を続けました
6 つ目の接続先:Meta(api.meta.ai)と web 検索
- Meta のネイティブ接続に対応しました。モデル登録で 「Meta ネイティブ(Responses)」 を選びます
- web 検索が使えます(テンプレートごとに ON / OFF)。出典が返ってきたときは答えと一緒に表示します
- 出典が返らなかったときは、返らなかったと正直に書きます —「参照元は返ってきていません(本文に URL があっても、出典としては確認できていません)」。実例では 4 回の検索のうち 3 回は出典が返りませんでした。検索は走っているが裏は取れていない、という区別が要るためです
- 検索すると要求が大きく膨らみます。 実測で、検索した回の入力はおよそ 5 倍でした。検索を切っている個体では膨らみません
- この接続先は 4 種別すべてを運びます(Gemini に次いで 2 つ目です)
Meta へファイルを貼る前にお読みください
- 貼ったファイルは Meta 側へアップロードされ、期限なしで保存されます。これは新しい接続先に限った話ではなく、OpenAI 互換の口から Meta へ送った画像も同じように残ります
- Fuseforks 自身は余計なものを持たず、他のどこへも送りませんが、Meta へ渡ったものは向こうに残ります。秘匿情報の扱いにはご注意ください
細かい変更
- 思考の深さの指定が接続先ごとに正しく効くようになりました。Meta の段階は Fuseforks が用意する最上位より 1 つ下までなので、「最大」を選んだときは Meta の最上位を使います(以前はその要求が失敗していました)
- 出力の上限に達して答えが途中で切れた場合、空の答えを返すのではなく、上限に達したことと現在の上限値、次にどうすればよいかを名指しで報告します。サーヴァントは停止しません — 失敗するのはその 1 件だけです
Outcasts Fuseforks v0.1.4
What's new
The language setting now controls how Fuseforks speaks to your servants
- Until now the language setting only switched the UI. From this release, everything Fuseforks itself says to the servants — their role framing, tool descriptions, conversation protocol, and the sender envelope — follows the village's language too
- LLMs tend to reply in whichever language dominates their input, so an English village now gets an English-speaking core. In our field test, a servant in a fresh village answered an English request in English, used its tools, and ran a two-agent parallel delegation with an English bundle, end to end
- Japanese villages do not change by a single byte. Nothing was translated in place — the English text is a second set, selected by the setting (and byte-equality of the Japanese set is enforced by tests)
- Your ordinance, Construct and SKILL files are your assets; Fuseforks never touches them. If you run an English village, we recommend writing those in English as well. A village with Japanese assets may still reply in Japanese under the English setting — that is expected: the words written into the village outweigh the core's
- System lines in the conversation log (arrivals, departures, and so on) are written in the language at the moment of recording and are never retranslated. If you switch languages, older lines keep their original language
- No new settings were added. The existing "Language" setting does all of this, and a fresh install on an English OS starts in English automatically
run no longer hangs on interactive-style commands like ssh
- Asking a servant to run
sshcould stall for about 107 seconds and fail, even though the connection had succeeded — Windows OpenSSH never received end-of-input, so the remote shell kept waiting - Programs that read standard input now correctly see "no input". The same
sshcall returns cleanly in about a second
Sender-envelope spoofing protection now covers English forms
- The neutralization of forged sender envelopes written into a message body (in place since v0.0.7) now also covers the English forms (
【Sender: …】and variants) - It is always active regardless of the language setting. This is the only behavior change for Japanese villages
The core crate was renamed to fuseforks-core
- The old name
agent-corewas already taken on crates.io and easily confused with an AWS service of the same name. Nothing changes in the app's behavior, settings, or data — only the folder name in the repository
変更点
サーヴァントへの指示が、言語設定に従うようになりました
- これまで言語設定が切り替えるのは画面の表示だけでした。この版から、Fuseforks がサーヴァントへ渡す指示(役割の説明・道具の説明・手順の案内・発話の封筒)も日本語と英語で切り替わります
- LLM は入力に多い言語で返しがちなので、英語の設定なら村全体が英語へ寄ります。実例では、空の村に作ったサーヴァントが英語の依頼に対して英語で答え、道具を使い、2 体への分担と束ねまで英語で完走しました
- 日本語の村は 1 バイトも変わりません。 翻訳で置き換えたのではなく、英語をもう 1 本書いて設定で選ぶ形です(このことはテストが機械的に保証しています)
- 条例・Construct・SKILL はあなたの資産なので、Fuseforks は触りません。 英語の村を運用するなら、それらも英語で書くことをおすすめします。日本語の資産を持つ村では、英語設定でも日本語で返ることがあります — これは想定内で、村に書かれた言葉の量が答えの言語を決めるためです
- 会話ログの System 行(入退室など)は記録した時点の言語で書かれ、後から訳し直しません。言語を切り替えた村では古い行が古い言語のまま残ります
- 新しい設定は増えていません。既存の「言語」がそのまま効き、英語 OS の新規利用者は設定なしで英語になります
ssh のような対話型コマンドで run が固まらなくなりました
- サーヴァントに
sshを実行させると、接続に成功したまま約 107 秒固まって失敗することがありました(Windows の OpenSSH が入力の終わりを受け取れず、接続先がずっと待っていました) - 入力を待つプログラムへ「入力は無い」が正しく伝わるようにしました。同じ
sshが 1 秒で正常に返ります
発話の偽造対策を英語の形にも広げました
- 本文に送り手の封筒を書き込んで別人を装う偽造への無害化(v0.0.7 から入っています)が、英語形(
【Sender: …】など)も対象になりました - 言語設定に関係なく常に効きます。日本語の村の動作が変わる唯一の点です
中核クレートを fuseforks-core に改名しました
- 旧名
agent-coreは crates.io で既に別のクレートに使われており、AWS の同名サービスとも紛らわしいためです。アプリの動作・設定・データに影響はありません(変わるのはリポジトリのフォルダ名だけです)
Outcasts Fuseforks v0.1.3
変更点
モデルが「考えた内容」を画面に出せるようになりました
- 答えの吹き出しの下に 「思考の要約」 を畳んで置きます。押すと開きます
- 接地(グラウンディング)とは別の枠にしてあります。出典は後から確かめられる外部への指し先、要約はモデル自身の申告なので、同じ枠に並べると後者に前者の信用が乗ってしまうためです
- Anthropic / Gemini / xAI / OpenAI ネイティブで出ます。要約が返らなかったターンは枠ごと出ません
- 要約は英語で返ります(日本語で尋ねても)。返ってくる量は提供事業者によって大きく違い、Gemini は思考の 7〜8 割を返しますが、xAI と Anthropic は 1 割未満です
思考に使ったトークン数が読めるようになりました
- サーヴァントのカードと集計に出る数に加え、診断ログの
turn行へreasoning=が付きます - 4 社すべてで取れます(Anthropic / Gemini / xAI / OpenAI 互換)
- 「返事が空なのに料金だけかかった」ターンの正体が読めます — たとえば claude-sonnet-5 は何も指定しなくても既定で思考するため、出力の全部を思考に使い、本文を 1 文字も返さないことがあります。これまではその量がどこにも出ていませんでした
OpenAI ネイティブ(Responses)プロトコルに対応しました
モデル登録のプロトコルに OpenAI ネイティブ(Responses) を追加しました。選ぶと 3 つが使えるようになります。
- 思考の要約の本文が受け取れます(OpenAI 互換の口には数しか来ません)
- web 検索が使えます。調べたページの URL が出典として返ります
- 思考そのものが復活します。 OpenAI 互換の口はツールと思考を同時に使えないため、これまでツールを持たせているあいだは思考を止めて送っていました。切り替えると、ツールを呼びながら考えるようになります
固有スキルには「Pro 推論モード」も出ます。 難しい問いに計算を厚く積む設定で、公表のベンチマークでは terra が 23.3% → 28.5%(標準の sol 28.7% にほぼ並ぶ)でした。入力が毎回およそ 1,500 トークン増え、応答も遅くなります。
切り替えると 2 つ使えなくなります。 温度(temperature)は提供事業者が受け付けません。画像の添付は OpenAI 互換のプロトコルでしか送れないため、切り替えると画像が相手に届きません。どちらもモデル登録の画面に書いてあります。
既存の gpt-5 系のモデルは、切り替えるまで今までどおりです(自動では移りません)。プロトコルの選択欄の下に案内を 1 行出すようにしました。
会話を「渡してしまう」のを止められるようになりました
- サーヴァント設定のツール一覧に 「会話の転送」 が増えました。切ると、その個体は会話ごと相手へ渡すことをしなくなります。委譲(
ask)と分担(plan)は残るので、誰かに頼むことは今までどおりできます - 修正: 進行役から仕事を頼まれたサーヴァントが、答える代わりに会話を転送してしまうことがありました。頼んだ側には「答えが無かった」という定型文だけが返り、本当の答えは数分後に別の流れとして届くため、1 つの依頼が 2 本に分裂して見えていました。頼まれて答える立場のターンでは、設定に関わらず転送を出さないようにしました
黒板の付箋を画面から消せるようになりました
- 更新ボタンの左の消しゴムで全部、付箋ごとのごみ箱で 1 枚ずつ消せます
- 消し先は OS のごみ箱で、完全には削除しません。そのため全部消すときだけ確認を出し、1 枚ずつには出していません
- 作業フォルダを移したサーヴァントの付箋は、本人には届かない場所に残ります。これまで消す手段がファイルを直接削除することしかありませんでした
修正
- Windows で
runからコマンドが起動できないことがある問題を修正しました。環境変数を絞りすぎており、Windows 版 OpenSSH のように起動に必要な変数が足りず、出力を 1 文字も出さないまま失敗していました - 打ち切りやタイムアウトのあとも、起動したコマンドが動き続ける問題を修正しました。画面上は正常に止まったように見えるのに、実際のプロセスは走ったままでした
- サーヴァントのカードに出る失敗の理由を、クリックで閉じられるようにしました
- グラウンディングの参照元で、同じサイトの複数ページがすべて同じ表示になる問題を修正しました(サイト名にページの区別を足しました)
- 黒板タブの案内が古いフォルダ名のままだった箇所を直しました(日英)
その他
- プライバシーポリシーを追加しました(日本語・英語)。外部へ送るもの、端末に保存されるもの、API キーの置き場を実装に沿って書いてあります
- 診断ログの
turn行にbackend=(そのターンがどの接続方式を通ったか)を追加しました - 内部構造の整理を行いました(動作は変わりません)
検索を使うときのご注意
Grok の Live Search を有効にしたターンは、検索結果がプロンプトへ注ぎ込まれるぶん入力トークンが桁で増えます(実測 98,213 トークン / うちキャッシュ 62,720)。
OpenAI の web 検索は、検索しない依頼でも入力がおよそ 4,400 トークン増えます(ツールの宣言がプロンプトへ入るため)。2 回目以降はキャッシュに乗るので実質は 1/10 ほどです。
システム設定のトークン制限が小さい場合、検索 1 回で上限に達することがあります。
使い方
- お使いの OS のファイルをダウンロードしてインストールします
- Windows:
fuseforks_0.1.3_x64-setup.exe(またはfuseforks_0.1.3_x64_en-US.msi) - macOS:
fuseforks_0.1.3_aarch64.dmg(Apple Silicon 向けです) - Linux:
fuseforks_0.1.3_amd64.AppImage/fuseforks_0.1.3_amd64.deb/fuseforks-0.1.3-1.x86_64.rpm
- Windows:
- 起動します。API キーが未設定でもアプリは動きます(設定不備か実装不具合かを切り分けられるよう、エコー応答へ退避します)
- サーヴァント一覧のヘッダから 「モデル登録」 を開き、モデルとプロトコルを選んで API キーを貼り、
登録を押します。キーは OS の資格情報ストア(Windows 資格情報マネージャー / macOS キーチェーン / Secret Service)に保存され、設定ファイルには一切書かれません - 使い方は README、詳細は DETAIL.md を参照してください
※ コード署名を行っていないため、Windows では初回実行時に Microsoft Defender SmartScreen の警告が表示されることがあります。「詳細情報」→「実行」で起動できます。macOS でも「開発元が未確認」と表示される場合は、右クリック →「開く」で起動できます。
ライセンス
MPL-2.0
Outcasts Fuseforks v0.1.1
変更点
Grok の Live Search に対応
- モデル登録のプロトコルに xAI ネイティブ(Responses) を追加しました。これを選ぶと、そのモデルで Live Search(web) と Live Search(X) が使えます
- web 検索は、調べたページの URL が出典として返ります。Gemini の Google グラウンディングでは出典 URL が返ってこないため、この 2 つは表示の性質が違います
- X 検索は、投稿そのものの URL と反応の実数を返します。ただし返るのは「そう投稿された」という事実であって、内容の真偽ではありません
- web と X は別々のチェックボックスです。web だけを使うこともできます
モデル登録に「固有スキル」欄が付きました
- そのプロバイダにしかない機能を、プロトコルを選んだときだけまとめて表示します
- 設定を持たず常に効く機能(Anthropic のプロンプトキャッシュなど)は、チェックボックスではなく 「パッシブ」バッジで表示します
- 有効にしたまま別のプロトコルへ切り替えた場合は、効かなくなっている理由と直し方をその場に出します
グラウンディング表示の改善
- 接地に使ったエンジン名を正しく表示するようになりました(以前は Gemini 以外でも「Google 検索」と表示されていました)
- 出典が多いときに縦へ長く伸びないよう、件数を先に出して横に並べる形にしました
- X の投稿には X のマークが付きます
その他
- 修正: Gemini ネイティブから OpenAI 互換へプロトコルを戻したときに、base URL が書き換わってしまう問題を修正しました
- 修正: OpenAI 互換のまま Gemini / xAI の URL を指定していると、誤って「base URL が食い違っています」と警告が出る問題を修正しました
検索を使うときのご注意
Live Search を有効にしたターンは、検索結果がプロンプトへ注ぎ込まれるぶん入力トークンが桁で増えます(実測 98,213 トークン / うちキャッシュ 62,720)。システム設定のトークン制限が小さい場合、検索 1 回で上限に達することがあります。
使い方
- お使いの OS のファイルをダウンロードしてインストールします
- Windows:
fuseforks_0.1.1_x64-setup.exe(またはfuseforks_0.1.1_x64_en-US.msi) - macOS:
fuseforks_0.1.1_aarch64.dmg(Apple Silicon 向けです) - Linux:
fuseforks_0.1.1_amd64.AppImage/fuseforks_0.1.1_amd64.deb/fuseforks-0.1.1-1.x86_64.rpm
- Windows:
- 起動します。API キーが未設定でもアプリは動きます(設定不備か実装不具合かを切り分けられるよう、エコー応答へ退避します)
- サーヴァント一覧のヘッダから 「モデル登録」 を開き、モデルとプロトコルを選んで API キーを貼り、
登録を押します。キーは OS の資格情報ストア(Windows 資格情報マネージャー / macOS キーチェーン / Secret Service)に保存され、設定ファイルには一切書かれません - 使い方は README、詳細は DETAIL.md を参照してください
※ コード署名を行っていないため、Windows では初回実行時に Microsoft Defender SmartScreen の警告が表示されることがあります。「詳細情報」→「実行」で起動できます。macOS でも「開発元が未確認」と表示される場合は、右クリック →「開く」で起動できます。
ライセンス
MPL-2.0
Outcasts Fuseforks v0.1.0
Outcasts Fuseforks
ホビー向けのオーケストレーションツールです。
まだアーリーインストールかもしれません。
各 OS の installer を下からダウンロードしてください。