Keen Code

用 Go 编写的极简终端编程智能体,自带哈希行编辑与多供应商切换,帮你把上下文开销压到最低。

Star 数
★ 89
最近更新
4 天前
License
MIT
主语言
Go

30 秒速览

可在哪里用
通用 · 跨平台ChatGPT · OpenAI API · Claude API
开始前需要
Go 工具链(从源码构建时)npm(可选的安装方式)模型供应商 API 密钥或 ChatGPT OAuthShell / 命令行网络访问本地文件系统MCP Server
典型场景
习惯在终端里工作的后端或 Go 工程师,想在不离开 shell 的情况下完成读码、改码、跑测试的闭环。
主要局限
项目高度主观取舍:作者明确回避“非必要”功能,需要更丰富 IDE 级能力或生态插件的用户可能觉得功能偏少。

这个 Agent 能做什么,适合哪些场景?

Keen Code 是一个用 Go 编写的命令行 AI 编程智能体,定位类似 Claude Code 或 Codex CLI,但刻意保持精简、轻量。它主打多供应商切换、10 个内置工具、MCP 外部工具接入、技能系统、子智能体并行委派以及可配置的工具历史保留策略。核心特色是哈希行编辑:read_file 为每行加上 N:HASH| 锚点,edit_file 以原子方式应用多个 ops 并拒绝过期锚点,避免误改漂移内容。会话、记忆、压缩、权限校验和 headless 模式都有明确文档支撑,适合希望自己掌控模型与工作流的工程师。

运行 keen 后在当前目录启动交互式终端会话。它通过 read_file、glob、grep 读取与检索文件,通过 write_file 和 edit_file 写入修改,通过 bash 执行 shell 命令,通过 web_fetch 抓取网页并转成 Markdown,通过 ask_user 向用户确认,通过 delegate_task 把最多 10 个子任务并行交给 .agents/agents/ 中定义的子智能体,通过 call_mcp_tool 调用已连接的 MCP 服务器工具。模型侧支持 Anthropic、OpenAI、Codex(OAuth)、Gemini、DeepSeek、Kimi、GLM、MiniMax、OpenCode Go、Yolo-Auto 与 Amazon Bedrock,可用 /model 切换。会话可持久化与恢复,可用 /compact 压缩上下文;默认跨轮只保留精简的 TurnMemory 摘要,需完整工具输出时用 /tool-history full 开启。权限系统由 FileGuard 把关:工作目录内路径放行,敏感路径需确认,系统路径或 .gitignore 路径直接拒绝。

  1. 习惯在终端里工作的后端或 Go 工程师,想在不离开 shell 的情况下完成读码、改码、跑测试的闭环。
  2. 需要按任务切换模型的团队:同一个会话里用 /model 在 Anthropic、OpenAI、Gemini 或 Bedrock 之间换供应商。
  3. 已有内部工具服务、希望用 MCP 接入并让智能体按需发现工具的平台团队。
  4. 需要并行拆分大任务的场景:把有界子任务通过 delegate_task 分发给配置了独立模型与权限的子智能体。
  5. 要把编程智能体嵌入 CI 或脚本流水线的团队,用 keen run "<prompt>" 配合 --format json 做无头调用。
  6. 对改动正确性敏感、希望编辑基于行哈希锚点原子应用、避免误改漂移内容的开发者。

如何安装或部署这个 Agent?

脚本安装(写入 /usr/local/bin,不可写时退到 $HOME/.local/bin):

curl -fsSL https://raw.githubusercontent.com/mochow13/keen-code/main/scripts/install.sh | bash

固定版本:

curl -fsSL https://raw.githubusercontent.com/mochow13/keen-code/main/scripts/install.sh | bash -s -- -v v0.16.1

或通过 npm 全局安装:

npm install -g keen-code

也可以不全局安装直接运行:

npx keen-code --version

安装后检查:

keen --version
which keen

如何使用这个 Agent?

在项目目录启动交互会话:

keen

使用自定义模型配置与 MCP 配置:

keen --model-config ./model-config.json --mcp-config ./mcp-config.json

两者分别替换默认的 ~/.keen/configs.json 和 ~/.keen/mcp/configs.json;文件缺失或非法会导致启动失败而不回退。无头模式:

keen run --format json --model-config ./model-config.json "Explain this project"

常用会话内命令包括 /model 切换供应商、/thinking 调整推理强度、/mcp 连接与查看 MCP 服务器、/skills 管理技能、/memory 管理记忆、/compact 压缩上下文、/tool-history full|none 切换工具历史保留、/allow-permission 设置始终放行、/emptyq 清空输入队列。ChatGPT/Codex 选项会打开浏览器登录流程,凭据存到 ~/.keen/auth.json。

这个 Agent 有哪些优点和局限?

优点
  • 哈希行编辑机制:read_file 输出 N:HASH| 锚点,edit_file 对同一文件快照原子应用多 op,过期锚点被拒绝,显著降低并发或漂移下的误改风险。
  • 多供应商覆盖广,涵盖 Anthropic、OpenAI、Codex OAuth、Gemini、DeepSeek、Kimi、GLM、MiniMax、OpenCode Go、Yolo-Auto 和 Amazon Bedrock,可用 /model 即时切换。
  • MCP 服务器接入后会自动生成 mcp:<server> 技能并附带工具表与 JSON Schema,工具发现保持提示词高效,无需额外的 tool-search-tool。
  • 跨轮上下文默认只保留精简 TurnMemory 摘要,可用 /tool-history full 换成完整工具输出,把 token 成本交给使用者主动权衡。
  • 提供 headless 模式 keen run,支持 --format json、--completion-signal 和 --session,可嵌入脚本或 CI。
  • 所有代码由 AI 智能体编写,提示词与规格保存在 .ai-interactions 目录,可作为智能体驱动开发的公开样本研究。
局限
  • 项目高度主观取舍:作者明确回避“非必要”功能,需要更丰富 IDE 级能力或生态插件的用户可能觉得功能偏少。
  • 默认不保留完整工具输出,旧观察需要重新读文件或重跑搜索,长任务中会产生额外调用与延迟。
  • 使用需要自备模型供应商 API 密钥或完成 ChatGPT OAuth 登录,网络不可用的环境无法正常工作。
  • 自定义 --model-config / --mcp-config 文件缺失或非法会直接启动失败,没有回退默认配置的容错。
  • 作为快速迭代的个人项目,兼容性与破坏性变更风险需自行评估(例如旧 --config 已改名为 --model-config)。

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Keen Code 当前 53 · 缺口较多 — ★ 89 4 天前 Go ChatGPT · OpenAI API · Claude API
zerostack 57 · 缺口较多 命令行工具免费 + 模型费 ★ 1.7k 3 天前 Rust OpenAI API · Claude API
agentty 44 · 缺口较多 命令行工具免费 + 模型费 ★ 613 1 天前 C++ OpenAI API · Claude API
Oh My Pi 54 · 缺口较多 命令行工具免费 + 模型费 ★ 38k 今天 TypeScript Codex · OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
53/ 100 五分制 2.7 / 5
信任安全 14/29
可靠稳定 8/14
适用触发 10/18
规范维护 9/18
有效结果 9/13
证据核验 3/8
查看各维度的扣分理由
信任安全14 / 29 · 2.4/5

权限系统文档较完整:Guard 对系统目录、.gitignore、$HOME 点文件默认拒绝,写操作一律需批准,危险 bash 命令强制提示,plan 模式剥离写工具,这些体现了最小权限与用户确认(各 2 分)。但 yolo 模式与 /allow-permission 可一键跳过全部提示(含危险命令),且文档未提供撤销/回滚机制,故 external_effects 与 rollback 仅 1 分。敏感数据处理方面,OAuth 令牌以 0600 存于 ~/.keen/auth.json 并做命名空间隔离,但文档自承 OAuth 错误串未做令牌脱敏,扣分至 2。依赖安全仅见 go.mod 与每周 CodeQL 工作流,无依赖锁定审计、SBOM 或漏洞处置说明,给 1 分。来源归属方面 README 提及受 pi-hashline-edit 启发,但整体未系统标注第三方来源,且发布者身份未经验证,给 1 分。

可靠稳定8 / 14 · 2.9/5

文档内部一致性较好:权限状态、命令表、MCP OAuth 状态机与失败状态描述彼此吻合(2 分)。失败信息设计具体,如 auth_required/auth_failed/disconnected 及恢复建议、--completion-signal 退出码约定(2 分)。但依赖可用性证据薄弱:go.mod 声明 go 1.26.0 与 toolchain go1.26.10,并引用多个未来时间戳的伪版本依赖,静态材料无法确认这些版本真实可获取,且无 vendor 或校验说明,给 1 分。

适用触发10 / 18 · 2.8/5

受众与场景明确(终端编码代理、多提供商、无头模式、子代理),能力边界文档化良好(plan/yolo 模式、adversary 只读工具、/btw 无工具),触发精度有明确规则(斜杠命令、@ 文件提及、队列上限 5、路由阈值)(各 2 分)。环境适配仅覆盖 macOS/Linux 类路径与 /usr/local/bin 安装,未见 Windows 支持说明,且安装脚本为 curl|bash 管道执行,给 1 分。

规范维护9 / 18 · 2.5/5

README 目录结构清晰,docs/ 分主题文档齐全,安装说明含脚本与 npm 两种方式(各 2 分)。但命名稳定性存在破坏性变更:--config 已重命名为 --model-config 且旧名不再接受,文档仅一笔带过迁移,给 1 分。示例丰富但缺少 FAQ 与已知限制专章,known_limitations 仅 1 分。LICENSE 为完整 MIT 文本(2 分)。CHANGELOG 与 ROADMAP 仅在链接中出现,未提供内容证据,versioning_changelog 给 1 分。维护责任方面发布者未经验证,CONTRIBUTING 仅被引用,maintenance_responsibility 给 1 分。

有效结果9 / 13 · 3.5/5

输出可用性有具体设计:hashline 锚点原子编辑、TurnMemory 上下文压缩、--format json 无头输出、/usage 用量统计(2 分)。相对既有编码代理的边际价值体现在上下文效率与技能驱动 MCP 发现(2 分)。成本收益有明确权衡说明(默认精简上下文换取更小 token 成本,/tool-history full 可选),但缺少量化基准,给 2 分。

证据核验3 / 8 · 1.9/5

README 大量声明可追溯到具体文档与代码路径(如 internal/mcp/oauth.go、internal/filesystem/guard.go),claim_traceability 给 1 分,因多数为文档自述而非可核验产物。跨源佐证有限:README、docs 与 go.mod 相互印证部分功能,但无测试文件或 CI 结果内容可供交叉验证,给 1 分。事实与推断分离尚可,文档区分了支持与不支持项(如 OAuth 不支持项列表),但部分性能与安全结论缺乏依据,给 1 分。

风险与缓解建议
  • yolo 模式与 /allow-permission 会跳过包括危险 bash 命令在内的全部确认,仅靠 Guard 兜底;生产环境应避免使用。
  • 安装方式为 curl | bash 管道执行远程脚本,且发布者身份未经验证,建议先审阅 scripts/install.sh 并校验版本。
  • go.mod 声明 go 1.26.0 及多个未来时间戳的伪版本依赖,静态审查无法确认其真实可获取性与安全性。
  • 文档自承 OAuth 错误串未按令牌值脱敏,日志或终端输出可能泄露敏感信息。
  • --config 到 --model-config 为破坏性重命名,旧脚本会直接启动失败。
  • 缺少回滚/撤销机制说明,写操作与危险命令一旦执行无内置恢复路径。
证据充分度:低 评估于 2026年11月6日 审查版本 426920500a2a
查看完整评分方法 →
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents