阿尔弗雷德
阿尔弗雷德只是当地人 模型上下文协议(MCP) stdio服务器,为常见的“存储库中的代理”工作流提供确定性、工作区范围的工具。
Alfred被设计为由MCP主机(例如IDE扩展)作为子进程启动,并使用换行符分隔的UTF-8 JSON帧通过stdin/stdout进行排他性通信。
阿尔弗雷德提供什么
- 工作空间边界强制(工具在当前工作空间内运行)。
- 确定性输出(稳定的排序和保守的、可测试的结果形状)。
- 默认情况下是安全的(默认构建中的策略禁用了变异功能)。
- 一个小型、专注的工具界面,用于查询工作区内容、搜索、检查文件以及读取日志和计划/内存状态。
刀具表面(当前版本)
目前注册的工具有:
workspace_dir- 工作区查询:
ls,read_range,file_stat,file_read_bytes,grep,search,diff - 日志:
log_search - 项目计划:
plan_get - 内存(默认为只读):
memory_get,memory_list,memory_search capabilities
笔记:
- 一些工具在默认配置中被策略故意禁用(例如计划和内存突变)。
grep和search有索引支持,可以返回确定性tool_unavailable初始化索引时出错。
入门
先决条件
- 防锈工具链
构建
cargo build跑
Alfred使用进程当前工作目录作为其工作区根目录。从存储库根目录运行它(或确保您的MCP主机集 cwd 相应地)。
./target/debug/alfred因为MCP使用stdout作为协议帧,所以更喜欢从MCP主机配置启动编译后的二进制文件(而不是 cargo run)以避免工具链输出干扰协议处理。
配置
Alfred读取可选的JSON配置文件,目前主要将其用于工具门控(tools.disabled).
默认位置:
- 工作区:
.agents/alfred/config.json - 用户:操作系统配置目录
alfred/config.json(确切路径取决于平台)
您可以通过将其他工具添加到来禁用它们 tools.disabled:
{
"tools": {
"disabled": ["file_read_bytes"]
}
}有关预期的完整配置模式,请参阅 schemas/alfred.config.schema.json.
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
ALFRED_RUNTIME_LOG_RETENTION_DAYS | 保存轮换运行时日志档案的天数。 | 7 |
ALFRED_INDEX_PERSISTENCE_LOCATION | 在哪里持久化工作区索引(user-默认数据位置;着手 workspace 为了 .agents/alfred/index). | 用户数据 |
ALFRED_INDEX_PERSIST_INTERVAL_SECONDS | 保持工作区索引写入器的间隔。 | 5 |
ALFRED_INDEX_WATCH_DEBOUNCE_MILLIS | 文件系统监视事件的去抖动窗口。 | 250 |
发展
测试
cargo test设计和合同
大多数设计/合同文件都存在于 docs/design/:
docs/design/ProjectSummary.mddocs/design/AlfredOverview.mddocs/design/Protocol.mddocs/design/ToolContracts.md
贡献
看 贡献.md。此项目使用 开发商原产地证书 并期望DCO在提交时签字。
安全
看 安全.md 用于报告漏洞。
支持
看 支持.md 获取支持渠道和故障排除指针。
许可证
此项目根据GNU GPL v3.0获得许可。看 许可证.md.
