Repository navigation
feat: add actor-orchestrator-skill - #90
metalwarrior665 wants to merge 2 commits into
Conversation
|
Compared this against what apify-orchestrator does (details in Slack: https://apify.slack.com/archives/C0C2J6FE4QJ/p1790091211275669). A few gaps in the "must have" section that agent-written code will get wrong on its own:
Most of these should end up in the SDK eventually, but until then the skill is the spec, so it should be explicit about them. |
|
Thanks for the review, will update
Makes sense as additional safety.
I think agents are good enough to do this right. We can measure later. I always try to give less context rather than more.
I don't agree with default auto retry, think that is a bad call from the lib. This might be a separate skill. This skills only focuses on how to write the Actor calling but doesn't teach how to choose Actors, how to replace them etc. In this case, the agent should check the error and decide if to adjust something or swap to different Actor, not make assuptions upfront. I will add a small note.
Can give hint but if it happens, agent should discuss with user.
Not sure why lib starts new runs. Timed out and failed should not be handled without prior agent check, will mention
It is battle tested, no reason to suggest more of them. Moving to Apify makes sense. |
The library retries only if it fails to start a run due to lack of memory/concurrency (opt out). It doesn't retry failed runs, that's up to the orchestrating user.
I agree that resurrection would be the best option. The library doesn't do it just because nobody requested it so far. Some observations:
|
I think this will be very rare, you can run tens of thousands input URLs still ok. Normally you don't pass around full output, you extract with
It doesn't really need to see anything. The run normally stops and it continues to process the data. The agent will expect this because it knows the price of events. Imagine that user starts the orchestrator with $5. The agent will build the orchestrator so that the budget is distributed for each step to follow the other. E.g. Actor 1 will get $1 to produce 1000 restuls, those are passed to Actor 2 that gets $3 to convert 1000 input to 3000 results and last one gts $1.
It probably only cares about few fields being present but yeah it should double check that. |
| - Hitting account memory limit throw with `error.type === 'actor-memory-limit-exceeded'` | ||
| - Hitting concurrent runs limit throw with `error.type === 'concurrent-runs-limit-exceeded'` |
There was a problem hiding this comment.
Nit:
| - Hitting account memory limit throw with `error.type === 'actor-memory-limit-exceeded'` | |
| - Hitting concurrent runs limit throw with `error.type === 'concurrent-runs-limit-exceeded'` | |
| - Hitting account memory limit throws with `error.type === 'actor-memory-limit-exceeded'` | |
| - Hitting concurrent runs limit throws with `error.type === 'concurrent-runs-limit-exceeded'` |
|
Hi, some parts are already discussed above, but I am sharing feedback on the skill based on my tests mentioned in the slack: Retry a failed step, and say what was lost. No guidance on retrying a child run that failed, or on reporting what a failed step lost. I am not sure, if we want to make this part of the skill. Stream results from a running child Every Actor that was built with the skill calls Re-run one step alone In the skill, we have explicitly "should not rerun started runs", but this will harm re-running one step, such as step 2 after fixing its transformation, while keeping step 1's results. -- Claude Code reported more things, but I see these things as the most important - again, maybe some of them should be handled by SDK, or some of them are not important right now. |
|
I addressed the comments. I see work has already been done in some clients. Once that is merged across them, I will simplify this. For now, we can keep it as internal document. |
gullmar
left a comment
There was a problem hiding this comment.
LGTM! Just a couple of observations.
No description provided.