Aster
一个可自托管的终端编码智能体,用自己的模型与密钥,在本地完成读码、改文件、跑命令和审查变更。
权限模式(plan/manual/auto/edit/yolo)、沙盒(写入限定 repo+tmp、剥离密钥环境变量)、规则语言(allow/ask/deny,含 bash -lc 解析)和默认拒绝读 env/key 文件,证据充分,least_privilege 与 user_confirmation 满分;但回滚仅隐含依赖 git,无显式撤销/恢复机制,rollback 扣分;依赖只用 --locked 构建与 rustls,无 cargo-audit 等证据,dependency_security 扣分;aster remote(Telegram)与 --comment 等外发动作有审批但静态无法验证,external_effects 保守计 2。
README 与代码口径一致(端口回退、日志上限、f64 修复自述),桌面端错误解析测试覆盖细致,self_consistency 与 failure_messages 得分高;多 provider 与本地模型支持降低了外部依赖风险,但单进程 CLI 对外部端点可用性无降级保证,dependency_availability 扣 1。
明确面向自托管终端/编辑器/浏览器/桌面四种场景,覆盖 Linux/macOS/Windows/Android/musl,audience 与 environment_fit 充分;但为 pre-1.0 且自认『rough edges』,confidence 数值自认非校准概率,capability_boundaries 与 trigger_precision 扣分。
文档结构完整(CONFIG/ARCHITECTURE/ALGORITHM 等),安装路径清晰,Apache-2.0 全文随附,examples 丰富,license 得满分;但未见 CHANGELOG(仅 0.5.2 版本号)且策略为『track main』,versioning_changelog 扣分;维护者为单人且 README 明示正在求职,未给出持续维护承诺,maintenance_responsibility 扣分。
输出可用性强(-- 全局可用、结构化 finding、CI 可消费),output_usability 满分;verify/refute 流水线是差异化价值但成本模型与收益仅有文档自述,EVAL.md 自承『数字不能主张什么』,marginal_value 与 cost_benefit 保守计 2。
关键论断均链接到具体文档与配置示例,可追溯;CI 在 push/PR 上跑 fmt+clippy+test 并提供桌面 TS 单测,但提供的证据中 Rust 侧测试文件未直接呈现,主张多为一方自述,缺乏独立来源,三项均计 2:证据充分但非独立证实,且作者未区分事实与期望的部分(如『cannot come back』)需读者自行甄别。
- install 脚本为 curl|sh 直接执行,建议先审查 withaster.dev/install 的内容再用。
- confidence 数值是验证器的自我报告,不是校准概率,不应作为通过/失败门槛单独依赖。
- aster remote 允许从 Telegram 驱动代理,启用前请确认审批与 deny 规则覆盖高危命令。
- yolo 模式无沙盒无规则,README 已用红色警告,普通用户应保持默认 edit 模式。
- 项目 pre-1.0、单人维护且作者公开求职,生产依赖前请评估维护连续性;无 CHANGELOG,升级需自行比对 diff。
这个 Agent 能做什么,适合哪些场景?
Aster 是一个开源的编码智能体框架(agent harness),以 Rust 编写,运行在终端,也可通过浏览器(aster serve)、VS Code、Zed 扩展和桌面应用(Tauri)访问。它读取代码库、回答问题、编辑文件、执行命令并审查变更,兼容任何 OpenAI 接口的服务,包括 OpenRouter、OpenAI、Groq、Anthropic 以及本地模型(Ollama、LM Studio、vLLM、llama.cpp)。会话、记忆和技能都以普通文件存放在用户磁盘上,没有托管控制平面、向量数据库或遥测。其审查(review)能力采用四步流水线:HYPOTHESIZE、RETRIEVE、VERIFY、SHAPE,先廉价模型产出候选缺陷,再用第二个模型尝试反驳,从而过滤似是而非的发现。目前处于早期阶段,聊天、审查、记忆、技能、权限、MCP 以及浏览器、编辑器和桌面端均已落地,但仍有粗糙之处。
Aster 读取仓库文件并通过 SQLite + FTS5 + ripgrep 构建的本地符号索引检索证据。在聊天中,它回答关于代码的问题、编辑文件并运行命令,权限受 plan/manual/auto/edit/yolo 五种模式以及 allow/ask/deny 规则约束,yolo 之外的命令在沙箱中执行(写入限制在仓库与临时目录,环境变量中的密钥被剥离)。aster review 对当前分支、指定范围、stdin diff 或 GitHub PR 进行审查,输出带严重度、类别和置信度的 JSON 发现,可通过 aster fix --apply 自动修复。其他命令包括 aster memory(跨会话事实)、aster skills(按需加载的指令,兼容 Claude Code、Cursor 等已安装技能)、aster plugins(Agent Plugins 包)、aster mcp(渐进式注入 MCP 服务器工具)、aster web(搜索/抓取网页转 Markdown)、aster remote(经 Telegram 驱动)以及 aster serve(本地浏览器界面,默认端口 4187,仅限回环访问)。配置通过 aster.yaml 与环境变量(如 ASTER_API_KEY、ASTER_BASE_URL、ASTER_MODEL)管理,密钥只从环境读取。
- 独立开发者想在本地用自有 API 密钥或本地模型跑一个不联网上传代码的编码助手
- 团队在合并前对分支或 GitHub PR 做自动化代码审查,并将发现以 JSON 输出接入 CI
- 使用 Zed 或 VS Code 的工程师希望在编辑器侧边栏获得流式回复、diff 和权限确认的智能体面板
- 需要让审查发现自动变成修复补丁的开发者(aster review -- | aster fix --apply)
- 想通过 mom.yaml 在同一会话中按任务难度在便宜模型与强力模型之间自动切换的用户
- 通过 Telegram 远程下达任务并处理审批的移动场景用户
这个 Agent 有哪些优点和局限?
- 完全本地自治:密钥、模型、会话与记忆都在自己机器上,无托管控制平面、无遥测,配本地模型可完全离线工作
- 验证优先的审查流水线:用第二个模型专门反驳候选发现,避免'听起来对但不对'的结果,置信度门控可调
- 一套 harness 支撑多界面:终端、浏览器、VS Code、Zed、桌面应用共享同一配置、会话与技能
- 细粒度权限模型:五种权限模式加 allow/ask/deny 规则,Bash 规则可识别 bash -lc 内的命令链,yolo 之外默认沙箱执行
- 丰富的扩展机制:MCP 渐进注入、Agent Plugins 包、与 Claude Code/Cursor 等互通的技能体系
- 项目自述为'早期、公开构建中',明确提示会有粗糙边缘,成熟度风险需自行承担
- Rust 工具链要求 1.85+,自行构建有一定门槛
- 主要围绕 OpenAI 兼容接口设计,非 OpenAI 兼容的原生协议端点需要适配
- 审查的置信度来自验证模型的自我报告,非校准概率,只能当作排序信号
- 无托管服务,企业级集中管理、审计与多租户能力未在文档中出现
如何安装或部署这个 Agent?
一键安装:curl -fsSL https://withaster.dev/install | sh,或自行构建(需 Rust 1.85+):git clone https://github.com/zfinix/aster && cd aster && cargo install --path crates/aster-cli。运行需要一个模型端点:任一 OpenAI 兼容 API 的密钥,或本地模型(Ollama、LM Studio、vLLM、llama.cpp)。首次运行 aster 会引导完成连接配置,写入 ~/.aster/aster.yaml 并把密钥存到 ~/.aster/.env;也可用环境变量:export ASTER_API_KEY=sk-...、export ASTER_BASE_URL=https://openrouter.ai/api/v1、export ASTER_MODEL=anthropic/claude-sonnet-5。
如何使用这个 Agent?
进入仓库目录运行 aster 打开聊天 TUI;@ 可引用文件,/ 打开斜杠命令(/model、/provider、/mode、/effort、/resume 等),shift+tab 切换权限模式。非交互用法:aster chat "why is finding 2 critical?" 单次问答;echo "explain this repo" | aster 以管道输入作为提示;aster chat --continue 或 --resume 恢复会话。审查变更:aster review(当前分支)、aster review --range main..HEAD、git diff HEAD~1 | aster review --diff -、aster review --pr 42(先 aster login),加 -- 输出机器可读结果,--comment 可把发现发为 PR 评论。浏览器界面:aster serve 后访问 http://localhost:4187。
这个 Agent 与同类方案有什么区别?
README 提到可从 Claude Code、Cursor、Codex、Gemini CLI 等机器上已安装的智能体导入技能,说明其定位与这些终端编码智能体相邻;差异在于 Aster 强调自托管、无遥测、模型可随意更换,以及内置验证式代码审查流水线。