Askance 人机协作怎么用,agent 提问不再靠终端
askance 人机协作怎么用:本地 server 加阻塞式 CLI,手机或浏览器答 Markdown/Mermaid/diff,适配 Claude Code 等人机确认。

askance 人机协作怎么用:在本机起一个 server,让 agent 用 CLI 把问题推过来并阻塞等待;你在浏览器或手机上读 Markdown、Mermaid、未提交 diff,点选或附言回复,agent 才继续。Show HN 2026-08-12 上的 tobico/askance 瞄准的是「Claude Code 问太多、或 commit 前要你点头」两类痛点。它比终端里的 AskUserQuestion 更适合带图、带表格的多因素权衡,也比 Slack 自搭 bot 少一层集成。
安装 server 与 CLI
单二进制分发,Linux / macOS / Windows(WSL) 通用:
mkdir -p ~/.local/bin && curl -fsSL -o ~/.local/bin/askance \
"https://github.com/tobico/askance/releases/latest/download/askance-$(uname -s | tr '[:upper:]' '[:lower:]' | sed s/darwin/macos/)-$(uname -m | sed -e s/x86_64/x64/ -e s/aarch64/arm64/)" \
&& chmod +x ~/.local/bin/askance
默认 askance serve 监听 127.0.0.1:8422。Mac 可用 launchd、Linux 可用 systemd user unit 开机自启;server 挂掉时,正在阻塞的 agent 会一直等,所以 README 建议 KeepAlive / Restart=always。
CLI 通过 ASKANCE_SERVER(默认 http://127.0.0.1:8422)提交问题并阻塞到收到 Response。SQLite 存 pending 与归档,升级二进制不删库。一次 CLI 调用对应一个 Question Set:Preface 写背景,题目列选项,可挂 git diff 摘要;你在 UI 提交的 Response 是结构化 JSON,agent 侧不用猜自然语言意图。
浏览器打开 http://127.0.0.1:8422 可见 pending 列表;agent 每提交一组 Question Set,UI 里出现 Preface(可含 Mermaid)、可选 diff 预览、以及单选/多选/表格题。答完一次 Response 写回,CLI unblock,agent 继续跑。ARCHIVE 里可回看历史问答,长 plan 阶段不必翻终端 scrollback。
环境变量一览:ASKANCE_LISTEN 绑地址、ASKANCE_DATABASE 指定 sqlite 路径、ASKANCE_NO_UPDATE_CHECK 关每日 GitHub 更新横幅。server 每天查一次新版本,只提示不自动升级。
怎么接到 Claude Code
在 ~/.claude/CLAUDE.md(或等价全局说明)加一条硬规则:不要用内置 AskUserQuestion,改走 askance;每个 session 先跑一次 askance 读自带 guide。
askance CLI 自文档化,会教 agent 如何组 Question Set、Preface、带 Mermaid 的说明,以及如何把未 commit diff 贴在问题旁。读者可在 UI 里单选、多选或加自由文本,再一次性回传。
这与 Claude Code CLI 基础 里的权限确认不同:权限是「允不允许跑命令」,askance 是「业务选择与人机验收」。仓库附带 Grilling、Acceptance gate 两个示例 skill,分别对应「计划问到你满意」和「commit 前必须批 diff」;你也可以用自己的 skill,只要 agent 被训练成走 askance 通道。
典型 Grilling 流:agent 拆 plan 后连续抛选择题,你在 UI 里点选并附「为什么选 B」;Acceptance gate 流:改完代码不 commit,把 diff 挂进 Question Set,你批「可以提交」或「先改测试名」再循环。比终端里 AskUserQuestion 更适合带图、带表格的多因素权衡。
部署上,单机开发者 askance serve 手动起即可;长期用建议 launchd/systemd 保活,因为 agent 阻塞期间 server 重启等于 session 僵死。数据库在 --database 路径,备份 pending 状态可拷 sqlite 文件。CONTEXT.md 定义 Question Set、Preface、Response 等词汇,写自定义 skill 前先读,避免 agent 与 UI 字段名对不上。
Codex、Gemini CLI 等只要能在 shell 调 askance 并阻塞,理论上都能接;README 示例以 Claude Code 为主。关键是 session 级 guide:每个 session 先跑 askance 读内置 topic guide,避免 agent 自创提问格式导致 UI 解析失败。
手机答与推送
默认只绑 loopback,外网机器连不上,这是安全前提。要从手机答,README 推荐 tailscale serve --bg 8422,用 Tailscale 身份与 TLS 暴露本地 8422,而不是直接把端口开在公网。
iOS 推送需把站点「添加到主屏幕」。agent 阻塞期间你可以离开 desk,收到通知后再开 pending 列表。长时间等待经 tailscale 代理的行为见官方 On your phone 文档。
Pending 列表按 Question Set 聚合:一个 Set 可含多道单选、表格权衡题、以及附在 Preface 后的 Mermaid 架构图。答完并 Submit 后 agent 侧 CLI 才解除阻塞;若你只填一半就关 tab,agent 会一直 hang,直到你回来补答或 kill session。Archive 页可查历史 Response,方便复盘 plan 阶段被否掉的方案。
安全边界与适用场景
Askance 无内置认证;安全模型是「server 只对 localhost 或 tailscale 保护下的你可见」。输入文本不经 sanitize 就回传给 agent,因此任何能访问 UI 的人等价于能向 agent 注入指令。别把 --listen 0.0.0.0 当便捷功能。
适合:plan 阶段要问十轮、acceptance gate 要看 diff 再 commit、希望 Mermaid 架构图比终端 ASCII 可读。不适合:无人值守 CI(没有人在 loop 里);要完全无 GUI 的 ssh 纯 TUI 环境(还得开 browser 或 phone)。也不适合「秒级 yes/no」高频确认,CLI 阻塞 + 开浏览器 的固定成本比终端一问一答高,长 question set 才摊薄开销。
与 Cursor 本地与 Cloud Agent 怎么交接 可叠用:Cloud Agent 在远端改仓,本地 askance 仍可作「人批 merge 策略」的界面,只要 CLI 能连到你本机 server。早期项目,发布节奏快,装前看 askance --version 与 GitHub release note。
NixOS 用户可用 flake 模块一键装 server daemon 并给全员 PATH;其它 Linux 参考 README 的 systemd user unit。Windows 原生未提供 binary,WSL 内按 Linux 路径装。MIT 许可,Show HN 2026-08-12 讨论集中在「终于有好看的 HITL UI」,也提醒 tailscale 配置错会把问答页暴露给 tailnet 里其他人,serve 范围要收紧。
与 askance 互补的做法:跨会话意图仍写进 PLAN 或 issue,askance 只管「此刻问你这一组题」。权限类 yes/no 仍走 Claude Code 自带 tool approval;askance 不拦截 bash。混用时在 CLAUDE.md 写清分工,避免 agent 同一问题问两遍。升级 askance 后若 CLI 协议变,session 内先重跑 askance 读新版 guide,旧 prompt 缓存可能过时。
故障排查:pending 列表空但 agent 仍阻塞,常见原因是 CLI 连错 ASKANCE_SERVER 或 server 监听地址不一致。手机 via tailscale 打不开页面,先 tailscale status 确认本机 online,再查 serve 是否指到 8422。推送不到 iOS,按 README 检查是否已加主屏幕与通知权限;Android 浏览器推送支持因版本而异,以官方 phone 文档为准。