AI 日报hiw3c.com

Show HN:Recurse -更快地开发和部署专业代理

原文标题 · Show HN: Recurse – Develop and deploy specialist agents faster
Hacker News Top recurse.run 网页快照
正文为英文,可一键机器翻译(仅首次需要等待)

Name the problem. Set the bar. Build the agent.

When generalist agents fall short, equip them with a serverless harness to create custom agents and deploy them as tools, MCPs, or bots.

$5 of runs on us. Every new account starts funded. No card required.

apiVersion : recurse.run/v1alpha1 kind : Agent agent : prompt : prompt.md inputs : type : object properties : query : {type: string} speedup : type : number default : 2 task : type : string default : Optimize {{ input.query }}. outputs : type : object required : [result] properties : result : {type: string} tools : source : tools.py built_in : true register : search : ~ verify : ~

01 A stable contract

The engine refuses a manifest it does not recognize.

02 Define the job

The full manifest pins identity and runtime; the prompt defines what this agent does.

03 Specify the interface

The input schema validates each run, applies defaults, and resolves the full input before the model sees it.

04 A contractual result

Every successful run returns values that match the complete output schema.

05 Only the relevant tools

Cut the noise, only register pertinent functions to become tools alongside Recurse’s built-ins.

› Reconstruct the backpack in the photo. Start with primitives: get the proportions.

Level designer

Writes levels in your native schema, simulates each one, and reads the playthrough back. Failed pacing or reachability checks change the next layout; only levels that pass the simulation reach your editor.

RNA sequence designer

Designs candidate RNA sequences, measures their minimum-energy folds, and repairs only the bases implicated by each mismatch. When the search stalls, the parent agent changes the specialist rather than supplying an answer.

$ recurse run ./agent ── ⚡ tools.search() ── │ ├── verify() │ └── return result ── > _ ready ── ░▒▓ ██ ▓▒░ ── $ recurse run ./agent ── ⚡ tools.search() ── │ ├── verify() │ └── return result ── > _ ready ── ░▒▓ ██ ▓▒░ ── $ recurse run ./agent ── ⚡ tools.search() ── │ ├── verify() │ └── return result ── > _ ready ── ░▒▓ ██ ▓▒░ ── $ recurse run ./agent ── ⚡ tools.search() ── │ ├── verify() │ └── return result ── > _ ready ── ░▒▓ ██ ▓▒░ ── $ recurse run ./agent ── ⚡ tools.search() ── │ ├── verify() │ └── return result ── > _ ready ── ░▒▓ ██ ▓▒░ ── $ recurse run ./agent ── ⚡ tools.search() ── │ ├── verify() │ └── return result ── > _ ready ── ░▒▓ ██ ▓▒░ ──

│ task.plan() ── ✓ candidate 07 ── ⟩ measure() ── ⚙ revise ── ▓▒░ ░▒▓ ── > await score ── │ task.plan() ── ✓ candidate 07 ── ⟩ measure() ── ⚙ revise ── ▓▒░ ░▒▓ ── > await score ── │ task.plan() ── ✓ candidate 07 ── ⟩ measure() ── ⚙ revise ── ▓▒░ ░▒▓ ── > await score ── │ task.plan() ── ✓ candidate 07 ── ⟩ measure() ── ⚙ revise ── ▓▒░ ░▒▓ ── > await score ── │ task.plan() ── ✓ candidate 07 ── ⟩ measure() ── ⚙ revise ── ▓▒░ ░▒▓ ── > await score ── │ task.plan() ── ✓ candidate 07 ── ⟩ measure() ── ⚙ revise ── ▓▒░ ░▒▓ ── > await score ──

⟩ agent.build() ── █ manifest.pin ── ├── inputs.validate() ── │ outputs.check ── ░░▒▒▓▓██ ── $ recurse deploy --as mcp ── ⟩ agent.build() ── █ manifest.pin ── ├── inputs.validate() ── │ outputs.check ── ░░▒▒▓▓██ ── $ recurse deploy --as mcp ── ⟩ agent.build() ── █ manifest.pin ── ├── inputs.validate() ── │ outputs.check ── ░░▒▒▓▓██ ── $ recurse deploy --as mcp ── ⟩ agent.build() ── █ manifest.pin ── ├── inputs.validate() ── │ outputs.check ── ░░▒▒▓▓██ ── $ recurse deploy --as mcp ── ⟩ agent.build() ── █ manifest.pin ── ├── inputs.validate() ── │ outputs.check ── ░░▒▒▓▓██ ── $ recurse deploy --as mcp ── ⟩ agent.build() ── █ manifest.pin ── ├── inputs.validate() ── │ outputs.check ── ░░▒▒▓▓██ ── $ recurse deploy --as mcp ──

├── search.sample() ── ⚡ score 0.91 ── │ └── keep ── > score 0.87 · discard ── ▒▓██▓▒ ── $ recurse status ── ├── search.sample() ── ⚡ score 0.91 ── │ └── keep ── > score 0.87 · discard ── ▒▓██▓▒ ── $ recurse status ── ├── search.sample() ── ⚡ score 0.91 ── │ └── keep ── > score 0.87 · discard ── ▒▓██▓▒ ── $ recurse status ── ├── search.sample() ── ⚡ score 0.91 ── │ └── keep ── > score 0.87 · discard ── ▒▓██▓▒ ── $ recurse status ── ├── search.sample() ── ⚡ score 0.91 ── │ └── keep ── > score 0.87 · discard ── ▒▓██▓▒ ── $ recurse status ── ├── search.sample() ── ⚡ score 0.91 ── │ └── keep ── > score 0.87 · discard ── ▒▓██▓▒ ── $ recurse status ──

│ contract.hold ── ✓ tool.register ── ⟩ run_9fd3c2 ── ⚙ prompt.revise ── ░▒▓ ▓▒░ ── > agent.idle ── │ contract.hold ── ✓ tool.register ── ⟩ run_9fd3c2 ── ⚙ prompt.revise ── ░▒▓ ▓▒░ ── > agent.idle ── │ contract.hold ── ✓ tool.register ── ⟩ run_9fd3c2 ── ⚙ prompt.revise ── ░▒▓ ▓▒░ ── > agent.idle ── │ contract.hold ── ✓ tool.register ── ⟩ run_9fd3c2 ── ⚙ prompt.revise ── ░▒▓ ▓▒░ ── > agent.idle ── │ contract.hold ── ✓ tool.register ── ⟩ run_9fd3c2 ── ⚙ prompt.revise ── ░▒▓ ▓▒░ ── > agent.idle ── │ contract.hold ── ✓ tool.register ── ⟩ run_9fd3c2 ── ⚙ prompt.revise ── ░▒▓ ▓▒░ ── > agent.idle ──

⟩ candidate 08 ── █ artifacts: 1 ── ├── test.validate ── │ loop.continue ── ██▓▒░░▒▓ ── $ codex mcp add recurse ── ⟩ candidate 08 ── █ artifacts: 1 ── ├── test.validate ── │ loop.continue ── ██▓▒░░▒▓ ── $ codex mcp add recurse ── ⟩ candidate 08 ── █ artifacts: 1 ── ├── test.validate ── │ loop.continue ── ██▓▒░░▒▓ ── $ codex mcp add recurse ── ⟩ candidate 08 ── █ artifacts: 1 ── ├── test.validate ── │ loop.continue ── ██▓▒░░▒▓ ── $ codex mcp add recurse ── ⟩ candidate 08 ── █ artifacts: 1 ── ├── test.validate ── │ loop.continue ── ██▓▒░░▒▓ ── $ codex mcp add recurse ── ⟩ candidate 08 ── █ artifacts: 1 ── ├── test.validate ── │ loop.continue ── ██▓▒░░▒▓ ── $ codex mcp add recurse ──

$ claude mcp add recurse ── ⚡ deploy mcp_7fc21a ── │ ├── endpoint.ready │ └── specialist.serve ── > _ complete ── ░▒▓██▓▒░ ── $ claude mcp add recurse ── ⚡ deploy mcp_7fc21a ── │ ├── endpoint.ready │ └── specialist.serve ── > _ complete ── ░▒▓██▓▒░ ── $ claude mcp add recurse ── ⚡ deploy mcp_7fc21a ── │ ├── endpoint.ready │ └── specialist.serve ── > _ complete ── ░▒▓██▓▒░ ── $ claude mcp add recurse ── ⚡ deploy mcp_7fc21a ── │ ├── endpoint.ready │ └── specialist.serve ── > _ complete ── ░▒▓██▓▒░ ── $ claude mcp add recurse ── ⚡ deploy mcp_7fc21a ── │ ├── endpoint.ready │ └── specialist.serve ── > _ complete ── ░▒▓██▓▒░ ── $ claude mcp add recurse ── ⚡ deploy mcp_7fc21a ── │ ├── endpoint.ready │ └── specialist.serve ── > _ complete ── ░▒▓██▓▒░ ──

│ stable contract ── ✓ adaptive execution ── ⟩ measure.track() ── ⚙ agent.reflect ── ▓▒░ ██ ░▒▓ ── > loop.end ── │ stable contract ── ✓ adaptive execution ── ⟩ measure.track() ── ⚙ agent.reflect ── ▓▒░ ██ ░▒▓ ── > loop.end ── │ stable contract ── ✓ adaptive execution ── ⟩ measure.track() ── ⚙ agent.reflect ── ▓▒░ ██ ░▒▓ ── > loop.end ── │ stable contract ── ✓ adaptive execution ── ⟩ measure.track() ── ⚙ agent.reflect ── ▓▒░ ██ ░▒▓ ── > loop.end ── │ stable contract ── ✓ adaptive execution ── ⟩ measure.track() ── ⚙ agent.reflect ── ▓▒░ ██ ░▒▓ ── > loop.end ── │ stable contract ── ✓ adaptive execution ── ⟩ measure.track() ── ⚙ agent.reflect ── ▓▒░ ██ ░▒▓ ── > loop.end ──

$5 on us. Every new account starts with credit for your first runs.

Build a custom agent for your work

Your coding agent builds it; Recurse runs it. Talk with the founders about your use case.