开发者用 POSIX Shell 打造极简 AI 编程 Agent
千行 POSIX Shell 脚本实现 AI 编码 Agent,兼容 OpenAI API
一款名为 ssa(Simple Shell Agent)的 AI 编程工具以不到 1000 行 POSIX Shell 脚本实现,近日在 Hacker News 上引发关注。该工具灵感来自 mini-swe-agent,主打「shell only」、「fresh process each step」与「simple loop」三大特性。用户只需用自然语言描述任务,工具便会反复向模型询问应当执行的 shell 命令、运行它们、再把输出回传给模型,直至任务完成。
项目核心
ssa 的核心循环完全使用 POSIX Shell 编写,仅依赖 shell、date、grep、sed 和 tee 这些基础工具;与模型交互则需要 curl 和 jq,但整体保持极简风格:
- 每次执行步骤都启动新的进程,避免状态污染
- 核心循环逻辑简单直接,便于调试与阅读
- 同时提供 curlRunner.sh(对接 OpenAI 兼容 API)与 llamaCppRunner.sh(基于本地 llama.cpp)两种模型调用方式
项目在 Linux、macOS 与 BSD 上均可运行,作者也因此戏称其为「Mostly POSIX sh」。
使用方式
通过简单的环境变量配置即可启动工具,可对接任意 OpenAI 兼容端点,例如 OpenRouter:
- export PATH="/path/to/ssa/bin:$PATH"
- export OPENAI_API_KEY="sk-..."
- export OPENAI_URL="https://openrouter.ai/api/v1/chat/completions"
- export SSA_MODEL_RUNNER="/path/to/ssa/libexec/ssa/curlRunner.sh"
- export SSA_MODEL="openrouter/auto"
随后在任意项目目录下执行 ssa summarize this repo 这类命令,工具便会自动完成任务。运行 ssa -h 可查看完整选项。
模型能力要求
作者明确指出,工具对模型能力有一定要求:
- Qwen 2.5 1.5B 与 3B 模型在简单测试中输出难以被解析
- Qwen 2.5 7B 与 32B 模型则能产出可解析、可执行的 shell 脚本
- 当前仅能完成非常基础的「hello world」类任务
这意味着想要让 ssa 真正发挥作用,至少需要 7B 规模的模型。
安全机制
由于工具默认会以当前用户身份、在当前目录下执行模型生成的 shell 命令,存在一定安全风险,作者因此提供了多种沙箱选项:
- 通过
--script-runner或SSA_SCRIPT_RUNNER指定沙箱脚本 - 内置 libexec/ssa/askUserSandbox.sh:每条命令执行前询问用户
- 内置 libexec/ssa/switchUserSandbox.sh:切换到其他 Unix 用户运行
- 生产环境建议结合 seccomp、namespaces、pledge() 或 jails 等系统级隔离
调试方面,ssa 会将会话文件写入 $TMPDIR/ssa-$LOGNAME-<timestamp>/,可通过 --keep-session 保留以便排查,其中 sessionTranscript.txt 是从模型视角查看完整运行过程的较好切入点。项目以 MIT 协议开源,可在原仓库直接获取。
