@asermax/pi-tentacles 0.0.0-stage → 1.0.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 +51 -2
- package/extension/index.js +17593 -0
- package/package.json +34 -4
- package/skills/tentacles/SKILL.md +55 -0
- package/tentacles-helper +37827 -0
package/package.json
CHANGED
|
@@ -1,6 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asermax/pi-tentacles",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Spawn, steer, question and collect remote coding agents that run in tentacles.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"pi-package",
|
|
9
|
+
"pi-extension",
|
|
10
|
+
"remote-agents",
|
|
11
|
+
"subagents",
|
|
12
|
+
"tentacles"
|
|
13
|
+
],
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/asermax/tentacles.git",
|
|
17
|
+
"directory": "apps/plugin"
|
|
18
|
+
},
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"extension/",
|
|
24
|
+
"skills/",
|
|
25
|
+
"tentacles-helper",
|
|
26
|
+
"README.md"
|
|
27
|
+
],
|
|
28
|
+
"pi": {
|
|
29
|
+
"extensions": [
|
|
30
|
+
"./extension/index.js"
|
|
31
|
+
],
|
|
32
|
+
"skills": [
|
|
33
|
+
"./skills"
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tentacles
|
|
3
|
+
description: Send separable, long work to remote agents that run in tentacles, and steer, question and collect them.
|
|
4
|
+
---
|
|
5
|
+
# Remote agents
|
|
6
|
+
|
|
7
|
+
Remote agents are coding-agent sessions that run in tentacles, away from your machine. Each one has its own workspace, with the repository you name in its settings cloned into it, and the agent keeps running after you close your session. You reach them only through the tentacles tools. You cannot read their screen, type into them, or see their files.
|
|
8
|
+
|
|
9
|
+
Use the tentacles tools: `tentacles_spawn`, `tentacles_prompt`, `tentacles_messages`, `tentacles_wait`, `tentacles_list`, `tentacles_close` and `tentacles_answer`. When you have nothing else to do, call `tentacles_wait`. It blocks until a remote agent stops.
|
|
10
|
+
|
|
11
|
+
## When to send work to a remote agent
|
|
12
|
+
|
|
13
|
+
Send a remote agent work that is separable and long: a feature on its own branch, a migration, an investigation that needs a clean checkout. Each one costs a container and a model, so prefer a few remote agents with clear tasks over many small ones.
|
|
14
|
+
|
|
15
|
+
A remote agent only keeps what it commits and pushes. Its workspace is disposable, so give it a repository it can push to, and ask for the result as a branch or a pull request, not as files.
|
|
16
|
+
|
|
17
|
+
## Spawn
|
|
18
|
+
|
|
19
|
+
`spawn` takes a name, the first prompt, the session's settings and, optionally, skills and agent definitions (see Skills and agents). The name shows in your status line, so name it after the agent's task. The settings you leave out come from the plugin's defaults.
|
|
20
|
+
|
|
21
|
+
Write the first prompt for someone who has not seen this conversation: the goal, the repository, the branch to push, and what done looks like. Name the repository in the settings when the agent has to work in it, so tentacles clones the repository and, before the agent asks you anything, checks it for work that is not pushed.
|
|
22
|
+
|
|
23
|
+
## Skills and agents
|
|
24
|
+
|
|
25
|
+
`spawn` takes `skills`, the paths of skill folders on your machine, each holding a `SKILL.md`, and `agents`, the paths of agent definition files. The remote agent sees each skill and agent by name and description, loads a skill when a task matches it, and starts subagents from its agent definitions by name. A prompt can name a skill as `/skill:<name>` or `/<name>` on its own, with a space or the start or end of the prompt on each side, and the remote agent reads that skill's instructions before acting on it.
|
|
26
|
+
|
|
27
|
+
Skills and agents are fixed at spawn. Include everything the job needs, and spawn a new remote agent when the job needs a different set.
|
|
28
|
+
|
|
29
|
+
Every definition is checked on your machine before anything is sent. When any fails, `spawn` creates nothing and returns every problem with its path, the skills' problems in one group and the agents' in another. Fix them all, then spawn again. An agent definition's frontmatter `name` has to equal its file name without `.md`.
|
|
30
|
+
|
|
31
|
+
A remote agent works on its own, so a skill that would stop to ask the person has nobody to ask. Write the handoff so the remote agent decides wherever a skill would stop for the user, ignores any instruction in a skill to ask the user, and lists every such decision in its final report. For a stop point it cannot decide, such as a credential it lacks, say in the handoff what to do, which can be asking you with its question tool.
|
|
32
|
+
|
|
33
|
+
## Being woken
|
|
34
|
+
|
|
35
|
+
You are woken when a remote agent stops. The wake carries the agent's last message when it finishes, the reason when it fails, and the question when it asks one. You never poll. If you think a wake was missed, run `list`.
|
|
36
|
+
|
|
37
|
+
## Questions
|
|
38
|
+
|
|
39
|
+
A remote agent asks with its question tool and waits for the answer. Answer with `answer`, passing the question's id. Answer it yourself when you can; when the decision is the human's, ask them and answer once they reply. A prompt you send while a question waits does not answer the question. The agent receives the prompt after the question is answered.
|
|
40
|
+
|
|
41
|
+
## Prompt
|
|
42
|
+
|
|
43
|
+
`prompt` sends a follow-up or a steer. A follow-up waits for the current run to end; a steer reaches the agent at its next step. Prompting a closed session reopens it.
|
|
44
|
+
|
|
45
|
+
## Messages
|
|
46
|
+
|
|
47
|
+
`messages` returns the last entries of the agent's conversation, the last one by default. Read the last message before judging a result, and ask for more only when you need the steps that led to it.
|
|
48
|
+
|
|
49
|
+
## Close
|
|
50
|
+
|
|
51
|
+
Close a remote agent once you have its result. Closing aborts what it is doing and hides it from your status line. It stays in `list`, and for a month after its last run you can reopen it with a prompt.
|
|
52
|
+
|
|
53
|
+
## Listing remote agents
|
|
54
|
+
|
|
55
|
+
`list` returns every remote agent you started from this session, closed ones included, with its status, its settings and the names of its skills and agents. A forked session starts with none.
|