A stalled reply says it is asking again while Escape only goes Home
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 68/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- cli, testing-qa
Hướng nghiên cứu
Start with internal/session/loop.go:2694 and :2471, then inspect internal/tui3/failurerow.go:56 to trace both retry notices and Escape handling. Reproduce through codeaf chat in tmux with the provided stub.py, then add the requested unit and e2e coverage so the displayed promise and request state match Escape's actual effect; update the retry manual and invalidates.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Found on santos/dev2 at 008363c98 (#1410). It reaches dev when #1410 merges.
What happened
On a mid-reply stall, the person saw the model went quiet mid-reply — asking again. The documented wait line no answer N in T · still asking · esc stops was never drawn for that shape. In a conversation, Escape went Home while the re-ask continued in the background. The re-ask behavior is new relative to dev, whose corresponding hand test gave up after two attempts.
Replication
Deterministic (no model). A stub provider that sends one content chunk and then holds the connection open. Save it as stub.py:
# stub.py: a provider whose every reply is one content chunk.
# python3 stub.py cut -> then the connection closes (no finish_reason, no [DONE])
# python3 stub.py hold -> then the connection stays open for ten minutes
import json, sys, time
from http.server import ThreadingHTTPServer, BaseHTTPRequestHandler
MODE = sys.argv[1]
MODEL = "deepseek/deepseek-v4-flash"
class H(BaseHTTPRequestHandler):
protocol_version = "HTTP/1.1"
def log_message(self, *a): pass
def do_GET(self): # the model listing
b = json.dumps({"object": "list", "data": [{"id": MODEL, "object": "model"}]}).encode()
self.send_response(200); self.send_header("Content-Type", "application/json")
self.send_header("Content-Length", str(len(b))); self.end_headers(); self.wfile.write(b)
def do_POST(self):
self.rfile.read(int(self.headers.get("Content-Length", "0")))
self.send_response(200); self.send_header("Content-Type", "text/event-stream")
self.send_header("Connection", "close"); self.end_headers()
chunk = {"id": "c", "object": "chat.completion.chunk", "model": MODEL,
"choices": [{"index": 0, "delta": {"content": "Partial ans"}, "finish_reason": None}]}
self.wfile.write(("data: " + json.dumps(chunk) + "\n\n").encode()); self.wfile.flush()
if MODE == "hold": time.sleep(600)
self.close_connection = True
srv = ThreadingHTTPServer(("", 0), H)
print("http://0.0.0.0:%d/v1" % srv.server_address[1], flush=True)
srv.serve_forever()
export CODEAF_HOME=$(mktemp -d) HOME=$(mktemp -d) OPENROUTER_API_KEY=<any non-empty value>
U=$(mktemp); python3 stub.py hold > "$U" & sleep 1
R=$(mktemp -d) && git -C "$R" init -q && cd "$R"
CODEAF_BASE_URL="$(cat "$U")" codeaf chat --no-host
Send reply with the word OK and wait about a minute. Today the row reads the model went quiet mid-reply — asking again and the request is sent again roughly every 47 s; no answer … still asking · esc stops is never drawn. Press esc: Home opens and the stub keeps receiving requests.
Field (real models). A real provider stall does the same, but it cannot be summoned; the stub is the replication.
Where
internal/session/loop.go:2694 emits the quiet-mid-reply notice; :2471 formats the distinct no answer … esc stops line. internal/tui3/failurerow.go:56 draws the retry event.
The fix
Make the visible escape promise match the actual key behavior on every retry shape. If Escape is meant to stop this wait, route it to the active request before navigating Home; otherwise remove esc stops from the wait line and document background continuation.
Acceptance
- e2e: through
codeaf chatin tmux against a stalled stub, the displayed line accurately predicts Escape's effect, and the request state follows that effect. - Unit: tests cover both notice strings and the active-turn Escape route.
- Update the retry manual and
invalidates.
- Ngôn ngữ chính
- Go
- Star
- 115
- Fork
- 14
- Merge trung bình
- 9 giờ 38 phút
- Pull request đã merge (30 ngày)
- 749
Chuẩn bị môi trường
Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Agent-Field/CodeAF
-
area:chat feature
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Agent-Field/CodeAF#1510 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Agent-Field/CodeAF#1489 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:chat bug good first issue sev:papercut
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Agent-Field/CodeAF#1470 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:chat bug good first issue sev:papercut
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Agent-Field/CodeAF#1469 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:chat bug sev:papercut
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Agent-Field/CodeAF#1468 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Agent-Field/CodeAF
Issue tương tự
-
security
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
cvss-severity:high devguard l3montree-cybersecurity/...ard-k8s-image-inventory pkg:oci/devguard-k8s-ima...ch=amd64&tag=main-amd64 pkg:oci/devguard-k8s-ima...ch=arm64&tag=main-arm64 risk:low state:open
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 76/100
l3montree-dev/devguard#3094 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 84/100
JuliusBrussee/caveman#1127 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement low priority
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
eugenioenko/ttt#674 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
kind/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
gpustack/gpustack-operator#640 ·
Maintainer thường phản hồi trong vòng 1 ngày