mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-11-14 02:29:33 +01:00
docs(skill): say where opencode was measured, and the rc 3 leftover
The opencode readiness and marker measurements were made on Linux, not on a Mac, and the docs now say so. A worker whose pane ends after it wrote its answer file but before the marker matched answers 3 with no answer: the rc 3 row now says the file may still be in its folder. The example's input folder is named input, so the prompt reads cleanly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0a0ebfd274
commit
d358e611d9
6 files changed
+20
-20
No files matched your search
@@ -366,7 +366,7 @@ spawn_worker() {
|
||||
# reaches the API, so it is named per agent here. opencode: `┃`, its `workDetect.promptGlyph`.
|
||||
# That field is no readiness mark in general (the registry keeps `composerReadyMark` for
|
||||
# that, and declares none for opencode), but at boot only the composer draws it: measured
|
||||
# on opencode 1.3.0, fresh home, custom provider, the first `┃` came with the composer,
|
||||
# on opencode 1.3.0 on Linux, fresh home, custom provider, the first `┃` came with the composer,
|
||||
# and a prompt pasted with its Enter at that moment was submitted. claude takes the claude
|
||||
# path below. Any other agent needs LOCAL_READY_MARK rather than a worker handed back on a guess.
|
||||
[ "$mode" = opencode ] && mark='┃'
|
||||
@@ -579,7 +579,7 @@ sendwait() {
|
||||
# instruction while it plans. That is why the answer FILE is the second gate. ⚠️ And a
|
||||
# full-screen agent can print the marker without it ever matching: opencode redraws its
|
||||
# spinner between the pieces a model streams, so the stripped stream reads D⬝⬝O⬝⬝N⬝⬝E_⬝⬝m…
|
||||
# (measured on opencode 1.3.0 with a reply streamed a character or two at a time; the screen
|
||||
# (measured on opencode 1.3.0 on Linux, a reply streamed a character or two at a time; the screen
|
||||
# showed the whole token). So the file is also the way out WITHOUT the marker: present, not
|
||||
# empty, and unchanged between two rounds of the marker wait (rounds of at most 10 s), it is
|
||||
# read and `matched` says false. It is read from this machine's disk, only when it is a
|
||||
@@ -870,8 +870,8 @@ Reach for it when:
|
||||
local_model || exit 1 # one JSON line: model, agent, endpoint; or the reason there is none
|
||||
SID=$(spawn_worker summ local) || exit 1 # starts a stopped runtime first; empty = failed
|
||||
WD=$("${CURL[@]}" "$API/api/v1/sessions/$SID" | jq -r .data.workingDir)
|
||||
mkdir -p "$WD/in" && cp ./docs/*.md "$WD/in/" # inside its own folder (§5.9), apart from its CLAUDE.md
|
||||
R=$(sendmark "$SID" 'Summarize each .md file in the folder in, two lines each' 900); RC=$?
|
||||
mkdir -p "$WD/input" && cp ./docs/*.md "$WD/input/" # inside its own folder (§5.9), apart from its CLAUDE.md
|
||||
R=$(sendmark "$SID" 'Summarize each .md file in the folder input, two lines each' 900); RC=$?
|
||||
jq -r '.answer // "(no answer)"' <<<"$R"
|
||||
if [ "$RC" = 0 ]; then delete_session "$SID" >/dev/null
|
||||
else echo "kept $SID (sendmark rc $RC: 2 no answer yet, 3 ended, 4 no answer file): $R"; fi
|
||||
|
||||
@@ -228,7 +228,7 @@ spawn_worker() {
|
||||
# reaches the API, so it is named per agent here. opencode: `┃`, its `workDetect.promptGlyph`.
|
||||
# That field is no readiness mark in general (the registry keeps `composerReadyMark` for
|
||||
# that, and declares none for opencode), but at boot only the composer draws it: measured
|
||||
# on opencode 1.3.0, fresh home, custom provider, the first `┃` came with the composer,
|
||||
# on opencode 1.3.0 on Linux, fresh home, custom provider, the first `┃` came with the composer,
|
||||
# and a prompt pasted with its Enter at that moment was submitted. claude takes the claude
|
||||
# path below. Any other agent needs LOCAL_READY_MARK rather than a worker handed back on a guess.
|
||||
[ "$mode" = opencode ] && mark='┃'
|
||||
@@ -441,7 +441,7 @@ sendwait() {
|
||||
# instruction while it plans. That is why the answer FILE is the second gate. ⚠️ And a
|
||||
# full-screen agent can print the marker without it ever matching: opencode redraws its
|
||||
# spinner between the pieces a model streams, so the stripped stream reads D⬝⬝O⬝⬝N⬝⬝E_⬝⬝m…
|
||||
# (measured on opencode 1.3.0 with a reply streamed a character or two at a time; the screen
|
||||
# (measured on opencode 1.3.0 on Linux, a reply streamed a character or two at a time; the screen
|
||||
# showed the whole token). So the file is also the way out WITHOUT the marker: present, not
|
||||
# empty, and unchanged between two rounds of the marker wait (rounds of at most 10 s), it is
|
||||
# read and `matched` says false. It is read from this machine's disk, only when it is a
|
||||
|
||||
@@ -866,8 +866,8 @@ confirms in the window, and no route this skill calls can do it.
|
||||
session's model). It fails the spawn with the answer on stderr and nothing on stdout,
|
||||
and no `confirmed*` flag is ever sent.
|
||||
5. Readiness: OpenCode's composer bar `┃` (its registry `promptGlyph`) through
|
||||
`wait-output`, 45 s, and the session deleted on a miss. Measured on OpenCode 1.3.0 with
|
||||
a fresh home and a custom provider: nothing draws `┃` before the composer, there was no
|
||||
`wait-output`, 45 s, and the session deleted on a miss. Measured on OpenCode 1.3.0 on
|
||||
Linux (not yet on a Mac) with a fresh home and a custom provider: nothing draws `┃` before the composer, there was no
|
||||
first-run screen, and a prompt pasted with its Enter at the first `┃` was submitted. A
|
||||
claude agent takes the claude path instead (hooks vetted, `shift+tab`, the trust
|
||||
dialog). Any other agent needs `LOCAL_READY_MARK` set to a space-free token its
|
||||
@@ -888,7 +888,7 @@ an end-of-turn signal ([§5.5](#55-markers-for-hook-less-workers)):
|
||||
- ⚠️ A full-screen agent can print the marker without it ever matching. OpenCode redraws
|
||||
its spinner between the pieces a model streams, so with a reply streamed a character or
|
||||
two at a time the stripped stream read `D⬝⬝O⬝⬝N⬝⬝E_⬝⬝m…` while the screen showed the whole
|
||||
token (measured on OpenCode 1.3.0). So between rounds it also looks at the answer file:
|
||||
token (measured on OpenCode 1.3.0 on Linux). So between rounds it also looks at the answer file:
|
||||
once it is non-empty and its checksum held still from one round to the next, it is read
|
||||
and the wait ends with `matched: false`.
|
||||
|
||||
@@ -896,7 +896,7 @@ an end-of-turn signal ([§5.5](#55-markers-for-hook-less-workers)):
|
||||
|------|------|---------|
|
||||
| 0 | `answer` holds the file | the file was read: after the marker (`matched: true`), or once it held still (`matched: false`) |
|
||||
| 2 | `matched: false` | neither the marker nor a settled file before the timeout. The worker may still be working: re-check the pane, never resend blindly |
|
||||
| 3 | `ended: true` or `delivered: false` | the worker's pane ended |
|
||||
| 3 | `ended: true` or `delivered: false` | the worker's pane ended. A pane that ended after it wrote the file but before the marker matched leaves `codeman-answer-<token>.md` in its folder: look there yourself |
|
||||
| 4 | `matched: true, answer: null` | the marker printed, but no file within `SENDMARK_FILE_WAIT` s (default 120): the model ignored the instruction, or a reasoning model restated the marker while planning and is still at work |
|
||||
| 1 | `detail` | the send or a wait failed |
|
||||
|
||||
|
||||
Reference in new issue
Block a user