Releases: cxykevin/alkaid0
Release list
v0.3.4
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
本版本主要更新:
- 编辑工具支持 LSP 格式化、诊断检查和原生语法检查
- 搜索工具开启 AI 总结功能(自动总结搜索结果并引用来源)
- 所有工具的 prompt 精简,减少上下文占用
本次更新由
Deepseek V4 Flash完成大部分工作,并人工修改。
Changelog
- 编辑后自动检查: 编辑文件后自动调用 LSP 格式化+语法诊断,或对 JSON/YAML/TOML/MD 等做原生语法检查,结果返回给 AI 以便自动修复
- AI 搜索总结: online 搜索开启 LLM 总结,根据原始问题筛选相关内容并标注引用来源
- Prompt 精简: 所有工具的长示例任务替换为单行 Quick Examples,减少约 5KB 上下文
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iex配置
路径
# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json如果你从 v0.3.3 升级,无需修改配置文件。
配置模板
{
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"ThemeID": 0,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里没用)",
"ProviderKey": "sk-or-xxx(这里没用)",
"DefaultModelID": 1,
"Models": {
"0": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ModelDescription": "模型描述(可选)",
"ModelAddPrompt": "附加系统提示词(可选)",
"ModelTopP": -1,
"ModelTopK": -1,
"ModelTemperature": -1,
"TokenLimit": 8192,
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"EnableToolCalling": false,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false,
"EnableUsage": true
}
},
"1": {
"ModelName": "embedding模型名",
"ModelID": "embedding模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"EnableToolCalling": false,
"Hide": true,
"Type": "embedding",
"ProviderSpecificConfig": {
"Dimension": 1024
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentShortDescription": "擅长前端开发的前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 0,
"AutoApprove": "",
"AutoReject": "",
"DisableSandbox": false
}
},
"IgnoreBuiltinAgents": false,
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 0,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": "",
"IgnoreDefaultRules": false,
"DisablePromptPreprocess": false,
"UseShell": "",
"TerminalEnvs": {
"LANG": "zh_CN.UTF-8"
},
"DisableSandbox": false
},
"ignoreSignals": false,
"Context": {
"LSP": {
"Enabled": true,
"IdleTimeout": 600,
"LanguageServers": {
".go": {
"Command": "gopls",
"Args": []
}
}
},
"EmbeddingModelID": 1,
"SearchSummaryModel": 0,
"OnlineSearch": {
"timeout": 30,
"proxy_url": "",
"retry_count": 3,
"bing": {
"enable": true,
"min_delay": 2,
"max_delay": 5,
"max_results": 10
},
"github": {
"enable": false,
"token": "ghp_xxx",
"max_results": 5
},
"arxiv": {
"enable": false,
"max_results": 5
},
"tavily": {
"enable": false,
"api_key": "tvly-xxx",
"search_depth": "basic",
"include_answer": false,
"include_raw_content": false,
"max_results": 10
}
},
"Codebase": {
"BM25Weight": 0.7,
"VectorMinSimilarity": 0.5,
"BM25RetentionScore": 0.0
}
},
"Server": {
"Key": "<你的 websocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": true,
"SessionTimeout": 60
}
}客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
注意:模型引擎尚未经过充分测试!
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!
v0.3.3
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
本版本更新代码库索引系统,支持按目录搜索,以及 search 工具的 online 模式。Online Search 可以搜索来自 Bing/Tavily/Github/arXiv 的混合内容。
本次更新由
Deepseek V4 Flash完成大部分工作,并人工修改 (花费约 5 rmb)。
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iex配置
路径
# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json从 v0.2.x 升级配置文件
v0.3.x 添加了对嵌入模型的需求,用于代码索引构建。你需要在 Models 中以普通模型的形式添加你的嵌入模型,并指定 "Type": "embedding", "Hide": true, "ProviderSpecificConfig" 中 "Dimension" 为你使用向量模型的维度。
更改 ModelName 字段会导致整个 Codebase 强制重新索引!
我们建议您同时启用 LSP 支持和 OnlineSearch。Bing 基于爬虫,因此更推荐您使用 Tavily 进行日常搜索。
配置模板
{
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"ThemeID": 0,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里没用)",
"ProviderKey": "sk-or-xxx(这里没用)",
"DefaultModelID": 1,
"Models": {
"0": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ModelDescription": "模型描述(可选)",
"ModelAddPrompt": "附加系统提示词(可选)",
"ModelTopP": -1,
"ModelTopK": -1,
"ModelTemperature": -1,
"TokenLimit": 8192,
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"EnableToolCalling": false,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false,
"EnableUsage": true,
}
},
"1": {
"ModelName": "embedding模型名",
"ModelID": "embedding模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"EnableToolCalling": false,
"Hide": true,
"Type": "embedding",
"ProviderSpecificConfig": {
"Dimension": 1024
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentShortDescription": "擅长前端开发的前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 0,
"AutoApprove": "",
"AutoReject": "",
"DisableSandbox": false
}
},
"IgnoreBuiltinAgents": false,
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 0,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": "",
"IgnoreDefaultRules": false,
"DisablePromptPreprocess": false,
"UseShell": "",
"TerminalEnvs": {
"LANG": "zh_CN.UTF-8"
},
"DisableSandbox": false
},
"ignoreSignals": false,
"Context": {
"LSP": {
"Enabled": true,
"IdleTimeout": 600,
"LanguageServers": {
".go": {
"Command": "gopls",
"Args": []
}
}
},
"EmbeddingModelID": 1,
"SearchSummaryModel": 0,
"OnlineSearch": {
"timeout": 30,
"proxy_url": "",
"retry_count": 3,
"bing": {
"enable": true,
"min_delay": 2,
"max_delay": 5,
"max_results": 10
},
"github": {
"enable": false,
"token": "ghp_xxx",
"max_results": 5
},
"arxiv": {
"enable": false,
"max_results": 5
},
"tavily": {
"enable": false,
"api_key": "tvly-xxx",
"search_depth": "basic",
"include_answer": false,
"include_raw_content": false,
"max_results": 10
}
},
"Codebase": {
"BM25Weight": 0.7,
"VectorMinSimilarity": 0.5,
"BM25RetentionScore": 0.0
}
},
"Server": {
"Key": "<你的 websocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": true,
"SessionTimeout": 60
}
}客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。注意:由于 ACP 规范并未明确标注 websocket 的具体连接协议内容,因此其存在一定兼容性问题。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。
helper 会自动读取本机的 ~/.config/alkaid0/config.json 或系统级配置文件 /etc/alkaid0/config.json (linux) 和 C:\ProgramData\alkaid0\config.json (windows) 并自动链接,一般本机无需再次手动配置 key。
如果你需要链接到远程或自动链接无效,可以使用以下参数:
-config配置文件路径-host服务器的 host-port服务器的 port-path服务器的 path-key服务器配置的 websocket key
如果你无法链接请检查是否在服务端和客户端都设置了
Key。服务端空key启动会自动生成一个随机秘钥并写入配置。如果内置的 stdio 导致服务器自动退出或其它问题,则可在
config.json中设置DisableStdioServer为true以禁用。
不要在用户目录或者根目录运行 Alkaid!
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
注意:模型引擎尚未经过充分测试!
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!
v0.3.2
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
本版本新增代码库索引系统和 search 工具。基于 LSP 的符号提取引擎、向量数据库与 BM25 混合检索,以及增量索引机制,使 AI 能够感知项目结构并提供更精准的上下文。
v0.3.2 更新日志
Features
- 代码库索引引擎(
context/codebase/):支持增量索引、智能队列和后台工作线程,连接时自动触发索引。 - LSP 符号提取(
context/lsp/):内置 LSP 客户端,支持 TypeScript/JavaScript/Vue 等语言的函数/类/接口/变量符号自动提取,管理 LSP 服务器生命周期。 - 向量数据库 & BM25 混合搜索:集成向量数据库,结合 BM25 全文检索实现语义与关键词混合搜索策略。
- search 工具(
tools/tools/search/):全新内置 search 工具,AI Grep 与上下文引擎混合搜索,提高代码检索效率。 - /index 和 /help 命令:新增
/index命令支持手动索引触发、状态查看和进度广播;新增/help命令查询可用命令列表。 - 扩展索引文件类型:新增
.vue/.txt/.json/.yaml/.yml文件索引支持,大文件自动截断。
Fixes
- 修复 auto-reject 后主会话未继续下一轮调用的问题
- 修复 auto-reject 后 agent 工作流未正确广播 cancelled 状态
- 修复 CI 中 mock 服务器端口竞争导致测试超时
Refactor
- Mock OpenAI 服务器改用随机端口,消除并行测试冲突
配置注意:代码库索引系统需要配置一个 embedding 模型(
Type: "embedding"),用于计算代码片段的向量表示。请在config.json中添加 embedding 模型条目并设置EmbeddingModelID指向它。Dimension 值请根据所选模型填写(如text-embedding-3-small为 1536,bge-m3为 1024)。本次更新由
Deepseek V4 Flash/Claude Opus 5完成全程编写。
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iex配置
路径
# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json{
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里暂时没有用)",
"ProviderKey": "sk-or-xxx(这里暂时没有用)",
"DefaultModelID": 1,
"EmbeddingModelID": 2,
"Models": {
"1": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false
}
},
"2": {
"ModelName": "Embedding 模型名",
"ModelID": "嵌入模型ID",
"ProviderURL": "https://嵌入模型供应商/v1",
"ProviderKey": "sk-嵌入模型密钥",
"Type": "embedding",
"ProviderSpecificConfig": {
"Dimension": 1024
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 1,
"AutoApprove": "",
"AutoReject": ""
}
},
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 1,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": ""
},
"ThemeID": 0,
"Server": {
"Key": "<你的 webcsocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": false
}
}客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。此时服务端同时会启动一个标准的 stdio 服务器便于调试。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。注意:由于 ACP 规范并未明确标注 websocket 的具体连接协议内容,因此其存在一定兼容性问题。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。如果你使用 go install 安装,则服务器绑定到了 alkaid0,单独的 helper 可以使用 alk 命令。
helper 会自动读取本机的 ~/.config/alkaid0/config.json 或系统级配置文件 /etc/alkaid0/config.json (linux) 和 C:\ProgramData\alkaid0\config.json (windows) 并自动链接,一般本机无需再次手动配置 key。
如果你需要链接到远程或自动链接无效,可以使用以下参数:
-config配置文件路径-host服务器的 host-port服务器的 port-path服务器的 path-key服务器配置的 websocket key
如果你无法链接请检查是否在服务端和客户端都设置了
Key。服务端空key启动会自动生成一个随机秘钥并写入配置。如果内置的 stdio 导致服务器自动退出或其它问题,则可在
config.json中设置DisableStdioServer为true以禁用。
不要在用户目录或者根目录运行 Alkaid!
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
注意:模型引擎尚未经过充分测试!
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!
v0.3.1
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
本版本修复了 v0.3.0 中自动拒绝的 bug,并优化了提示词引导。
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iex配置
路径
# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json{
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里暂时没有用)",
"ProviderKey": "sk-or-xxx(这里暂时没有用)",
"DefaultModelID": 1,
"Models": {
"1": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 1,
"AutoApprove": "",
"AutoReject": ""
}
},
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 1,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": ""
},
"ThemeID": 0,
"Server": {
"Key": "<你的 webcsocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": false
}
}客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。此时服务端同时会启动一个标准的 stdio 服务器便于调试。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。注意:由于 ACP 规范并未明确标注 websocket 的具体连接协议内容,因此其存在一定兼容性问题。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。如果你使用 go install 安装,则服务器绑定到了 alkaid0,单独的 helper 可以使用 alk 命令。
helper 会自动读取本机的 ~/.config/alkaid0/config.json 或系统级配置文件 /etc/alkaid0/config.json (linux) 和 C:\ProgramData\alkaid0\config.json (windows) 并自动链接,一般本机无需再次手动配置 key。
如果你需要链接到远程或自动链接无效,可以使用以下参数:
-config配置文件路径-host服务器的 host-port服务器的 port-path服务器的 path-key服务器配置的 websocket key
如果你无法链接请检查是否在服务端和客户端都设置了
Key。服务端空key启动会自动生成一个随机秘钥并写入配置。如果内置的 stdio 导致服务器自动退出或其它问题,则可在
config.json中设置DisableStdioServer为true以禁用。
不要在用户目录或者根目录运行 Alkaid!
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
注意:模型引擎尚未警告充分测试!
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!
v0.3.0
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
本版本修复了自动批准拒绝系统的 bug,并实现了上下文引擎的第一步----提示词优化。引入了简易模型引擎。
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iex配置
路径
# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json{
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里暂时没有用)",
"ProviderKey": "sk-or-xxx(这里暂时没有用)",
"DefaultModelID": 1,
"Models": {
"1": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 1,
"AutoApprove": "",
"AutoReject": ""
}
},
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 1,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": ""
},
"ThemeID": 0,
"Server": {
"Key": "<你的 webcsocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": false
}
}客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。此时服务端同时会启动一个标准的 stdio 服务器便于调试。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。注意:由于 ACP 规范并未明确标注 websocket 的具体连接协议内容,因此其存在一定兼容性问题。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。如果你使用 go install 安装,则服务器绑定到了 alkaid0,单独的 helper 可以使用 alk 命令。
helper 会自动读取本机的 ~/.config/alkaid0/config.json 或系统级配置文件 /etc/alkaid0/config.json (linux) 和 C:\ProgramData\alkaid0\config.json (windows) 并自动链接,一般本机无需再次手动配置 key。
如果你需要链接到远程或自动链接无效,可以使用以下参数:
-config配置文件路径-host服务器的 host-port服务器的 port-path服务器的 path-key服务器配置的 websocket key
如果你无法链接请检查是否在服务端和客户端都设置了
Key。服务端空key启动会自动生成一个随机秘钥并写入配置。如果内置的 stdio 导致服务器自动退出或其它问题,则可在
config.json中设置DisableStdioServer为true以禁用。
不要在用户目录或者根目录运行 Alkaid!
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
注意:模型引擎尚未警告充分测试!
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!
v0.2.11
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
本版本修复了自动拒绝系统在主会话中失效的 bug,新增 ignoreSignals 配置开关,并修复了跨平台测试兼容性。
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iexv0.2.11 更新日志
Fixes
- 自动拒绝变成手动批准: 内置 reject.expr(如禁止编辑 .env)在主会话中从未真正生效为自动拒绝。
CanAutoApprove返回false时存在歧义(reject 匹配 / approve 不匹配),AutoHandlePendingToolCalls仅对 sub-agent 执行自动拒绝。修复后 reject 规则命中时返回非空 reason,主会话也能正确自动拒绝,并修复了可能的重复 StopReasonModel 回调。 - TestSetWorkDir 跨平台兼容: 修复 macOS/Windows CI 上硬编码
/tmp导致测试失败的问题,改用os.TempDir()和filepath.Clean。 - Windows CI 编译修复: 拆分
sandbox_isolate_none.go为平台文件,解决syscall.Getpgid/Kill在 Windows 上未定义问题。
Features
- ignoreSignals 配置开关: 新增
Config.IgnoreSignals字段,为true时跳过信号处理(SIGTERM/SIGINT/SIGQUIT)注册,适用于容器化等不需要信号管理的场景。 - session/list_models ACP 方法: 新增 ACP 扩展方法
alk.cxykevin.top/session/list_models,支持客户端查询会话可用的模型列表。
Refactor
- Sandbox 测试精简: 精简重构 sandbox_test.go,提升可读性;修复 OS 隔离测试中 btrfs 子卷路径权限问题,所有 OS 隔离测试设置 WorkDir=/tmp,相对路径测试改用 filepath.Rel 动态计算。
本次更新由
Deepseek V4 Flash完成全程编写。使用 Claude Code 进行,alkaid0 完成了部分辅助工作。期待 alkaid0 能早日完成自举!
从 v0.1.0 的迁移指南
参考下面的配置补齐 Server 字段即可。
程序不再内置客户端,需要自行安装任意 ACP 客户端(如 multicoder,ACP UI 等)使用!配置请参考下方 客户端 内说明配置。
在启动客户端前,你需要预先启动服务器(不带任何参数启动)!
配置
路径
# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json{
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里暂时没有用)",
"ProviderKey": "sk-or-xxx(这里暂时没有用)",
"DefaultModelID": 1,
"Models": {
"1": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 1,
"AutoApprove": "",
"AutoReject": ""
}
},
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 1,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": ""
},
"ThemeID": 0,
"Server": {
"Key": "<你的 webcsocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": false
}
}客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。此时服务端同时会启动一个标准的 stdio 服务器便于调试。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。注意:由于 ACP 规范并未明确标注 websocket 的具体连接协议内容,因此其存在一定兼容性问题。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。如果你使用 go install 安装,则服务器绑定到了 alkaid0,单独的 helper 可以使用 alk 命令。
helper 会自动读取本机的 ~/.config/alkaid0/config.json 或系统级配置文件 /etc/alkaid0/config.json (linux) 和 C:\ProgramData\alkaid0\config.json (windows) 并自动链接,一般本机无需再次手动配置 key。
如果你需要链接到远程或自动链接无效,可以使用以下参数:
-config配置文件路径-host服务器的 host-port服务器的 port-path服务器的 path-key服务器配置的 websocket key
如果你无法链接请检查是否在服务端和客户端都设置了
Key。服务端空key启动会自动生成一个随机秘钥并写入配置。如果内置的 stdio 导致服务器自动退出或其它问题,则可在
config.json中设置DisableStdioServer为true以禁用。
不要在用户目录或者根目录运行 Alkaid!
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!
v0.2.10
v0.2.10
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
本版本重构了 sandbox 进程管理和 run 超时机制,优化 git 全局 ignore 初始化,并修复了 Windows 和 vet 编译问题。
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iexv0.2.10 更新日志
Refactor
- Sandbox 进程管理重构:
- Unix Kill 优先杀进程组防止孤儿进程残留
- 工作目录加入默认可写白名单
- Linux 隔离模式设置
Setpgid并传递真实用户名 - chroot 环境伪造
/etc/passwd使whoami输出正确
- Run 超时机制重构:
- 默认 timeout 改为
0(无超时,由 session cancel 控制) - 环境变量增加
PAGER/GIT_PAGER防命令挂起 - PTY 模式 context 取消监听延后启动,取消时关闭 master 解除
io.Copy阻塞
- 默认 timeout 改为
- Loop 停止逻辑重构:
- 增加
stopped标记,Stop()后跳过 AI 交互并返回StopReasonUser - 防止 cancel 后 AI 继续重试
SessionCanceldrainwaitStopChan使停止信号立即送达
- 增加
- 测试增强:
- 新增多组超时/取消 hang 测试
- 清理只读测试路径写法
Features
- git ignore 初始化优化: 优先尝试
--system再回退--global,失败时静默写日志继续
Fixes
- Windows 编译修复: 拆分
sandbox_isolate_none.go为平台文件,解决syscall.Getpgid/Kill在 Windows 上未定义问题 - go vet 锁拷贝警告: 修复
Chats结构体中sync.Mutex导致的值拷贝问题
本次更新由
Deepseek V4 Flash完成全程编写。使用 Claude Code 进行,alkaid0 完成了部分辅助工作。期待 alkaid0 能早日完成自举!
从 v0.1.0 的迁移指南
参考下面的配置补齐 Server 字段即可。
程序不再内置客户端,需要自行安装任意 ACP 客户端(如 multicoder,ACP UI 等)使用!配置请参考下方 客户端 内说明配置。
在启动客户端前,你需要预先启动服务器(不带任何参数启动)!
配置
路径
# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json{
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里暂时没有用)",
"ProviderKey": "sk-or-xxx(这里暂时没有用)",
"DefaultModelID": 1,
"Models": {
"1": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 1,
"AutoApprove": "",
"AutoReject": ""
}
},
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 1,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": ""
},
"ThemeID": 0,
"Server": {
"Key": "<你的 webcsocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": false
}
}客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。此时服务端同时会启动一个标准的 stdio 服务器便于调试。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。注意:由于 ACP 规范并未明确标注 websocket 的具体连接协议内容,因此其存在一定兼容性问题。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。如果你使用 go install 安装,则服务器绑定到了 alkaid0,单独的 helper 可以使用 alk 命令。
helper 会自动读取本机的 ~/.config/alkaid0/config.json 或系统级配置文件 /etc/alkaid0/config.json (linux) 和 C:\ProgramData\alkaid0\config.json (windows) 并自动链接,一般本机无需再次手动配置 key。
如果你需要链接到远程或自动链接无效,可以使用以下参数:
-config配置文件路径-host服务器的 host-port服务器的 port-path服务器的 path-key服务器配置的 websocket key
如果你无法链接请检查是否在服务端和客户端都设置了
Key。服务端空key启动会自动生成一个随机秘钥并写入配置。如果内置的 stdio 导致服务器自动退出或其它问题,则可在
config.json中设置DisableStdioServer为true以禁用。
不要在用户目录或者根目录运行 Alkaid!
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!
v0.2.9
v0.2.9
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
本版本为 v0.2.8 的修复。
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iexv0.2.9 修复
修复了系统服务启动失败和自动审批无效的问题。
v0.2.8 更新日志
Features
- PTY 命令执行: 重构命令执行系统,Linux 和 Unix 集成 PTY 终端,Windows ConPTY 由于在服务模式下无法使用故退回至管道,提升命令执行体验和兼容性
- 会话断连延迟释放: 新增 SessionTimeout 配置(默认 60s),连接断开后延迟释放会话资源;支持后台运行模式(
/background on),断连期间仍可保持活跃处理 - 配置热加载 RPC: 新增
alk.cxykevin.top/config/get和config/setRPC 方法,支持运行时读写全局配置,变更自动广播到所有会话 - 命令重命名:
/reasoning命令重命名为/effort,语义更清晰,支持 unset 参数提升供应商兼容性
Stability & Performance
- 数据竞争修复: 全面修复多处数据竞争问题,包括 session Context 指针包装、timer callback 竞态、goroutine 泄漏
- 优雅关闭: 实现
signal.NotifyContext信号处理(SIGTERM/SIGINT/SIGQUIT)、显式 HTTP Server Shutdown、连接 semaphore 并发控制 - Panic→Error 转换: 将 prompts/utils、HookTool、SubAgent consumer 等多处的 panic 路径转为 error 返回,提升系统健壮性
Testing
- 测试覆盖率大幅提升: 80+ 新增测试函数,涉及 14 个包,总计 2683 行新增测试代码
provider/request/agents: 85.6%(新增 17 个测试)storage/structs: 94.1%mock/openai: 38.7% → 72.6%ui/loop: 22.3% → 51.4%(启用 mock 服务器集成测试)server/actions: 40.9% → 59.6%terminal/pty: 39.7% → 64.7%
- CI 增强: GitHub Actions 新增
go vet和go test -race步骤 - 测试基础设施: mock OpenAI 服务新增流式响应、thinking 标签、边缘用例测试
Chore
- 调整系统提示词中的身份与动机设定
- 提示词加入 Co-Authored-By 署名
- ChanCall 缓冲区优化 64 → 4096,增加 recover 保护
本次更新由
Deepseek V4 Flash完成全程编写。使用 Claude Code 进行。期待 alkaid0 能早日完成自举!
从 v0.1.0 的迁移指南
参考下面的配置补齐 Server 字段即可。
程序不再内置客户端,需要自行安装任意 ACP 客户端(如 multicoder,ACP UI 等)使用!配置请参考下方 客户端 内说明配置。
在启动客户端前,你需要预先启动服务器(不带任何参数启动)!
配置
路径
# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json{
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里暂时没有用)",
"ProviderKey": "sk-or-xxx(这里暂时没有用)",
"DefaultModelID": 1,
"Models": {
"1": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 1,
"AutoApprove": "",
"AutoReject": ""
}
},
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 1,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": ""
},
"ThemeID": 0,
"Server": {
"Key": "<你的 webcsocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": false
}
}客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。此时服务端同时会启动一个标准的 stdio 服务器便于调试。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。注意:由于 ACP 规范并未明确标注 websocket 的具体连接协议内容,因此其存在一定兼容性问题。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。如果你使用 go install 安装,则服务器绑定到了 alkaid0,单独的 helper 可以使用 alk 命令。
helper 会自动读取本机的 ~/.config/alkaid0/config.json 或系统级配置文件 /etc/alkaid0/config.json (linux) 和 C:\ProgramData\alkaid0\config.json (windows) 并自动链接,一般本机无需再次手动配置 key。
如果你需要链接到远程或自动链接无效,可以使用以下参数:
-config配置文件路径-host服务器的 host-port服务器的 port-path服务器的 path-key服务器配置的 websocket key
如果你无法链接请检查是否在服务端和客户端都设置了
Key。服务端空key启动会自动生成一个随机秘钥并写入配置。如果内置的 stdio 导致服务器自动退出或其它问题,则可在
config.json中设置DisableStdioServer为true以禁用。
不要在用户目录或者根目录运行 Alkaid!
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!
v0.2.8
v0.2.8
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iex更新日志
Features
- PTY 命令执行: 重构命令执行系统,Linux 和 Unix 集成 PTY 终端,Windows ConPTY 由于在服务模式下无法使用故退回至管道,提升命令执行体验和兼容性
- 会话断连延迟释放: 新增 SessionTimeout 配置(默认 60s),连接断开后延迟释放会话资源;支持后台运行模式(
/background on),断连期间仍可保持活跃处理 - 配置热加载 RPC: 新增
alk.cxykevin.top/config/get和config/setRPC 方法,支持运行时读写全局配置,变更自动广播到所有会话 - 命令重命名:
/reasoning命令重命名为/effort,语义更清晰,支持 unset 参数提升供应商兼容性
Stability & Performance
- 数据竞争修复: 全面修复多处数据竞争问题,包括 session Context 指针包装、timer callback 竞态、goroutine 泄漏
- 优雅关闭: 实现
signal.NotifyContext信号处理(SIGTERM/SIGINT/SIGQUIT)、显式 HTTP Server Shutdown、连接 semaphore 并发控制 - Panic→Error 转换: 将 prompts/utils、HookTool、SubAgent consumer 等多处的 panic 路径转为 error 返回,提升系统健壮性
Testing
- 测试覆盖率大幅提升: 80+ 新增测试函数,涉及 14 个包,总计 2683 行新增测试代码
provider/request/agents: 85.6%(新增 17 个测试)storage/structs: 94.1%mock/openai: 38.7% → 72.6%ui/loop: 22.3% → 51.4%(启用 mock 服务器集成测试)server/actions: 40.9% → 59.6%terminal/pty: 39.7% → 64.7%
- CI 增强: GitHub Actions 新增
go vet和go test -race步骤 - 测试基础设施: mock OpenAI 服务新增流式响应、thinking 标签、边缘用例测试
Chore
- 调整系统提示词中的身份与动机设定
- 提示词加入 Co-Authored-By 署名
- ChanCall 缓冲区优化 64 → 4096,增加 recover 保护
本次更新由
Deepseek V4 Flash完成全程编写。使用 Claude Code 进行。期待 alkaid0 能早日完成自举!
从 v0.1.0 的迁移指南
参考下面的配置补齐 Server 字段即可。
程序不再内置客户端,需要自行安装任意 ACP 客户端(如 multicoder,ACP UI 等)使用!配置请参考下方 客户端 内说明配置。
在启动客户端前,你需要预先启动服务器(不带任何参数启动)!
配置
路径
# 从二进制文件启动
~/.config/alkaid0/config.json
# Linux 软件包安装版本
/etc/alkaid0/config.json
# Windows 软件包安装版本
C:\ProgramData\alkaid0\config.json{
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里暂时没有用)",
"ProviderKey": "sk-or-xxx(这里暂时没有用)",
"DefaultModelID": 1,
"Models": {
"1": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 1,
"AutoApprove": "",
"AutoReject": ""
}
},
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 1,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": ""
},
"ThemeID": 0,
"Server": {
"Key": "<你的 webcsocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": false
}
}客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。此时服务端同时会启动一个标准的 stdio 服务器便于调试。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。注意:由于 ACP 规范并未明确标注 websocket 的具体连接协议内容,因此其存在一定兼容性问题。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。如果你使用 go install 安装,则服务器绑定到了 alkaid0,单独的 helper 可以使用 alk 命令。
helper 会自动读取本机的 ~/.config/alkaid0/config.json 或系统级配置文件 /etc/alkaid0/config.json (linux) 和 C:\ProgramData\alkaid0\config.json (windows) 并自动链接,一般本机无需再次手动配置 key。
如果你需要链接到远程或自动链接无效,可以使用以下参数:
-config配置文件路径-host服务器的 host-port服务器的 port-path服务器的 path-key服务器配置的 websocket key
如果你无法链接请检查是否在服务端和客户端都设置了
Key。服务端空key启动会自动生成一个随机秘钥并写入配置。如果内置的 stdio 导致服务器自动退出或其它问题,则可在
config.json中设置DisableStdioServer为true以禁用。
不要在用户目录或者根目录运行 Alkaid!
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!
v0.2.7
v0.2.7
本 Release 作为 Development Techology Preview Level 1 的一部分发布。
本版本为 v0.2.6 的紧急修复。
安装
# Linux
curl -sSL https://alk.cxykevin.top/i.sh | bash# Windows
irm https://alk.cxykevin.top/i.ps1 | iexv0.2.7 紧急修复
紧急修复了 Filesystem Over ACP 的 Windows 的跨平台编译问题。
go fix && go fmt 了代码
v0.2.6 更新日志
概述
本次变更合并了安全审计报告的 bug 修复(P0/P1/P2)、内容大小限制的新功能以及 LLM 请求重试机制。涉及 18 个文件,共约 ~345 行插入、~87 行删除。
1. 安全修复
P0 — AI 模型可触发恐慌(DoS/崩溃)
| 文件 | 变更 | 严重性 |
|---|---|---|
provider/parser/parser.go |
JSON 流式解析器中添加 4 处 nil 判空:toolNameOrigin、toolCallIDOrigin、toolParametersOrigin 及参数 value 可能为 null。同时处理 jsonParser.AddToken() 的 error 返回值 |
模型发送 {"name":null} 等畸形 JSON 即可触发 nil 指针 panic |
tools/tools/edit/edit.go |
@insert:{lineNum} 增加 lineNum < 1 下界校验,防止 AI 传入 0 或负数时 panic |
@insert:0 即可崩溃 |
P0 — Tree 工具路径遍历 / 敏感文件泄露
| 文件 | 变更 | 严重性 |
|---|---|---|
tools/tools/tree/files.go |
敏感文件防护:扩展 dirBlacklistsOrigin 列表(.env、.ssh、.aws/.gcp/.azure/.kube/.docker 配置、证书密钥文件);新增 sensitiveFilePatterns(20 条正则匹配 .pem/.key/.cert/credentials 等);新增 isSensitivePath() 函数在 Delete/Move 前预检拒绝 |
阻止 AI 删除/移动 SSH 密钥、云凭证、TLS 证书、K8s 配置等 |
tools/tools/tree/files.go |
修复 7 处 filepath.Join 参数顺序错误(d.Target, path → path, d.Target),此前导致 diff 操作的目标路径错误 |
Move/Copy 时路径拼接结果不符合预期 |
P1 — Linux 沙箱逃逸
| 文件 | 变更 | 严重性 |
|---|---|---|
terminal/sandbox/sandbox_linux.go |
generateWritableMounts() 中每个可写目录 bind mount 后,额外检查 .alkaid0 子目录并 remount ro,bind 保护 |
可写目录中的聊天记录/配置可被沙箱内进程篡改 |
P2 — 并发 map 无锁访问(fatal error: concurrent map writes)
| 文件 | 变更 | 严重性 |
|---|---|---|
server/actions/session.go |
为 bindedSessionOnConn map 新增 bindedSessionOnConnMu 互斥锁 |
多连接并发绑定/解绑 session 时 fatal |
server/actions/main.go |
Close() 中 bindedSessionOnConn 和 clientConnCaps 加锁访问 |
服务关闭时并发写 map |
server/actions/prompt.go |
SessionCancel() 读 sessions map 补加 sessLock |
取消 prompt 时与新建 session 并发读写冲突 |
server/actions/update.go |
updateCfgsToConns() 重写,分离 sessLock(读 sessions)与 sessionConnLock(读 sessionConnMap),释放锁后再广播 |
配置热更新时多锁嵌套 + 写 map |
tools/tools.go |
ExecOneToolGetPrompts() 用 maps.Copy 深拷贝 t.Parameters 后再合并到全局参数 |
多 session 并发执行工具时写同一个 map |
server/client/jsonrpc/connect/stdio.go |
新增 writeMu sync.Mutex 保护 fmt.Println 输出 |
多 goroutine 并发写 stdout 时输出交错 |
P2 — 正确性 Bug
| 文件 | 变更 | 严重性 |
|---|---|---|
server/actions/session.go |
loadSession() 移除 sess.ReferCount = 1(改用 obj.referCnt 独家计数);closeSession() 将 obj.session.ReferCount-- 改为 obj.referCnt-- |
双计数器不一致导致 session 提前释放或泄漏 |
ui/loop/loop.go |
call() 函数中 recvSyncQueue send/recv 改为 select { case ...: case <-p.done: },防止 Cancel 后永久阻塞 |
Cancel 后的响应卡死主循环 |
tools/tools/edit/edit.go |
非 g 模式正则替换从 ReplaceAllString 改为 FindStringIndex + 手动替换;@ln:{from}-{to} 增加 from > to 校验 |
非全局替换实际执行了全替换;范围倒置未拒绝 |
prompts/prompts/delta_wrap.md |
模板条件 eq → ne,修复 <think>/<tools> 包裹逻辑 |
本应在有内容时才包裹标签,实际在空内容时才包裹(导致工具调用丢失) |
server/actions/fs.go |
fs 超时从 time.After 改为 context.WithTimeout + ctx.Done() |
time.After 无 cancel 机制,goroutine 泄漏 |
helper/helper.go |
stdin 首字节判换行改为 bytes.TrimLeft 完整清除 |
仅检查首字节导致换行为首的读块被整块丢弃 |
2. 新功能:FsRead/FsWrite 改进
| 文件 | 变更 |
|---|---|
server/actions/fs.go |
1MB 内容限制:FsWrite 中解码 content 后检查 len(content) > maxFileContentSize,超出返回明确错误 |
server/actions/fs.go |
静默 EOF 截断:FsRead 新增 f.Stat() 获取文件大小;offset 超出文件大小时返回空;offset+length 超出时自动截断到文件结尾 |
docs/acp/fs.md |
新增 Content Size Limit 小节;FsRead 补充静默截断行为;FsWrite 补充 1MB 上限说明 |
3. 新功能:Loop 请求重试机制
| 文件 | 变更 |
|---|---|
ui/loop/loop.go |
重试常量配置:新增 maxRetries = 3 和 baseBackoff = 1s 作为包级 const |
ui/loop/loop.go |
指数退避重试:将 SendRequest 调用包装为 sendRequestWithRetry 闭包;失败时依次等待 1s→2s→4s 后重试,最多 3 次 |
ui/loop/loop.go |
安全重试边界:仅在流式响应尚未开始(!responseStarted)时重试;已输出内容后失败不重试,避免客户端收到重复/混乱的流数据 |
ui/loop/loop.go |
取消感知:退避期间同时监听 p.ctx 和 responseCtx,用户取消时立即跳过后续重试;context.Canceled/DeadlineExceeded 错误不触发重试 |
server/client/jsonrpc/server.go |
Set() 泛型函数中 u.Apply[T] 拆分调用并处理 error 返回值,带参错误时返回 invalid params 而非静默丢弃 |
本次更新由
Claude Opus 4.8扫描,并由Deepseek V4 Flash完成全程编写。使用 Claude Code 进行。期待 alkaid0 能早日完成自举!
从 v0.1.0 的迁移指南
参考下面的配置补齐 Server 字段即可。
程序不再内置客户端,需要自行安装任意 ACP 客户端(如 multicoder,ACP UI 等)使用!配置请参考下方 客户端 内说明配置。
在启动客户端前,你需要预先启动服务器(不带任何参数启动)!
配置
路径 ~/.config/alkaid0/config.json
"$schema": "https://raw.githubusercontent.com/cxykevin/alkaid0/refs/heads/main/docs/schemas/config.json",
"Version": 1,
"Model": {
"ProviderURL": "https://openrouter.com/api/v1(这里暂时没有用)",
"ProviderKey": "sk-or-xxx(这里暂时没有用)",
"DefaultModelID": 1,
"Models": {
"1": {
"ModelName": "模型名",
"ModelID": "模型ID",
"ProviderURL": "https://模型供应商/v1",
"ProviderKey": "sk-模型密钥",
"EnableThinking": true,
"CompressSize": 128000,
"ProviderSpecificConfig": {
"EnableDeepseekThinking": false,
"EnableReasoningEffort": true,
"EnableTopP": false,
"EnableTopK": false,
"EnableTemperature": false
}
}
}
},
"Agent": {
"Agents": {
"frontend": {
"AgentName": "前端工程",
"AgentDescription": "前端工程Agent",
"AgentPrompt": "你是一个前端工程师,请根据用户的需求,提供前端工程解决方案。",
"AgentModel": 1,
"AutoApprove": "",
"AutoReject": ""
}
},
"GlobalPrompt": "始终使用中文回答",
"SummaryModel": 1,
"MaxCallCount": 50,
"AutoApprove": "",
"AutoReject": ""
},
"ThemeID": 0,
"Server": {
"Key": "<你的 webcsocket key>",
"Path": "/acp",
"Host": "127.0.0.1",
"Port": 7433,
"DisableStdioServer": false
}
}
客户端
配置完上述 json 后直接启动主程序,服务端会在 ws://<host>:<port>/<path> 开启一个 websocket 服务。此时服务端同时会启动一个标准的 stdio 服务器便于调试。
服务端使用 Query 参照认证。在 Query 参数中添加 key=<key> 即可。如果没有 Query 参数选项,则可以在 Path 中设置 /acp?k=<key>。
支持 Websocket 桥接的客户端可以直接链接。只支持 stdio 的客户端可以使用提供的 helper 链接。
目前 helper 只支持
ws,不支持wss。
可以通过 ./可执行文件 acp 启动服务端内置 helper。如果你需要轻量化部署并链接到远程,则可以使用单独的 helper 可执行文件并不带任何参数启动。如果你使用 go install 安装,则服务器绑定到了 alkaid0,单独的 helper 可以使用 alk 命令。
helper 会自动读取本机的 ~/.config/alkaid0/config.json 并自动链接,一般本机无需再次手动配置 key。
如果你需要链接到远程或自动链接无效,可以使用以下参数:
-config配置文件路径-host服务器的 host-port服务器的 port-path服务器的 path-key服务器配置的 websocket key
如果你无法链接请检查是否在服务端和客户端都设置了
Key。服务端不允许空key启动(stdio 服务器正常工作)。如果内置的 stdio 导致服务器自动退出或其它问题,则可在
config.json中设置DisableStdioServer为true以禁用。
不要在用户目录或者根目录运行 Alkaid!
平台支持
Linux(amd64,arm64) (binary,deb,rpm,apk,archlinux)Windows(amd64) (binary,msix)MacOS(实验性amd64,实验性arm64)(沙盒除外) (binary)
本 Release 仅供测试,不代表任何效果!不要在生产环境使用!
--- alkaid0 启航 ---
日志位于配置文件同目录 log.log,经过简单脱敏,会包含您的聊天记录!提交前请手动审计!