这个项目能做什么
attini 是一个命令行编程代理,旨在您的工作区中自主工作的同时保持人类控制。它通过支持流式传输的 HTTP/1.1 + TLS 直接与 DeepSeek Chat Completions API 交互。该代理可以列出和读取文件、搜索代码库、应用补丁以及运行命令。对 git 跟踪文件的可逆更改无需提示即可应用,而重大操作(如创建新文件、修改未跟踪文件或运行非白名单命令)则会显示预览并需要明确批准。
该项目基于 Sans I/O 设计构建:核心解析器、数据类型和状态机不执行任何 I/O 操作,而异步传输、TUI 和文件系统集成则位于外围模块中。这种分离增强了可测试性和可维护性。
主要功能包括:
- 只读工具:`list`、`read`、`search`,用于探索工作区。
- 补丁工具:应用添加/更新编辑;自动应用对跟踪文件的可逆更改,但对新文件、非跟踪更改或工作区外的写入需要批准。
- 命令工具:在权限控制下运行 shell 命令,具有可配置的超时时间。
- 批准系统:使用 `attini approve` 恢复已停止的会话,批准待处理的工具调用,并可选择通过 `--grant` 授予持久权限。
- 权限:使用纯 JSONL 文件(`permissions.jsonl`)管理工作区和会话级规则,可手动编辑。
- 会话管理:会话以目录形式存储在 `.attini/NAME/` 下,包含仅追加的 JSONL 对话日志、草稿板和锁文件。可通过 `attini status` 和 `attini ask` 进行检查。
- 环境变量:可配置 API 密钥、基础 URL、会话名称、模型、温度、超时时间等。
其设计理念强调可控性和可理解性高于自主性。仅在明确请求时(通过提示或 `--stdin`)添加上下文,没有隐式技能或指令文件发现机制,也没有子代理或计划模式。该代理拒绝执行有风险的操作,而不是盲目猜测。
有意不支持的功能包括内存持久化、子代理委托、`AGENTS.md` 扫描、自动技能加载、计划模式以及重复现有功能的便捷工具。这是一项经过深思熟虑的策略,旨在保持代理的明确性和安全性。
要求:Rust 1.93+、`DEEPSEEK_API_KEY` 环境变量,可选的 `DEEPSEEK_BASE_URL` 用于兼容 OpenAI 的端点。
评论
0 评分人数达到10人后显示
登录后参与讨论。