Alkaid0 是一个模块化的 AI Coding 工具 与 Agent 框架,专为构建具备多 Agent 能力、工具调用系统和流式响应处理功能的智能编码助手而设计。该框架基于 Go 语言构建。
设计理念:低消耗 用户友好 可扩展 强兼容性
路径 ~/.config/alkaid0/log.log
日志经过脱敏处理(脱去 Provider URL / KEY),但会保留请求的 Model ID 和 Agent Name 以及完整输入输出。日志不会携带工作区信息但 AI 模型的输出可能会包含部分用户代码。
提供 toolkit 包以查看日志。用法见其 --help。
路径 ~/.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以禁用。
自动审批规则使用 github.com/expr-lang/expr 实现。这是一个轻量级的表达式语言,支持 C 风格的基本的逻辑运算和函数调用。
- 全局:
Agent.AutoApprove/Agent.AutoReject - Subagent:
Agent.Agents.{subagent}.AutoApprove/Agent.Agents.{subagent}.AutoReject - 规则空字符串表示不启用;Subagent 为空时会回退到全局默认。
- Reject 优先:命中 AutoReject 直接拒绝,即使同时命中 AutoApprove。
- Approve 需全需:所有 ToolCall 都命中 AutoApprove 才批准。
- 程序内置了一套规则,AutoReject 和 AutoApprove 均取或的关系。
AgentsConfig.IgnoreDefaultRules设置为 true 后,全局默认规则不生效。除非你明确知道自己在做什么,否则不建议设置该字段。
ToolCalls:完整的[]ToolCallArrayToolCall:当前工具调用(单个)Agent:当前 Agent 配置
ToolCall 结构:
ToolCall.NameToolCall.IDToolCall.Parameters(map[string]*any,即 json 中Object)
regex(pattern, text)正则匹配contains(s, sub)字符串包含hasParam(call, key)参数存在param(call, key)参数值
AutoApprove: "ToolCall.Name == 'Read'"
AutoReject: ""
AutoReject: "contains(ToolCall.Name, 'shell') && regex('rm\\s', param(ToolCall, 'command'))"
AutoApprove: "ToolCall.Name == 'shell' && (contains(param(ToolCall,'command'), 'git status') || contains(param(ToolCall,'command'), 'git diff'))"
AutoReject: "hasParam(ToolCall, 'path') && regex('^/etc', param(ToolCall, 'path'))"