agentstatelabs/AgentStateDeveloper
GitHub: agentstatelabs/AgentStateDeveloper
为 AI 编码 Agent 生成的代码提供结构化的决策账本、效果声明和可查询调用图,实现代码变更的可审计与可追溯。
Stars: 1 | Forks: 0
# AgentStateDeveloper
为 Agent 编写的代码提供代码级上下文和审计覆盖层。
ASD 为每个函数提供一个决策账本、一个效果声明和一个
调用图 —— 所有这些都可以由编写代码的 Agent 进行查询,并且
全部提交到 git 中,因此它们会随每次克隆而传播。
**套件的一部分:** ASD(开发者专属代码上下文)与
**[CTXone](https://github.com/ctxone/ctxone)**(团队共享记忆)配对使用。安装
其中一个时会提供另一个 —— 参见 [与 CTXone 配对](#pairs-with-ctxone)。
## 安装
### macOS / Linux — Homebrew(推荐)
```
brew tap agentstatelabs/agentstatedeveloper
brew trust agentstatelabs/agentstatedeveloper # one-time, third-party-tap trust
brew install asd
```
安装 `asd`、`asd-mcp` 和 `asd-serve`。通过 `brew upgrade asd` 进行升级。
### macOS / Linux — 单行命令
```
curl -fsSL https://raw.githubusercontent.com/agentstatelabs/AgentStateDeveloper/main/install.sh | sh
```
将三个二进制文件放入 `~/.local/bin`。可选覆盖项:
`ASD_VERSION=v1.2.0`、`INSTALL_DIR=/usr/local/bin`。
### Windows — PowerShell
```
iwr https://raw.githubusercontent.com/agentstatelabs/AgentStateDeveloper/main/install.ps1 | iex
```
将 `asd.exe`、`asd-mcp.exe` 和 `asd-serve.exe` 安装到
`%LOCALAPPDATA%\asd\bin` 并将其添加到您的用户 `PATH` 中。在安装后
打开一个新的 PowerShell 以使新 PATH 生效。
### 从源码构建(需要 Rust 工具链)
```
cargo install --path crates/agentstatedeveloper-cli # installs asd
cargo install --path crates/agentstatedeveloper-mcp # installs asd-mcp + asd-serve
```
### 卸载
```
curl -fsSL https://raw.githubusercontent.com/agentstatelabs/AgentStateDeveloper/main/uninstall.sh | sh
# 或者:
brew uninstall asd
```
## 功能说明
| 原语 | 您的收益 |
|---|---|
| **决策账本** | 为任何符号追加决策、隐患、依据和约束。条目在重命名后依然存在。支持批准、拒绝或撤回。 |
| **效果声明** | 17 个类别(`io.fs.read`、`io.net.out`、`io.db.write` 等)。按符号声明,并通过调用图传递性传播。 |
| **语义索引** | 每个由 tree-sitter 解析的函数、方法和类。支持 9 种语言:Python、TypeScript、Rust、Go、Java、C#、Ruby、Kotlin、Swift。 |
| **调用图** | 模块内和跨模块的边。传递效果自动传播。 |
| **策略门禁** | 基于文件的 JSON 规则:按操作和参与者类型进行允许、拒绝或需要批准。 |
| **批准机制** | 批准、拒绝或撤回账本条目。完整的批准工作流。 |
| **审计事件流** | 哈希链式 JSONL 日志,记录每一次账本变更和策略评估。 |
| **Git 原生辅助文件** | 已提交的、紧凑的账本条目子集(决策、隐患、方案、映射、分类、跟进事项、Agent 思考)存在于 `.asd/conclusions/*.jsonl` 中 —— 提交到 git,随每次克隆传播。是千字节,而不是兆字节。 |
## 与 CTXone 配对
ASD 和 **[CTXone](https://github.com/ctxone/ctxone)** 作为一个套件构建:
- **ASD** —— 开发者专属的**代码上下文**:面向您面前的代码提供决策账本、效果
声明、调用图和影响分析。
- **CTXone** —— **团队层**:在整个团队中共享的决策、计划和记忆。
各自均可独立运行,但结合使用效果更佳:
- 安装其中任何一个都会**提示设置另一个** —— 一次性、可关闭的
提醒(使用 `--no-nudge` 或 `ASD_NO_SUGGEST=1` 抑制)。
- 当两者都安装后,`asd skill` 还会安装一个**组合套件技能**,
该技能会教导 Agent 联合工作流:使用 ASD 处理代码细节
(影响、不变量),并将您的决策记录到 CTXone 中,以便团队
继承。
- `asd bootstrap` 会提示安装**两者**。
## 快速开始
```
# Clone 和 build
git clone https://github.com/agentstatelabs/AgentStateDeveloper.git
cd AgentStateDeveloper
cargo install --path crates/agentstatedeveloper-cli
cargo install --path crates/agentstatedeveloper-mcp
# 初始化你的项目
cd my-project
asd init
asd index .
# 读取一个 symbol
asd read payments.chargeCard
# Append 一个 ledger 条目
asd ledger append payments.chargeCard \
--kind hazard \
--summary "fails silently above 10000 — caller must check return value" \
--author-kind human \
--author-id alice@example.com
# 用你的 agent 工具注册 MCP server
asd mcp install
# Export 已 committed 的 sidecar 并 commit
asd conclusions export
git add .asd/conclusions/
git commit -m "chore: sync ASD sidecar"
```
(`asd init` 的 pre-commit 钩子会自动运行 `asd conclusions export`;
上面显式的两步操作仅用于说明正在发生的事情。)
### MCP ↔ CLI 命名参考
ASD 有两个具有两种命名约定的接口:MCP 使用扁平
命名空间(`ledger_append`、`code_search`),因此工具不会与其他
MCP 服务器发生冲突;而 CLI 使用嵌套方式(`asd ledger append`、`asd search`)。
规范的映射位于 [docs/mcp-cli-mapping.md](docs/mcp-cli-mapping.md) 中。
这两种形式在 CLI 上都适用 —— 接受过旧版 MCP 时代文档训练的 Agent 可以
输入 `asd ledger append`,也可以(通过 Plan D t-003 中的 clap 别名)
输入等效的 `asd code_search` / `asd callers_of` 等。
### 面向 Agent 的简要输出模式
`asd` 默认输出详细的 JSON 格式,这对人类和
结构化解析流水线很有帮助,但会消耗 Agent 很少需要的 token。
设置 `ASD_FORMAT=brief`(或在每次调用时传入 `--brief`),将
`read` / `callers` / `callees` 的响应投射为仅包含核心字段
(qname、file:line、签名、文档第一行)。通常在这些
命令上能减少:60–80% 的消耗。
建议在任何驱动 `asd` 的 Agent 进程启动时执行一次此操作:
```
export ASD_FORMAT=brief
```
适用于 CLI 和 MCP。生成的 `asd-mcp` 服务器在启动时从
其父进程继承 `ASD_FORMAT=brief`,并通过
相同的紧凑格式投射三个调用量最大的读取工具(`code_read`、`code_search`、
`references`)。
## Agent 设置
ASD 通过几个层级接入您的编码 Agent。最快的途径是让
Agent 自行设置。
### 粘贴给您的 Agent(推荐)
```
asd bootstrap
```
打印出一个简短的文本块,您可以将其粘贴到您正在使用的任何 Agent 中(Claude
Code、Cursor、Codex、Gemini CLI 等)。然后 Agent 会自行安装、索引
并连接 ASD —— 并且也会提议设置 **CTXone**(团队层)。
### 单独命令
| 命令 | 设置内容 |
|---|---|
| `asd mcp install` | 在检测到的每个 Agent 的 MCP 配置中注册 `asd-mcp` stdio 服务器 —— Claude Code、Claude Desktop、Cursor、Codex、Gemini CLI、Windsurf、Zed、VS Code、Cline、Kilo Code、Antigravity 等。重启工具以激活。 |
| `asd skill` | 将 ASD 的 **Agent 技能**(`SKILL.md`)安装到每个宿主的 skills 目录中 —— 教导 Agent *何时*使用 ASD。带有版本戳,并且不会覆盖磁盘上较新的技能。当存在 `ctx` CLI 时,它还会安装组合的 **ASD + CTXone** 套件技能。 |
| `asd mcp instructions` | 将一个受管理的、常驻的使用说明块注入到 `AGENTS.md` / `CLAUDE.md` 中(幂等 —— 重复运行是安全的)。 |
| `asd watch` | 监控代码仓库并在源代码更改时重新索引,因此索引永远不会悄无声息地漂移。 |
```
asd mcp status # registration status across all tools
asd mcp install --tool cursor # one specific tool
asd mcp install --db /abs/db # non-default db path
asd mcp uninstall # remove from all tools
asd skill --status # what's installed, per host
asd skill --dry-run # preview without writing
```
MCP 服务器会读取 `ASD_DB`(在 env 块中由 `install` 设置),以便 Agent
始终连接到正确的项目数据库。
## Git 原生辅助文件
ASD 具有两个磁盘位置和一个 SQLite 内的命名空间。了解
哪个是哪个可以避免意外:
| 位置 | 包含内容 | 是否由 git 跟踪? | 对什么具有权威性? |
|----------|--------------|-----------------|---------------------|
| `.asd-state.db` | 实时的 SQLite ASG(索引、调用图、FTS、完整账本、追踪) | **否**(被 gitignore 忽略) | 运行时的一切 |
| `.asd/conclusions/*.jsonl` | 紧凑子集:决策、分类、映射、隐患、方案、跟进事项、Agent 思考 | **是** | 全新克隆时需要继承的内容 |
| `.asd/v1/`(旧版) | 较旧的详细镜像 —— 已被 `.asd/conclusions/` 取代 | **否**(被 gitignore 忽略) | 残留物;`asd sync` / `asd hydrate` 仍会为了本地调试对其进行读写。不在提交路径上。 |
原则是:**已提交的辅助文件承载判断**(Agent 或
人类必须做出的决策)。**其他一切都是可重新生成的**,
可通过 `asd index .` 从源代码生成,因此被 gitignore 忽略。
**一次性设置:**
```
asd init
```
```
initialized at ./.asd-state.db
.gitignore: updated (.asd-state.db and .asd/v1/ ignored — both are local derived state)
ASD git hooks installed (.asd/hooks/):
pre-commit trigger: git commit
command: asd conclusions export
purpose: write committed conclusions (decisions/hazards/recipes/…) to .asd/conclusions/*.jsonl
post-merge trigger: git merge / git pull
command: asd conclusions import && asd index .
purpose: import committed .asd/conclusions/ into local ledger and rebuild index
post-checkout trigger: git checkout / git switch
command: asd conclusions import && asd index .
purpose: sync local db to the checked-out branch's sidecar state
core.hooksPath → .asd/hooks (hooks are now active)
To skip hook installation: asd init --no-hooks
To review hooks later: asd hooks
```
在 `asd init` 之后,pre-commit 钩子会在每次提交时自动运行 `asd conclusions export` —— 无需手动执行步骤。
**克隆后的引导:**
```
git clone
asd init # installs hooks, updates .gitignore
asd conclusions import # loads .asd/conclusions/*.jsonl → local ledger
asd index . # rebuilds derived semantic index from source
asd mcp install # registers asd-mcp with your agent tools
```
## 索引
```
asd index . # index current directory
asd index . --verbose # show each file as it is processed, list skipped files
```
标准输出:
```
Indexing 42 files under . …
Done. 187 symbols, 187 effects. (12 files skipped — run with -v to list)
```
无法识别的文件类型(`.yaml`、`.json`、`.md` 等)在标准模式下会被静默跳过,
并在 `--verbose` 模式下显示为 `[skip]`。`skipped`
计数始终包含在 JSON 摘要中。
## 接口
- **`asd`** —— CLI:导向(`architecture`、`search`、`trust`、`map`),变更准备(`prepare-change`、`impact`、`checklist`、`since`、`investigate`、`annotate-commit`、`task-close`、`test-summary`),账本(`ledger`、`invariant`、`conclusions`、`scratch`、`think`),以及底层命令(`init`、`index`、`sync`、`audit`、`hooks`、`mcp`、`skill`、`watch`) —— 完整集合请参见 [`asd --help`](docs/FEATURES.md)
- **`asd-mcp`** —— 向编码 Agent 暴露 63 个工具的 stdio MCP 服务器
- **`asd-serve`** —— HTTP 服务器 + Lens 审查 UI
## MCP 工具
Agent 通过 **63 个 MCP 工具** 访问 ASD,涵盖代码搜索/读取、
调用图、导向(`architecture`、`trust`、`endpoints`、`dead_code`)、影响
和变更分析、决策账本、不变量、效果、结论、
临时记录、Agent 思考、反馈和审计 —— 例如 `code_search`、
`code_read`、`callers`、`callees`、`context_for`、`impact`、`prepare_change`、
`since`、`architecture`、`trust`、`ledger_append`、`invariant_add`、
`effect_declare`、`conclusions_export`、`scratch_write`、`think_speculate`、
`feedback_promote`、`audit_verify`、`reindex`。完整列表见
[docs/FEATURES.md](docs/FEATURES.md#mcp-tools)。
## 文档
**入门:**
- [操作指南](docs/WALKTHROUGH.md) —— 安装 → 日常循环 → 底层运行机制 → 结合使用 ASD + CTXone
- [功能与命令参考](docs/FEATURES.md) —— 解释每一个命令、原语和 MCP 工具
- [联合功能](docs/FEDERATION.md) —— 将 ASD 指向多个代码仓库,以实现跨仓库边缘和感知决策的影响分析(`asd repo edges/impact`)
**参考:**
- [MCP ↔ CLI 映射](docs/mcp-cli-mapping.md) —— 两种命名约定并排展示
- [代码仓库注册表](docs/repo-registry.md) —— 共享的多代码仓库注册表(`asd repo`)
- [初始读取提示](docs/initial-read-prompt.md) —— `asd think` / `asd map` 背后的冷启动导向提示
- [与 RTK 配对](docs/PAIRING_WITH_RTK.md)
**许可:**
- [许可与版本](LICENSING.md) —— 通俗易懂的 BSL-1.1 + OSS / Team / Enterprise 版本说明
## 许可与版本
ASD 是 **开源的,并提供商业支持**,分为三个版本发布:
- **OSS**(此代码仓库) —— 完整的面向开发者的引擎:索引、账本、效果、
调用图、影响分析、不变量、代码仓库内跨服务边缘,以及 Agent
引导。自我托管,无需账号。
- **Team** —— 跨代码仓库层(项目组合架构、跨仓库影响
分析和失效端点分析、团队共享的运行时信心),与
**[CTXone](https://github.com/ctxone/ctxone)** 配对作为团队共享记忆。
- **Enterprise** —— 组织级治理:端点注册表、变更治理
门禁、审计/SIEM 导出、组织仪表板,以及基于 RBAC 的 Agent 推广。
代码采用 **BSL-1.1** 许可,并在每次发布
四年后转换为 **Apache-2.0** 许可 —— 内部使用免费;重新分发托管
销售需要商业许可。完整的通俗语言摘要和版本
细分:**[LICENSING.md](LICENSING.md)**。Team/Enterprise 或商业
问题咨询:[licensing@agentstatelabs.com](mailto:licensing@agentstatelabs.com)。
标签:AI编程助手, IPv6支持, MCP, Rust, SOC Prime, 上下文管理, 云安全监控, 可视化界面, 客户端加密, 开发工具, 网络流量审计, 静态分析