@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/AGENT_BRIEFING.md +1 -0
- package/CHANGELOG.md +27 -0
- package/README.md +104 -351
- package/README.zh-CN.md +105 -306
- package/bin/llama-mcp.mjs +3 -2
- package/package.json +2 -6
- package/CONTRIBUTING.md +0 -100
- package/SECURITY.md +0 -62
- package/assets/llama-ventures-logo.svg +0 -25
- package/scripts/verify-agent-routing.mjs +0 -816
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
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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="
|
|
26
|
+
<a href="#给华人创业者向-llama-pitch">🚀 向 Llama pitch(无需账号)</a> ·
|
|
29
27
|
<a href="#安装">安装</a> ·
|
|
30
28
|
<a href="#认证">认证</a> ·
|
|
31
|
-
<a href="
|
|
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
|
-
>
|
|
40
|
-
>
|
|
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
|
-
|
|
79
|
-
|
|
44
|
+
网页版聊的是同一个 intake agent,结构化提取、12 维投资判断都是同一套,
|
|
45
|
+
只是入口换成了你的终端,或者你自己的 AI 助手。
|
|
80
46
|
|
|
81
47
|
```bash
|
|
82
|
-
|
|
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
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
>
|
|
114
|
-
> AI、Pre-seed 到 Series A、$3-5M
|
|
115
|
-
>
|
|
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
|
|
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
|
-
|
|
156
|
-
|
|
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
|
-
|
|
163
|
-
llama auth
|
|
164
|
-
llama
|
|
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
|
-
|
|
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
|
-
|
|
94
|
+
## 接入你的 AI 系统
|
|
180
95
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
96
|
+
这个包是 Llama Command 的**官方集成面**。自研 agent、LLM 应用都从这里接——
|
|
97
|
+
**不要直接调 HTTP API**:CLI/MCP 层负责认证链、稳定的 `Error[…]` 错误契约、
|
|
98
|
+
以及 schema 变化时的前向兼容([SemVer](#稳定性));裸 API 没有这些承诺。
|
|
184
99
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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
|
-
|
|
192
|
-
|
|
193
|
-
CLI 是 canonical 接口。底下的 HTTP API 也稳定,但 CLI 帮你处理了认证、错误格式、
|
|
194
|
-
schema 前向兼容——**即使你写脚本,也优先用 CLI**。
|
|
112
|
+
CLI 是 canonical 接口——认证、错误格式、schema 前向兼容都由它处理。
|
|
113
|
+
写脚本也优先用 CLI。
|
|
195
114
|
|
|
196
115
|
```bash
|
|
197
|
-
#
|
|
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
|
-
|
|
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
|
|
216
|
-
llama
|
|
217
|
-
llama
|
|
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
|
|
126
|
+
llama agent-onboard # 服务端下发的 agent 工作契约
|
|
261
127
|
```
|
|
262
128
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
### 错误码(给 agent 用)
|
|
129
|
+
Status 语义——`Interested`:接触前先记录关注 · `Outreached`:已联系、
|
|
130
|
+
尚无回应 · `Sourced`:已有真实关系信号。`sourceDirection` 是独立维度:
|
|
131
|
+
`Inbound` 流入,`Outbound` 我们主动。
|
|
268
132
|
|
|
269
|
-
|
|
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
|
-
|
|
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
|
-
|
|
283
|
-
|
|
284
|
-
|
|
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
|
-
|
|
305
|
-
|
|
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>
|
|
179
|
+
<summary><strong>Cursor / 任何 stdio MCP 客户端</strong></summary>
|
|
358
180
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
把客户端指过去就行。无需协议扩展、无需 transport flag。
|
|
181
|
+
把客户端指向 `llama-mcp` 可执行文件(`which llama-mcp`),JSON 结构同上。
|
|
182
|
+
无需协议扩展、无需 transport flag。
|
|
362
183
|
</details>
|
|
363
184
|
|
|
364
|
-
>
|
|
365
|
-
>
|
|
366
|
-
>
|
|
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
|
-
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
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
|
-
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
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
|
-
|
|
410
|
-
|
|
411
|
-
|
|
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
|
-
|
|
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
|
|
1036
|
-
"
|
|
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.
|
|
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": {
|