@llamaventures/cli 1.17.1 → 1.17.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.zh-CN.md CHANGED
@@ -5,18 +5,16 @@
5
5
  <h1 align="center">@llamaventures/cli</h1>
6
6
 
7
7
  <p align="center">
8
- <strong>Llama Ventures 官方 CLI 与 MCP server。</strong><br/>
9
- 一行 <code>npm install</code>,一套统一的认证链,两个接口——
10
- 团队成员和 AI agent 都通过同一份客户端访问
11
- <a href="https://command.llamaventures.vc">command.llamaventures.vc</a>。
8
+ <strong>Llama Ventures CLI 与 MCP server。</strong><br/>
9
+ 一个包、两个可执行文件:<code>llama</code>——给人和脚本用的 CLI;
10
+ <code>llama-mcp</code>——带 58 个类型化工具的 stdio MCP server,任何
11
+ MCP 原生 agent 都能接。两者共享同一认证链、同一 HTTP 客户端、同一错误格式,
12
+ 连接 <a href="https://command.llamaventures.vc">command.llamaventures.vc</a>。
12
13
  </p>
13
14
 
14
15
  <p align="center">
15
16
  <a href="https://www.npmjs.com/package/@llamaventures/cli"><img alt="npm" src="https://img.shields.io/npm/v/@llamaventures/cli?label=npm&color=cb3837&logo=npm&logoColor=white"></a>
16
17
  <a href="https://github.com/Llama-Ventures/llama-cli/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/Llama-Ventures/llama-cli/actions/workflows/ci.yml/badge.svg"></a>
17
- <a href="https://docs.npmjs.com/trusted-publishers"><img alt="Provenance" src="https://img.shields.io/badge/provenance-signed-2e8b57?logo=npm"></a>
18
- <a href="https://nodejs.org/"><img alt="Node" src="https://img.shields.io/node/v/@llamaventures/cli?color=339933&logo=nodedotjs&logoColor=white"></a>
19
- <a href="https://modelcontextprotocol.io"><img alt="MCP 2024-11-05" src="https://img.shields.io/badge/MCP-2024--11--05-7d3aed"></a>
20
18
  <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
21
19
  </p>
22
20
 
@@ -25,273 +23,131 @@
25
23
  </p>
26
24
 
27
25
  <p align="center">
28
- <a href="#给华人创业者-向-llama-pitch">🚀 向 Llama pitch(无需账号)</a> ·
26
+ <a href="#给华人创业者向-llama-pitch">🚀 向 Llama pitch(无需账号)</a> ·
29
27
  <a href="#安装">安装</a> ·
30
28
  <a href="#认证">认证</a> ·
31
- <a href="#cli-速览">CLI</a> ·
29
+ <a href="#接入你的-ai-系统">接入你的 AI</a> ·
30
+ <a href="#cli">CLI</a> ·
32
31
  <a href="#mcp-server">MCP</a> ·
33
- <a href="AGENT_BRIEFING.md">Agent 协议</a> ·
34
- <a href="SECURITY.md">安全</a> ·
35
32
  <a href="CHANGELOG.md">更新日志</a>
36
33
  </p>
37
34
 
38
35
  > **公开源码、低摩擦安装;不是开源产品。** 大多数命令需要 Llama Ventures
39
- > 团队账号(联系 [gavin@llamaventures.vc](mailto:gavin@llamaventures.vc)
40
- > token)。**唯一例外是公开的 `pitch` 命令族**——任何创业者、EA、
41
- > 行政助理都能用,不需要 token,详见下方
42
- > [给华人创业者:向 Llama pitch](#给华人创业者-向-llama-pitch)。
43
-
44
- ---
45
-
46
- ## 包里有什么
47
-
48
- ```
49
- @llamaventures/cli
50
- ├── bin/llama 给人 + bash 用的交互式 CLI
51
- └── bin/llama-mcp 给 MCP 原生 agent 用的 stdio MCP server,56 个工具
52
- ```
53
-
54
- 两个 binary 共享 `lib/client.mjs`——**同一**认证链、**同一** HTTP 客户端、
55
- **同一**错误格式。CLI 与 MCP 不可能在身份或传输上漂移。CLI 自身零依赖;
56
- MCP server 仅依赖 `@modelcontextprotocol/sdk`(Anthropic 维护,pin 死版本)。
57
-
58
- ```mermaid
59
- flowchart LR
60
- Human([🧑‍💻 团队成员]) --> CLI[bin/llama<br/>argv 解析]
61
- Agent([🤖 MCP 原生 agent]) --> MCP[bin/llama-mcp<br/>stdio JSON-RPC]
62
- CLI --> Client[lib/client.mjs<br/>认证 · fetch · 错误]
63
- MCP --> Client
64
- Client -- HTTPS --> API[(command.llamaventures.vc)]
65
- classDef src fill:#dcfce7,stroke:#166534,color:#14532d
66
- classDef edge fill:#dbeafe,stroke:#1e40af,color:#1e3a8a
67
- class Human,Agent edge
68
- class CLI,MCP,Client src
69
- ```
70
-
71
- ---
36
+ > 团队账号(token 由团队管理员在 `/settings/tokens` 签发)。
37
+ > **唯一例外是公开的 `pitch` 命令族**——见下一节。
72
38
 
73
39
  ## 给华人创业者:向 Llama pitch
74
40
 
75
- 如果你是创业者、EA、或者帮老板探索的助理,**不需要 token、不需要找认识的人介绍**——
76
- 我们专门为外部 pitch 留了一条公开通道。它跟你在
41
+ 如果你是创业者、EA、或者帮老板探索的助理,**不需要 token、不需要找人介绍**——
42
+ 我们专门为外部 pitch 留了一条公开通道。它跟
77
43
  [command.llamaventures.vc/external-agent](https://command.llamaventures.vc/external-agent)
78
- 上看到的网页版聊的是同一个 intake agent,结构化提取、12 维投资判断都是同一套,
79
- 只是入口换成了你的终端,或者你自己的 AI 助手。
44
+ 网页版聊的是同一个 intake agent,结构化提取、12 维投资判断都是同一套,
45
+ 只是入口换成了你的终端,或者你自己的 AI 助手。
80
46
 
81
47
  ```bash
82
- # 1. CLI(不需要 Llama 账号)
83
- npm i -g @llamaventures/cli
84
-
85
- # 2. 起一个 session
48
+ npm i -g @llamaventures/cli # 不需要 Llama 账号
86
49
  llama pitch start --name "张三" --email "you@yourstartup.com"
87
-
88
- # 3. 跟 agent 聊——单条消息
89
50
  llama pitch say "我们做 X,目标 Y,团队背景 Z..."
90
-
91
- # 4. 把 deck / 一页纸传上来
92
51
  llama pitch upload ./deck.pdf
93
-
94
- # 5. 或者直接进交互式 REPL
95
- llama pitch
52
+ llama pitch # 或直接进交互式 REPL
96
53
  ```
97
54
 
98
- **也可以让你自己的 AI agent 帮你 pitch(A2A)。** 把这个仓库的 MCP server
99
- 挂到 Claude / Cursor / Codex / OpenClaw 上(任何能跑 MCP 的 agent 都行),
100
- 然后告诉它"帮我 pitch Llama Ventures"。它会用 `pitch_start`、
101
- `pitch_send_message`、`pitch_upload_file`、`pitch_finalize` 这五个工具
102
- 跟我们的 intake agent 对话。配置见 [MCP server](#mcp-server)。
103
-
104
- **会被服务端约束的上限**(跟网页版一样):
105
- - 单 IP 每天 5 个 session
106
- - 单邮箱每天 3 个 session
107
- - 30 分钟无活动自动结束
108
- - 单 session 100 条消息 / 1M token
109
-
110
- **Pitch 完成后**:agent 会调 `finalize_intake` 写入结构化档案,自动给我们团队
111
- 排进 inbox。我们看到后会主动联系你——不需要你再追。
55
+ **也可以让你自己的 AI agent 帮你 pitch(A2A)**:把本包的 MCP server 挂到
56
+ Claude / Cursor / 任何 MCP 客户端上(配置见 [MCP server](#mcp-server)),
57
+ 告诉它"帮我 pitch Llama Ventures",它会用 `pitch_*` 工具跟我们的 intake
58
+ agent 对话。服务端有速率限制(单 IP / 单邮箱 / 单 session)。
59
+ Pitch 完成后档案自动进我们团队的 inbox,我们会主动联系你。
112
60
 
113
- > 想了解 Llama Ventures 在投什么?看 [llamaventures.vc](https://llamaventures.vc)
114
- > AI、Pre-seed 到 Series A、$3-5M 票,跨美中。**懂得用 AI 写代码、懂得让 AI
115
- > 帮你 pitch 的 founder——我们爱看。**
116
-
117
- ---
61
+ > Llama Ventures 投什么?看 [llamaventures.vc](https://llamaventures.vc)——
62
+ > AI、Pre-seed 到 Series A、$3-5M 票,跨美中。**懂得让 AI 帮你干活的
63
+ > founder,我们爱看。**
118
64
 
119
65
  ## 安装
120
66
 
121
67
  ```bash
122
- npm i -g @llamaventures/cli
123
- ```
124
-
125
- 需要 **Node 18+**(用了原生 `fetch` 与 ESM)。CI 矩阵覆盖 18 / 20 / 22。
126
-
127
- 验证:
128
-
129
- ```bash
68
+ npm i -g @llamaventures/cli # Node 18+;llama-mcp 也会一起装上 PATH
130
69
  llama --version
131
- llama auth status # 会跑一次 /api/me 验证
70
+ llama auth status # 会跑一次 /api/me 验证
132
71
  ```
133
72
 
134
- 同一次安装会把 `llama-mcp` 也放到 `PATH` 上——MCP server 不用单独装包。
135
-
136
- > **从 `npm link` 升级过来?** CLI 以前住在 `llama-os/cli/` 目录,靠 `npm link`
137
- > 分发。从 v1.x 起改名 `@llamaventures/cli` 走 npm。
138
- > 跑一次 `npm i -g @llamaventures/cli@latest` 就完事;旧目录在 soak 期间
139
- > 还能用,但已经不是 source of truth。详见
140
- > [`llama-os/cli/DEPRECATED.md`](https://github.com/SoujiOkita98/llama-os/blob/main/cli/DEPRECATED.md)。
141
-
142
- ---
143
-
144
73
  ## 认证
145
74
 
146
- 客户端**按下面这个顺序**寻找凭证,每次调用都查一遍:
147
-
148
- | # | 来源 | 发送的 header | 适合谁 |
149
- |---|------|--------------|--------|
150
- | 1 | `gcloud auth print-identity-token` | `Authorization: Bearer …` | Llama 团队成员(零配置) |
151
- | 2 | `$LLAMA_TOKEN` 环境变量 | `X-Llama-Token` | CI runner、云上 sandbox agent |
152
- | 3 | `~/.llama/token`(mode `0600`) | `X-Llama-Token` | 本地常驻安装 |
153
- | 4 | `~/.llama-command/config.json` | `X-Llama-Token` | CLI v0.1 老路径——首次读取自动迁移到 `~/.llama/token` |
75
+ 客户端按下面的顺序找凭证,每次调用都查一遍:
154
76
 
155
- 如果 Bearer X-Llama-Token 同时存在,两个一起发。服务器先验 Bearer,
156
- 失败后回退到 X-Llama-Token。任何时候都可以用 `llama auth status`
157
- 看当前认证身份。
158
-
159
- ### 零配置 —— 团队成员推荐
77
+ | # | 来源 | 适合谁 |
78
+ |---|------|--------|
79
+ | 1 | `llama auth login`(OAuth,存 OS Keychain,自动刷新) | **所有人的推荐方式** |
80
+ | 2 | `gcloud auth print-identity-token` | 已配好 gcloud 的机器 |
81
+ | 3 | `$LLAMA_TOKEN` 环境变量 | CI、云上 sandbox agent |
82
+ | 4 | `~/.llama/token`(mode `0600`) | 长期 PAT |
83
+ | 5 | `~/.llama-command/config.json` | v0.1 老路径,自动迁移 |
160
84
 
161
85
  ```bash
162
- gcloud auth login # 一次性,选你的 @llamaventures.vc 账号
163
- llama auth status # 显示 role + email
164
- llama deal search acme-ai # 直接用
86
+ llama auth login # 浏览器登录;token 自动刷新、重启不丢
87
+ llama auth logout # 服务端吊销 + 清空本地
88
+ llama token set llc_… # /settings/tokens 签发的 PAT——落盘前先验证
89
+ llama auth status # 看当前身份和生效的认证方式
165
90
  ```
166
91
 
167
- ### 手动 token —— 适合无 gcloud / 稳定 CI
168
-
169
- 1. 登录 https://command.llamaventures.vc。
170
- 2. 打开 `/settings/tokens` → **Mint Token**。
171
- 3. 保存 `llc_…` 值:
172
-
173
- ```bash
174
- llama token set llc_paste_token_here
175
- # → 写入 ~/.llama/token (mode 0600)
176
- # → 落盘前会先打一次 /api/me,无效的 token 不会落到磁盘上
177
- ```
92
+ > **没账号?** 找你在 Llama Ventures 的对接人——任何邮箱都可以被签发 token。
178
93
 
179
- 或在 CI / 一次性环境里:
94
+ ## 接入你的 AI 系统
180
95
 
181
- ```bash
182
- export LLAMA_TOKEN=llc_paste_token_here
183
- ```
96
+ 这个包是 Llama Command 的**官方集成面**。自研 agent、LLM 应用都从这里接——
97
+ **不要直接调 HTTP API**:CLI/MCP 层负责认证链、稳定的 `Error[…]` 错误契约、
98
+ 以及 schema 变化时的前向兼容([SemVer](#稳定性));裸 API 没有这些承诺。
184
99
 
185
- > **没账号?** 邮件 [gavin@llamaventures.vc](mailto:gavin@llamaventures.vc)。
186
- > 任何邮箱(包括非 `@llamaventures.vc`)都能拿 token;system admin
187
- > `/settings/tokens` mint,token 第一次使用时自动建 user 行。
100
+ 1. **拿凭证**——`llama auth login`;无人值守系统用 PAT(`llama token set`
101
+ `$LLAMA_TOKEN`)。
102
+ 2. **安装**——`npm i -g @llamaventures/cli`。
103
+ 3. **接线**——MCP 原生 agent 指向 `llama-mcp`([各客户端配置](#mcp-server));
104
+ 其它形态子进程调用 `llama …`。
105
+ 4. **让 agent 自我入职**——会话开始跑一次 `llama agent-onboard`(或 MCP 的
106
+ `agent_briefing` prompt),拿到服务端下发的 Agent Runtime Contract,
107
+ 与线上永远同步。
108
+ 5. **验证**——`llama auth status`,然后 `llama deal search "<随便什么>"`。
188
109
 
189
- ---
110
+ ## CLI
190
111
 
191
- ## CLI 速览
192
-
193
- CLI 是 canonical 接口。底下的 HTTP API 也稳定,但 CLI 帮你处理了认证、错误格式、
194
- schema 前向兼容——**即使你写脚本,也优先用 CLI**。
112
+ CLI 是 canonical 接口——认证、错误格式、schema 前向兼容都由它处理。
113
+ 写脚本也优先用 CLI。
195
114
 
196
115
  ```bash
197
- # 认证 + token
198
- llama auth status
199
- llama token set <llc_...>
200
- llama token show
201
-
202
- # Pipeline——读
203
- llama deal search "acme ai"
204
- llama deal list --owner alex --status Interested
205
- llama deal list --owner alex --status Outreached
206
- llama deal list --source-direction Outbound --status Outreached
207
- llama deal list --owner alex --status Diligence
116
+ llama deal search "acme ai" # deal(deal list 用同一套过滤参数)
208
117
  llama deal show <dealId>
209
-
210
- # Pipeline——写
211
- llama deal create "Acme AI" --description "..." --source Gavin --source-direction Outbound --status Interested
212
- llama deal create "Acme AI" --description "..." --source Gavin --source-direction Outbound --status Outreached
213
- llama deal create "Acme AI" --description "..." --source Gavin --source-direction Inbound --status Sourced
118
+ llama deal feed <dealId> # 该 deal 的全部贡献,最新在前
119
+ llama deal create "Acme AI" --source alex --source-direction Outbound --status Interested
214
120
  llama deal update <dealId> status Diligence
215
- llama deal enrich <dealId> --dry-run
216
- llama deal enrich <dealId> --apply --executor server_agent
217
- llama deal enrich <dealId> --executor external_agent --prompt
218
- llama deal agent run <dealId> --message "collect founder evidence and update typed facts"
219
- llama deal delete <dealId> # 软删除(审计日志记录)
220
- llama deal restore <dealId>
221
-
222
- # Status 语义
223
- # Interested = 先记录/关注,还没有 outreach、intro、回复、deck submission 或 meeting。
224
- # Outreached = 只是联系/记录了,还没有回复或有效关系。
225
- # Sourced = 已有回复、intro、会议,或其它真实关系信号。
226
- # sourceDirection 是单独维度:
227
- # Inbound = 自然流入公司。
228
- # Outbound = 我们主动发现/建名单/触达。
229
-
230
- # Deal Brief——有序的、有类型的 block(text · link · embed · callout)
231
- llama brief blocks <dealId>
232
- llama brief add-text <dealId> --heading "..." --body "..."
233
- llama brief add-link <dealId> --url "..." --label "..."
234
- llama brief add-callout <dealId> --tone insight --heading "..." --body "..."
235
- llama brief edit <dealId> <blockId> [--heading ...] [--body ...]
236
- llama brief history <dealId> <blockId>
237
-
238
- # Ownership + 审批
239
- llama claim <dealId>
240
- llama nominate <dealId> --user <userId>
241
- llama approvals list
242
- llama approvals decide <approvalId> approved --note "..."
243
-
244
- # 时间线 + 帖子
245
- llama timeline <dealId>
246
- llama post <dealId> "消息内容" [--link url]
247
-
248
- # Agent runtime——Command 上的 Llama OS skill gateway
249
- llama agent bootstrap
250
- llama skills search "wiki delete tombstone"
251
- llama skills show llama-command
252
- llama explain https://command.llamaventures.vc/wiki/some-page
253
-
254
- # Wiki
255
- llama wiki search "<query>"
121
+ llama post <dealId> "备注内容"
122
+ llama brief add-text <dealId> --heading "..." --body "..."
123
+ llama wiki search "<查询词>"
256
124
  llama wiki save <slug> --title "..." --content "..."
257
-
258
- # Mentions 收件箱
259
125
  llama mentions
260
- llama mentions resolve <mentionId>
126
+ llama agent-onboard # 服务端下发的 agent 工作契约
261
127
  ```
262
128
 
263
- `llama --help` 看完整命令清单(50+ 个命令,覆盖 deals、briefs、ownership、
264
- timeline、facts、wiki、mentions、skill corrections、admin event feeds)。
265
- 所有删除默认软删除——可恢复,且通过 `deal_events` 留下审计痕迹。
266
-
267
- ### 错误码(给 agent 用)
129
+ Status 语义——`Interested`:接触前先记录关注 · `Outreached`:已联系、
130
+ 尚无回应 · `Sourced`:已有真实关系信号。`sourceDirection` 是独立维度:
131
+ `Inbound` 流入,`Outbound` 我们主动。
268
132
 
269
- CLI stderr 里抛错时带稳定的、可解析的前缀:
133
+ `llama --help` 看分组索引,`llama help all` 看全部 100+ 命令。
134
+ 所有删除默认软删除、有审计记录。
270
135
 
271
- | 前缀 | 含义 | 怎么恢复 |
272
- |------|------|---------|
273
- | `Error[NO_AUTH]` | 一个凭证都没找到 | `gcloud auth login` **或** `llama token set` |
274
- | `Error[UNAUTHORIZED]` | 服务端拒绝了我们发出去的凭证 | token 可能被 revoke / 过期 / gcloud 选错账号 |
136
+ ### 错误码
275
137
 
276
- MCP server `isError: true` 内容里返回相同的前缀,agent 不用解析自然语言就能 pattern-match。
138
+ | 前缀 | 含义 | 恢复 |
139
+ |------|------|------|
140
+ | `Error[NO_AUTH]` | 没找到任何凭证 | `llama auth login` 或 `llama token set` |
141
+ | `Error[UNAUTHORIZED]` | 服务端拒绝了凭证 | token 被吊销 / 过期 / 账号不对 |
277
142
 
278
- ---
143
+ MCP server 在 `isError: true` 内容里返回相同前缀。认证请求会向 Command
144
+ 发送有界、脱敏的遥测;`llama eval good|bad --last` 把真实搜索变成评测反馈。
279
145
 
280
146
  ## MCP server
281
147
 
282
- 随包发布的 `llama-mcp` 是一个 **stdio Model Context Protocol** server,
283
- 暴露 **56 typed tools**——基本镜像 CLI 最常用的命令。每个 tool 都是
284
- 具名、scoped 的;**没有**通用的 API passthrough,这是有意设计的(公开
285
- package 里一个能被 prompt-injection 触达的逃生通道,正是我们要避开的形状)。
286
-
287
- 覆盖面按 agent 真正会用的工作流分组:auth 诊断;live agent bootstrap;
288
- 授权后的 Llama OS skill search/read;Command URL/object inspect;deal search/show/create/
289
- update/feed;服务端 deal agent run;deal enrichment harness;带 trust ladder 的事实;brief blocks
290
- 和版本历史;wiki 读写删恢复;timeline posts 和 mentions;skill corrections;
291
- refresh triggers;外部 pitch intake;memo show/regenerate/save/reset;
292
- 以及 deal-scoped HTML docs、versions、bundles、restore/reset。
293
-
294
- 精确的 live list 以 `tools/list` 为准:
148
+ `llama-mcp` stdio MCP server,58 个类型化工具镜像 CLI 最常用的命令面。
149
+ 每个工具具名、有边界——**故意不提供**通用 API passthrough。认证链与 CLI
150
+ 完全一致。精确工具清单以 `tools/list` 为准:
295
151
 
296
152
  ```bash
297
153
  printf '%s\n' \
@@ -301,32 +157,14 @@ printf '%s\n' \
301
157
  | llama-mcp
302
158
  ```
303
159
 
304
- 认证链跟 CLI 完全一样(gcloud → `$LLAMA_TOKEN` → `~/.llama/token`)。
305
- `agent_briefing` 这个 MCP **prompt** 会在认证后拉取 Command 服务端的
306
- Agent Runtime Contract——刚装上 server 的 agent 不用离开协议就能给自己
307
- onboard。包内 [`AGENT_BRIEFING.md`](AGENT_BRIEFING.md) 只是服务端 briefing
308
- 临时不可用时的 fallback。
309
-
310
- 要读当前 Llama OS skills,用 runtime tools:`agent_bootstrap`、
311
- `skills_search`、`skills_read`、`object_inspect`。公开 npm 包不打包私有
312
- skill 正文;Command 只按当前 token 的权限返回可见内容。
313
-
314
- ### 接到你的 agent 上
315
-
316
- <details open>
317
- <summary><strong>Claude Desktop</strong>(macOS 路径示例)</summary>
160
+ <details>
161
+ <summary><strong>Claude Desktop</strong></summary>
318
162
 
319
- `~/Library/Application Support/Claude/claude_desktop_config.json`:
163
+ `~/Library/Application Support/Claude/claude_desktop_config.json`(macOS):
320
164
 
321
165
  ```json
322
- {
323
- "mcpServers": {
324
- "llama": { "command": "llama-mcp" }
325
- }
326
- }
166
+ { "mcpServers": { "llama": { "command": "llama-mcp" } } }
327
167
  ```
328
-
329
- 重启 Claude Desktop。工具会出现在 🛠️ 菜单里。
330
168
  </details>
331
169
 
332
170
  <details>
@@ -335,83 +173,44 @@ skill 正文;Command 只按当前 token 的权限返回可见内容。
335
173
  ```bash
336
174
  claude mcp add llama -- llama-mcp
337
175
  ```
338
-
339
- 或直接编辑 `~/.claude/claude.json`——JSON 结构和 Desktop 一样。
340
- </details>
341
-
342
- <details>
343
- <summary><strong>Cursor</strong></summary>
344
-
345
- `~/.cursor/mcp.json`:
346
-
347
- ```json
348
- {
349
- "mcpServers": {
350
- "llama": { "command": "llama-mcp" }
351
- }
352
- }
353
- ```
354
176
  </details>
355
177
 
356
178
  <details>
357
- <summary><strong>OpenCode / OpenClaw / Codex / 任何其它 stdio MCP 客户端</strong></summary>
179
+ <summary><strong>Cursor / 任何 stdio MCP 客户端</strong></summary>
358
180
 
359
- 大部分客户端都接受 `command` + `args`。先 `which llama-mcp` 找到可执行路径
360
- (一般是 `/usr/local/bin/llama-mcp` 或 `~/.npm-global/bin/llama-mcp`),
361
- 把客户端指过去就行。无需协议扩展、无需 transport flag。
181
+ 把客户端指向 `llama-mcp` 可执行文件(`which llama-mcp`),JSON 结构同上。
182
+ 无需协议扩展、无需 transport flag。
362
183
  </details>
363
184
 
364
- > 想让 agent 自己 onboard?跑 `llama agent-onboard`,或者从 MCP server
365
- > 拉 `agent_briefing` prompt——它会拿 Command 服务端的工作合约(CLI 状态、
366
- > attribution 语法、错误恢复、anti-pollution 规则)。
367
-
368
- ---
185
+ > agent?跑 `llama agent-onboard`(CLI)或拉 `agent_briefing` prompt
186
+ > (MCP),拿服务端的工作契约。包内
187
+ > [`AGENT_BRIEFING.md`](AGENT_BRIEFING.md) 只是离线兜底。
369
188
 
370
189
  ## 稳定性
371
190
 
372
- - **版本号:** 走 [SemVer](https://semver.org)。重命名或删除 CLI 命令 **major**。
373
- 新增 tool / command / flag → minor。修 bug → patch。CLI 自带 `--version`;
374
- MCP server `serverInfo` 里报告同一个值。
375
- - **向后兼容:** wire format(Bearer / X-Llama-Token)和 `Error[…]` 前缀
376
- 是公开契约,major 版本内不会变。
377
- - **服务端 schema 漂移:** 当 API 多了一个端点,下一个 minor 版本会带
378
- typed wrapper。在那之前,可以用 `llama` CLI 本身——它自带 40+ 命令
379
- 覆盖整个 API 表面,足够顶住 MCP 还没包到的端点。
380
-
381
- 详见 [`CHANGELOG.md`](CHANGELOG.md)。
382
-
383
- ---
191
+ - **[SemVer](https://semver.org)**:改名/删命令 → major;新工具/命令/flag
192
+ → minor;修 bug → patch。
193
+ - **公开契约**:wire format(Bearer / X-Llama-Token)和 `Error[…]` 前缀
194
+ major 版本内不变。
195
+ - **故意没有裸 API passthrough**——需要的 wrapper 还没有就开 issue,
196
+ 不要直接调 HTTP API
384
197
 
385
198
  ## 安全
386
199
 
387
- - **`@llamaventures/cli` 通过 npm
388
- [Trusted Publishers](https://docs.npmjs.com/trusted-publishers) 发布**——
389
- 仓库里**没有** `NPM_TOKEN`,发不出来 token 也就泄漏不了。
390
- 每个版本带 `--provenance`(sigstore 签名),npm 会显示 **Provenance** 徽章,
391
- 可追溯到具体的 GitHub Action workflow commit
392
- - **依赖树最小化。** CLI 本身零依赖;MCP server 只依赖
393
- `@modelcontextprotocol/sdk`,pin 死版本。
394
- - **Branch protection** 锁 `main`;Dependabot、secret scanning、
395
- push protection 都开了。
396
- - **Token:** 本地存在 `~/.llama/token`,mode `0600`。服务端只存 sha256 hash——
397
- 明文只会在用户手里出现,永远不在数据库里。
398
-
399
- 报告漏洞:见 [`SECURITY.md`](SECURITY.md)。**不要**在公开 issue 里报安全 bug。
400
-
401
- ---
402
-
403
- ## 贡献
404
-
405
- 这是 Llama Ventures 内部维护的工具。团队成员的 PR 欢迎——
406
- 详见 [`CONTRIBUTING.md`](CONTRIBUTING.md)(本地开发环、发版流程、
407
- 项目约定:零依赖、CLI/MCP 同步、稳定的 `Error[…]` 前缀)。
200
+ - 通过 npm [Trusted Publishers](https://docs.npmjs.com/trusted-publishers)
201
+ (OIDC)+ `--provenance` 发布——不存在可泄漏的 npm token。
202
+ - CLI 零运行时依赖;MCP server 只依赖 `@modelcontextprotocol/sdk`,pin 死版本。
203
+ - main 分支保护、Dependabot、secret scanning、push protection 全开。
204
+ - Token:本地 `~/.llama/token` mode `0600`;服务端只存 sha256 hash
408
205
 
409
- 外部贡献:文档错漏、流程报告类的 issue 欢迎。如果你想做的事是
410
- "我想让 Llama Ventures 看到我的项目"——请走
411
- [向 Llama pitch](#给华人创业者-向-llama-pitch) 那条路。
206
+ 报告安全漏洞请走
207
+ [GitHub 私密通道](https://github.com/Llama-Ventures/llama-cli/security/advisories/new),
208
+ 不要发公开 issue。详见 [`SECURITY.md`](SECURITY.md)
412
209
 
413
- ---
210
+ ## 贡献与 License
414
211
 
415
- ## License
212
+ Llama Ventures 内部维护,团队 PR 欢迎(见 [`CONTRIBUTING.md`](CONTRIBUTING.md))。
213
+ 外部:文档错漏类 issue 欢迎;想让我们看到你的项目请走
214
+ [pitch 通道](#给华人创业者向-llama-pitch)。
416
215
 
417
216
  [MIT](LICENSE) — © 2026 Llama Ventures, Inc.
package/bin/llama-mcp.mjs CHANGED
@@ -1032,8 +1032,9 @@ server.registerTool(
1032
1032
  "deal_refresh_persona",
1033
1033
  {
1034
1034
  description:
1035
- "Regenerate one persona's analysis section for a deal. persona gavin | kyle | jack | " +
1036
- "david | bryan | herman | hongjiang | liuyi | kevin. Returns a runId (or null if debounced).",
1035
+ "Regenerate one persona's analysis section for a deal. persona = a server-configured " +
1036
+ "persona key (unknown keys are rejected; discover the roster via agent_bootstrap). " +
1037
+ "Returns a runId (or null if debounced).",
1037
1038
  inputSchema: {
1038
1039
  dealId: z.string(),
1039
1040
  persona: z.string(),
package/package.json CHANGED
@@ -1,28 +1,24 @@
1
1
  {
2
2
  "name": "@llamaventures/cli",
3
- "version": "1.17.1",
3
+ "version": "1.17.3",
4
4
  "description": "CLI + MCP server for the Llama Ventures investment workbench (command.llamaventures.vc).",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "test": "npm run test:agent-routing",
8
8
  "test:agent-routing": "node scripts/verify-agent-routing.mjs",
9
- "verify:release": "npm test && npm pack --dry-run"
9
+ "verify:release": "npm test && node scripts/verify-tarball-clean.mjs && npm pack --dry-run"
10
10
  },
11
11
  "bin": {
12
12
  "llama": "bin/llama.mjs",
13
13
  "llama-mcp": "bin/llama-mcp.mjs"
14
14
  },
15
15
  "files": [
16
- "assets/",
17
16
  "bin/",
18
17
  "lib/",
19
- "scripts/verify-agent-routing.mjs",
20
18
  "AGENT_BRIEFING.md",
21
19
  "CHANGELOG.md",
22
- "CONTRIBUTING.md",
23
20
  "README.md",
24
21
  "README.zh-CN.md",
25
- "SECURITY.md",
26
22
  "LICENSE"
27
23
  ],
28
24
  "engines": {