Skip to content

Releases: cxykevin/alcoh

alcoh v0.2.7

Choose a tag to compare

@cxykevin cxykevin released this 01 Oct 15:12

alcoh v0.2.7

本版本主线是正文鼠标选择:复制改成按列取原文(选区两端被切掉的 markdown 标记丢掉、完整的标记原样保留),拖到正文上下边界会贴边自动滚动;选区改为按内容行存放,滚动后高亮与复制内容都跟着走。另有新增设置项“显示协议细节”,默认关闭,隐藏未知 session update 与 calling_info 参数块。

主要更新

正文按列复制原始 markdown

  • 渲染侧为每个渲染 rune 记录它在原文里的下标(StyledLine.Map / SrcLine.Map,-1 表示渲染合成字符),复制时先取选区对应的原文下标区间再拼回文字:
    • 选区两端的标记符(**、`、# 、> 、- 等)丢掉,只选中的文字不带标记;
    • 夹在选中字符中间的标记保留(选中“正文 加”得到 正文 **加粗);
    • 整行被完整选中时仍按原文输出,标记原样保留;
    • 长逻辑行 wrap 出来的续行与首行同属一行,片段直接拼接、不插换行;
    • 代码块行号前缀、tab 展开的空格、列表符号都是渲染合成,不参与取字。
  • 格式标记(**加粗**、`代码`)按开启标记判断是否完整:开启标记也在选区内(这段格式从选区内开始)就算完整,闭合标记被选区右端挡在外面时补上它;只有开启标记在选区外(格式被左侧切断)才剔除选区里那半个标记,不再复制出落单的标记。
  • 拖拽选择到正文上/下边界之外时贴边自动滚动:每来一次移动事件滚一行,滚到顶/底即停;选区终点钉在边界行上,滚动后同一屏幕行指向更远的内容,选区随之延长(边界判断用渲染侧记录的正文内容总行数)。

选区按内容行存放,跟随滚动

  • 选区此前按屏幕行存放,正文滚动(滚轮、翻页、拖拽自动滚动)后高亮仍停在原来的屏幕行,Ctrl+C 复制到的也不再是当初选中的那段文字。现在选区存内容行号(屏幕行 − 正文首行 + 滚动偏移),渲染与取文时按当前滚动偏移换算回屏幕行,选区从此与滚动位置无关;滚出可见区的选区不再高亮。

新增“显示协议细节”开关(默认关闭)

  • 未知 session update 的系统提示行与 alkaid0 私有的 calling_info 参数块此前一律写进正文,普通会话里噪声较大。改为由本地设置控制、默认关闭:原始 JSON 始终保留在协议诊断中,需要排查协议问题时在设置里打开就能看到完整细节。
  • 设置页新增第 5 行“显示协议细节”(键盘与滚轮移动的行数上限同步改为 5),随会话激活与能力刷新同步到当前会话,切换后立即作用于当前会话与主页预创建会话;工具块缓存签名并入开关,避免切换后仍命中旧渲染。
  • 帮助弹窗文案与 en 翻译同步更新。

其它

  • 补掉两处 gofmt 差异(keymap.go 注释缺空格、i18n/en.go 翻译值列对齐),仅注释与空白列调整,不改行为。

验证

  • gofmt 无差异、go vet ./... 通过、go test ./... 全部通过。
  • 新增/更新回归测试:按列取字与 wrap 拼接(TestCopyBodyTextColumns)、格式标记的整行 / 左端切断 / 右端补闭标记(TestCopyBodyTextFormatMarks)、拖拽到上下边界自动滚动与两端封顶(TestDragAutoScrollsBody)、滚动后高亮跟随同一内容行与滚出可见区不再高亮(TestApplySelectionFollowsScroll)、协议细节默认隐藏与打开后显示(model、view 两侧);view 侧新增 TestAppViewBodyRows,markdown / highlight / message_list 既有用例按列映射规则同步调整。

alcoh v0.2.6

Choose a tag to compare

@cxykevin cxykevin released this 27 Sep 12:47

alcoh v0.2.6

本版本主线是 workflow 终端预览:选中 workflow 终端时不再只看原始 VT 输出,而是渲染 tflow 流程图(节点按状态着色、可切换选中节点、可平移),下栏用页签平级展示 Agent 列表与节点日志。另有 shells 面板列表滚动、粘贴覆盖当前行等修复。

主要更新

workflow 终端预览(alkaid0 v0.5)

  • 协议层:新增 workflow/status 查询(受 v0.5 能力位开关)、workflow 快照通知与 update_* 增量事件解码;TerminalInfo 增加 workflow 标记,WorkflowControl 与 TerminalControl 分开声明,实现方可以只实现终端部分。
  • 模型层:终端状态挂载 workflow 状态,按 runID 累积图、节点/agent 状态与日志(事件按 sequence 重放),并提供节点选择、画布平移与分栏滚动游标。
  • 视图层:workflow_panel.go 负责 tflow 布局与上下分栏绘制,布局按图 / 节点状态 / 选中项缓存,避免每帧重算;shell 面板在 workflow 终端上改画分栏。
  • 键位:Tab / Shift+Tab 循环切换选中节点(节点日志跟随),hjkl 与方向键四向平移(一次半个分栏),←→ 切下栏页签,PgUp/PgDn 翻页、滚轮按行滚动;底部提示与 i18n 同步。
  • 下栏页签:图下方改为 notebook 式两页,默认 Agent 列表(序号 / 状态着色 / 提示词摘要 / 重试次数),←→ 环绕切到节点日志页,两页各自记住滚动位置。
  • 快照时机:进入面板、刷新(r)、切换选中节点时补一次全量快照,断线重连或打开早已结束的 workflow 也能立刻看到完整状态。
  • 真机兼容:真实服务把 dynworkflow 的 graph 事件整体塞进 graph 字段(比增量事件多包一层),快照解码现在兼容嵌套与扁平两种形状——此前真机上图始终为空。
  • 平移错位修复:按网格列落位、宽度取自网格续列,窗口左边界落在宽字符中间不再让整行偏移;右边界放不下整个宽字符时不画,避免压到分栏边框。
  • 依赖新增 github.com/cxykevin/tflow v0.0.1。

Agent 列表序号修正

  • workflow 事件里的 agentIndex 从 1 开始,此前当作 0 起下标索引,第 1 个 agent 的事件落到第二行:第一行永远停在"等待"、内容与第二行重复,末尾多出幻影行(单个 agent 看上去是 #1 等待、#2 同一个 agent)。现在按 1 起解析(内部仍 0 起存放、显示时 +1),事件没带序号时兜底第一个 agent,status 重放沿用日志条目上的序号。

shells 面板列表滚动与滚动条

  • 列表按行铺开(每条 shell 两行、历史段前一行分节标题),窗口起点按选中项计算:装得下停在顶部,装不下把选中项贴到窗口底部,选中的终端(含命令那行)始终完整可见;窗口底部放不下整条时不画半条。
  • 最右一列画滚动条,仅在内容超出一屏时出现。

粘贴不再清掉当前行

  • InputBuffer.InsertText 对不含换行的粘贴内容会把首段与末段写进同一行,后一次写入覆盖前一次,光标前的原有内容被清掉(表现为"一粘贴当前行就只剩粘贴内容")。现在单行粘贴按"光标前内容 + 粘贴文本 + 光标后内容"一次拼好,光标停在粘贴内容之后、原有后缀之前。

验证

  • gofmt 无差异、go vet ./... 通过、go test ./... 通过。
  • 新增回归测试:workflow 事件解码与状态重放、键位与页签切换、宽图逐平移量列位比对与右边界截断、agentIndex 1 起落位与幻影行、shell 列表行铺开 / 滚动可见性 / 无滚动条、单行粘贴保留当前行(旧实现下失败)。
  • 假 agent 的 pty e2e 覆盖 3 节点默认图与 9 节点宽图两种场景(最终场景 A 21 项 + 场景 B 8 项)全部通过。
  • 真机 alkaid0 联调:workflow 面板能正确渲染节点、连线与实时状态。

alcoh v0.2.5

Choose a tag to compare

@cxykevin cxykevin released this 27 Sep 06:41

alcoh v0.2.5

本版本有两条主线:工具调用接入 alkaid0 v0.4 私有协议渲染(标题变为可读签名、正文只展开标题未包含的参数),以及修掉滚动时行尾字符残留(宽字符续列光标与 Emoji 列宽)。

主要更新

工具调用按 alkaid0 v0.4 私有协议渲染

服务端声明 alk.cxykevin.top/alkaid0/v0.4 时,工具调用不再显示服务端标题 [Call <name>]<callId> 与全参数文本块,改由客户端按工具语义渲染:

  • 可读标题:Edit(path)、Run {type}({reason})(后台任务为 Run {type}*(...),command 转入正文)、Read(path)、Search(query) / Search online(query)、Fetch(method url)、Scope(name)、Agent(name)、Use Agent(name)、Deactivate Agent(name);未收录的工具回退 Name()。
  • 正文只显示标题未包含的参数:展开后以 Key: value 列出其余参数(按参数名排序、跳过空值),服务端首个"全参数预览"文本块不再重复渲染;diff/终端等内容块照旧展示,复制出的原文与画面一致。
  • 参数来源:content 里的 alk.cxykevin.top/calling_info 块(alkaid0 不发送 rawInput,见服务端 docs/acp/extension.md §4.1);没有该块、或服务端未声明 v0.4 能力时完全回退原有渲染。

滚动时行尾字符残留修复

  • 宽字符续列光标:Diff 写入的 run 从宽字符续列开始时,MoveTo 会把终端光标停在续列上,而续列分支只推进列号、不推进光标,run 内后续字符整体左移一格,行尾保留上一帧字符。现在同步推进光标,保证列号与终端光标一致。
  • 选择整字闭包:shells 预览选择只反续列样式,正好制造上述"从续列开始的 run";抽出 wideCharBounds 供正文选择与 shells 选择共用。
  • 列宽表修正:Emoji_Presentation=Yes(✅❌✨ 等)终端按 2 列渲染,本地按 1 列会让整行少前进 1 列、行尾残留旧字符(真实会话里 ✅ 出现 43 次);并补齐易经六十四卦、太玄经符号、算筹数字、片假名扩展等宽字符区块,U+3248-324F 按 Ambiguous 归窄,U+FFA0 归零宽。

验证

  • gofmt 无差异、go vet ./... 通过、go test ./... 通过。
  • 新增回归测试:工具调用私有渲染(edit/run 前后台/read/search 在线离线/fetch 与子代理工具/未知工具回退/diff 保留/无 v0.4 回退,能力开关在 SetAgentInfo 前后生效);宽度表断言与区间表有序性、续列起始 run、shells 选择整字反显。

alcoh v0.2.4

Choose a tag to compare

@cxykevin cxykevin released this 25 Sep 04:28

alcoh v0.2.4

本版本是一次稳定性补丁,专治 Windows Terminal 下"不定期卡死、按键和 Ctrl+C 全部失灵、只能关窗口":修掉三类各自独立的成因(输入通道永久失效、长会话流式输出时事件循环被绘制占满、终端输出里的零宽字符触发 panic 后死锁),并保证异常退出时终端一定会被还原。

主要更新

输入通道不再"假死"(Windows 专有触发)

  • Windows 控制台上 os.Stdin 的读取会在若干情况下返回 0 字节、被 Go 当成 io.EOF:按下 Ctrl+Z(Go 的 readConsole 把 0x1A 当作控制台 EOF 标记吃掉)、ReadConsole 返回 0 字符、输入缓冲被 flush。
  • 旧实现遇到这种"伪 EOF"就直接退出输入读取循环,并且只尝试投递一次退出事件;一旦事件通道满(例如 AI 正在流式输出、主循环忙)这次投递被丢弃,而读取循环已经退出——按键、鼠标、Ctrl+C 从此永久失效,窗口只能关掉。
  • 现在:控制台句柄仍可用时退避后继续读(Ctrl+Z 不再致命);确实失效时阻塞式投递退出事件,绝不丢弃。同时修掉 checkResize 里 lastW/lastH 的数据竞争,尺寸事件不再因通道满而永久丢失导致画面错位。

长会话流式输出不再占满事件循环

  • 正文渲染按 Timeline 条目缓存渲染结果(FNV-1a 签名,宽度/配色变化时整表失效),只重画真正变化的条目。
  • 此前每帧都要对整段会话重做 markdown 解析、语法高亮与换行,帧耗时随会话长度线性增长(本机实测 600 条消息约 438ms/帧);流式输出时 10fps 重绘把事件循环占满,按键长时间得不到处理,看起来就是卡死。
  • 现在同一场景约 0.9ms/帧,流式追加帧约 2.5ms。

终端写出不再阻塞事件循环

  • 帧写出移入独立 goroutine:Windows 控制台的 WriteFile 没有超时,终端停止消费输出(拖动/缩放窗口、最小化、RDP 断开)时同步写会把按键处理一起拖死。
  • 写入器忙时跳过中间帧、保留待重画标记,下一轮(最迟 100ms)补上最新画面;退出前最多等 1.2s 写完在途帧。

终端预览零宽字符 panic(本次卡死的直接原因)

  • shells 面板预览的 VT 屏幕按"显示列宽"判断换行,零宽字符(ZWJ、组合记号、变体选择符)宽度为 0 不受换行约束,光标在行尾时会越界写 Cells[Y][Width],直接 panic。
  • 修复:零宽字符不占列、直接跳过;\t 展开加迭代上限,避免极窄屏幕 (Width=1) 上换行把列号归零造成空转。
  • 并修掉随之而来的死锁:主循环改为 withModel/withModelRead(defer 解锁),模型层 panic 展开时不会再把锁留在锁定状态;退出路径改为先写出在途帧、立刻恢复终端,其余清理(删预创建会话/插件/后端关闭/命令回收)放进带 3s 总超时的 goroutine——任何异常退出都不会把终端留在 raw + alternate screen,也不会卡在退出路径里。

其它

  • 括号粘贴结束标记丢失(Windows 控制台输入缓冲溢出会丢字节)时按 4MB 上限截断返回,避免后续按键被无限吞进粘贴缓冲。

验证

  • gofmt 无差异、go vet ./... 通过、go test ./... 与 go test -race ./... 通过。
  • 新增回归测试:终端写出阻塞时事件循环仍能响应按键并退出、正文缓存随流式追加与展开思考失效重绘、粘贴结束标记丢失时的截断行为、零宽字符落在行尾不再 panic、1 列宽屏幕上的 tab 终止、withModel panic 后锁被释放、后端关闭阻塞时 Run 仍恢复终端并在超时后返回。
  • 在 Windows Server + Windows Terminal(ConPTY)上实测:旧版按 Ctrl+Z 会让输入通道失效,新版进程存活并继续响应输入;对卡死进程取完整内存转储后由 goroutine 栈确认了"零宽字符越界 panic → 退出清理在 modelMu 上死锁"的链路。

已知限制

alkaid0 当前公开的 v0.5 / v0.6 扩展文档未定义终端 stdin/write 或 resize RPC,因此本版本仍不提供交互式 PTY 输入、原始 escape 转发和终端尺寸转发。

alcoh v0.2.3

Choose a tag to compare

@cxykevin cxykevin released this 14 Sep 14:58

alcoh v0.2.3

本版本是一次以配置编辑器为主的补丁:为 /server 里"选择模型"的键补上模型提示与模型选择框,并让命令面板中的服务端命令描述随界面语言本地化。

主要更新

模型提示与模型选择框(/server)

配置编辑器里引用模型的键——Agent.SummaryModel、Agent.TitleModel、Agent.Agents.*.AgentModel、Model.DefaultModelID、Context.EmbeddingModelID、Context.SearchSummaryModel——现在有两层辅助:

  • 行尾灰字提示:这些键的行尾以灰字显示其值指向的模型名(先按 Model.Models 的键匹配,未命中再按模型条目的 ModelID 匹配;ModelName 为空退回 ModelID;引用不到模型时不提示)。Model.Models 集合页原有的各项模型名预览保持不变。
  • 模型选择框:在这些键上按 Enter(或 →)弹出选择框,候选项直接读配置文档的 Model.Models——与 /model 不同,不查服务端公布的模型列表。候选忽略 Hide(隐藏模型照样列出,只加 (隐藏) 标注),也不按 Type 过滤(LLM / embedding / rerank 全部出现),每行显示 键 模型名 — ModelID [类型]。
  • 打开时选中当前引用值,↑↓(或滚轮)移动(带环绕、选中行居中滚动),Enter 写回该模型的键:值的类型沿用字段原有类型(数字字段写数字、字符串字段写字符串、null 按键的形状推断),与手工编辑等价,并沿用"编辑即保存 + 全量重载"的既有写回链路;e 退回手工输入值,Esc 取消且不写回。
  • 配置里没有任何模型时不弹选择框,直接进入值编辑;/plugins 的本地配置编辑器不受影响。

服务端命令描述本地化(alkaid0 v0.4)

  • 服务端下发的命令描述只有英文原文。服务端声明 alk.cxykevin.top/alkaid0/v0.4 私有能力时,命令面板里这些描述改由客户端按当前界面语言翻译:中文界面查 internal/i18n/server.go 的对照表(服务端英文原文 → 中文),未收录的条目回退英文原文,英文界面直接用服务端原文。
  • 未声明该能力的第三方 ACP 服务端,其描述语言未知,一律原样展示、不做猜测性翻译。

验证

  • gofmt 无差异、go vet ./... 通过、go test ./... 通过。
  • 新增 TestModelRefPreview / TestConfigEditorModelPick(model 层候选列表、初始选中、环绕、写回类型与 null 推断)、TestConfigTreeDrawModelRefPreview / TestConfigTreeDrawModelPick(view 层灰字样式与选择框渲染)、TestServerConfigEditorModelPick(app 层键盘驱动端到端:开框、Esc 不写回、↓+Enter 写回并重载生效、e 手工输入),以及 internal/i18n/server_test.go、internal/view/slash_i18n_test.go。

已知限制

alkaid0 当前公开的 v0.5 / v0.6 扩展文档未定义终端 stdin/write 或 resize RPC,因此本版本仍不提供交互式 PTY 输入、原始 escape 转发和终端尺寸转发。

alcoh v0.2.2

Choose a tag to compare

@cxykevin cxykevin released this 13 Sep 15:26

alcoh v0.2.2

本版本把 shells 面板接上 alkaid0 v0.6 的终端历史与实时终端,并重做面板的列表与预览。

主要更新

终端历史不再丢失(alkaid0 v0.6)

  • 终端结束时(alk.cxykevin.top/terminal_update 的 stop,或后台任务结束的 shell_stop)把已收到的内容移入历史段,不再直接丢弃。
  • 新增 alk.cxykevin.top/session/terminal/history(alk.cxykevin.top/alkaid0/v0.6 能力):进入会话、打开面板或按 r 时取回该会话全部已结束终端,包括服务端重启前结束、内存中只剩持久化副本的 restored 条目;服务端未声明 v0.6 时静默跳过,面板只显示本地归档。
  • 恢复会话时用回放的 run 工具调用复原元数据:alk.cxykevin.top/terminal_id 建立工具调用与终端的对应,工具参数经私有 alk.cxykevin.top/calling_info 块复原条目的 reason 与命令(alkaid0 不发送标准 rawInput,直播与回放同一份)。只补空字段,且忽略 wait/kill 的参数,避免用 run id 覆盖真实命令。
  • 面板分两段:上半段活动 shell、下半段历史 shell,每段内部都是"新的在上",同一终端只出现在一段里。

实时终端补齐

  • 前台 run(不带 background)不推送 start/running,改为进入会话、打开面板或按 r 时调用 alk.cxykevin.top/session/terminal/list 列出正在运行的终端,结果以事件广播并入模型。
  • 输入框下方的 <n> shell 徽标与面板标题计数只统计活动 shell,历史数量在标题里以 · history <n> 单独标注。

列表与预览改版

  • 每条 shell 占两行:第一行是 run 的 reason(无则回退标题 / 终端 ID)与右对齐的彩色状态(运行中=蓝、已完成=绿、已终止=黄、失败=红),第二行是启动命令。
  • 面板全部文案(标题、计数、状态、页脚、空状态、徽标)走 i18n,英文表同步补齐。
  • 预览按框体尺寸重建 VT 屏幕后再重放 transcript:长行按显示宽度自动换行(CJK 记 2 列,行末放不下的宽字符整字换行,不再被截断),内容铺满整框(含全屏),终端文字统一白色。
  • 预览最右一列加滚动条(内容不足一屏时显示为细点线),PgUp/PgDn 或预览区内滚轮滚动;VT 屏幕在视口之外保留最多 400 行回滚缓冲,滚动窗口按保留范围夹紧,不会滚出空白。
  • 粘滞语义:停在底部时新输出继续跟随,向上滚动后位置不动,滚回底部恢复跟随;切换终端一律回到最底部。

交互

  • r 刷新面板(活动终端 + 历史段 + 选中终端最新内容),打开面板时自动刷新一次。
  • 历史段的 shell 按 x 不再发停止请求,改为提示"该 shell 已结束,可查看内容但无法停止"。
  • Ctrl/Alt 组合键不再被面板的 x/r 吃掉。

验证

  • gofmt、go vet ./... 通过。
  • go test ./... 通过。
  • 新增 internal/acp/terminal_v06_test.go、internal/app/shell_history_test.go、internal/model/terminal_{link,list,order,scroll}_test.go、internal/term/vt_width_test.go、internal/view/shell_{panel,preview,scroll,cjk,badge}_test.go,覆盖历史接入、列表顺序、工具调用与终端对应、换行与宽度、滚动与粘滞、CJK 边界。

已知限制

alkaid0 当前公开的 v0.5 / v0.6 扩展文档未定义终端 stdin/write 或 resize RPC,因此本版本仍不提供交互式 PTY 输入、原始 escape 转发和终端尺寸转发。

alcoh v0.2.1

Choose a tag to compare

@cxykevin cxykevin released this 11 Sep 14:41

alcoh v0.2.1

本版本是一次以修复为主的补丁:Esc 打断在连按时稳定生效,并修正会话消息顺序、补上运行状态动效。

主要更新

状态栏运行态动效

  • 会话运行中不再固定显示 running,改为 spinner + 循环动词(coding / vibing / diving / building / exploring / shipping)。
  • 动词叠加从左向右扫过的高光:前缘纯白加粗,向后渐隐回主题蓝,扫到词尾后连续复位。
  • 状态栏左侧改按 Span 列表绘制,超宽时沿用原有截断语义,宽字符不会被截成半格。

修复

Esc 打断不再被吞

  • 终端把独立 Esc 键编码为单字节 0x1b,把 Alt+X、方向键等编码为 ESC 前缀。此前解析器只凭"缓冲里是否还有字节"区分两者:当两次 Esc 落在同一读批次时(快速连按,或渲染繁忙时 stdin 已有积压),整批被解析成一次 Alt+Esc,session/cancel 根本没有发出,运行中的会话无法终止。
  • 现在同一读批次里的多个 Esc 字节会逐个还原成 Esc 键;ESC 前缀另加 50ms 判定窗口(readline keyseq-timeout 思路),窗口内没有后续字节才判定为独立 Esc 键。
  • 顺带修掉反向隐患:被终端拆包送达的 ESC [ A 不再被误判成 "Esc + [ + A",运行中按方向键不会误触发打断。
  • Windows 控制台等不支持读超时的输入源保持原有即时语义。

会话消息顺序

  • alkaid0 会话按 messageId(msg_<n> 数值)排序展示,流式回放与工具调用、思考块不再因到达顺序不同而错位。

验证

  • gofmt、go vet ./... 通过。
  • go test ./... 与 go test -race ./... 在 ubuntu / macos / windows 三个 runner 上通过。
  • 打断修复经真实 alkaid0 服务端 + TUI 端到端复核:连按 Esc、单次 Esc 均能中断当前轮次,方向键不误触发。

已知限制

alkaid0 当前公开的 v0.5 扩展文档未定义终端 stdin/write 或 resize RPC,因此本版本仍不提供交互式 PTY 输入、原始 escape 转发和终端尺寸转发。

alcoh v0.2.0

Choose a tag to compare

@cxykevin cxykevin released this 01 Sep 15:12

alcoh v0.2.0

本版本带来终端体验、ACP v2 支持、插件系统和会话管理方面的大幅增强。

主要更新

Shells 终端面板

  • 支持 alkaid0 私有协议 v0.5 的终端状态与内容推送。
  • 新增动态 shells 列表,显示终端启动命令、运行状态和终端预览。
  • 支持 60/40 的 shell 列表与终端预览布局;终端宽度小于 60 列时自动隐藏预览。
  • 支持全屏终端预览、VT/xterm 控制序列解析、终端状态更新和结束清理。
  • 支持终端预览鼠标选择与 Ctrl+C 复制。
  • 支持 x kill、Esc return 等面板操作。
  • 仅当服务端声明 alk.cxykevin.top/alkaid0/v0.5 能力时启用相关功能。

ACP v2 与 alkaid0 扩展

  • 完善 ACP v2 JSON-RPC 客户端。
  • 支持 stdio 与 WebSocket 双 transport。
  • 增强服务端能力声明、未知字段保留和协议诊断。
  • 支持 alkaid0 扩展配置读取与写回。

插件与会话管理

  • 新增本地插件系统,支持 JSON-RPC、protobuf、插件命令、快捷键和状态栏信息。
  • 支持会话列表分页和加载更多会话。
  • 改进会话恢复、预创建会话、标题及状态同步。

输入与终端体验

  • 支持括号粘贴模式、CJK 宽字符和鼠标框选复制。
  • 改进 Ctrl+C、Esc、历史导航和面板快捷键行为。
  • 增强 VT/xterm 屏幕模型,包括光标、滚动、清屏、SGR、OSC 和备用屏幕处理。

配置与引导

  • 更新 alkaid0 v0.4.6 配置 schema。
  • 完善 /connect 服务商连接向导和启动新手引导。
  • 支持 /effort、/model 等命令面板功能。

修复

  • 修复宽字符续列覆盖、终端快照重复追加和旧 shell 未清理问题。
  • 修复窄终端布局及终端预览空输出、短输出时错误显示省略号的问题。
  • 修复 shell 面板 Esc 返回和 Ctrl/Alt 快捷键处理冲突。
  • 修复终端预览选择复制与消息区选择之间的状态干扰。

验证

  • gofmt 检查通过。
  • go vet ./... 通过。
  • go test ./... 通过。
  • go test -race ./... 通过。

已知限制

alkaid0 当前公开的 v0.5 扩展文档未定义终端 stdin/write 或 resize RPC,因此本版本暂不提供交互式 PTY 输入、原始 escape 转发和终端尺寸转发。

v0.1.1

Choose a tag to compare

@cxykevin cxykevin released this 12 Aug 10:47
e508966

What's Changed

  • 提供了 One Shot 功能,以及 i18n ,并制作了/connect命令,更新了新手引导 by @zhiyuHD in #1
  • 新增 Ctrl+O 一键展开/折叠全部思考与工具调用,以及鼠标点击单项展开/折叠 by @zhiyuHD in #2

New Contributors

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@cxykevin cxykevin released this 09 Aug 05:26

v0.1.0

alcoh 的第一个 Release!

alcoh 是一个 ACP v2 Client。使用纯 Go 编写。