Nasiko:9500 星的 Agent 控制面,写它的地方不在这份仓库里

你 clone 下来的这个仓库,不是它真正在开发的那个仓库。Nasiko-Labs/nasiko 在 GitHub 上躺着 1,879 个文件、9.5k 个 Star,翻提交历史会看到一条 github-actions 机器人的提交,消息是 sync: reconcile published tree with the allowlist。仓库根目录还放着两个没人提的文件:.sync-marker 存着一个 commit sha,72 KB 的 .sync-manifest 是一份白名单,逐行列出允许被发布的文件。

唯一的 CI 工作流解释了同步的方向。.github/workflows/notify-private.yml 只做一件事:外部有人提 PR,就把编号、分支、标题、作者通过 repository_dispatch 派发到私有仓库 Nasiko-Labs/nasiko-cloud-rs。你读到的代码是从私有仓同步出来的,外部贡献则倒着流回去。

Nasiko:9500 星的 Agent 控制面,写它的地方不在这份仓库里

那它到底是什么。Nasiko 给自己的定位是 Open Runtime for AI Agents,一句话概括是坐在调用路径中间的那一层。你的团队里已经跑着 Claude Code、Codex、Cursor、OpenCode,每个都有自己的面板和计费口径,月底账单出来,没人说得清是谁花的、花在哪个模型上。Nasiko 在本地把这些 harness 找出来,把用量归进一套 schema,再把模型选择权从 harness 手里拿回来。

打开 README 之前,我已经在脑子里列出了三条它可能翻车的方式:又一个把 LLM 网关换个名字的中间商;又要往工具链里塞 SDK;又是靠概念撑起来的空壳。翻完架构文档和代码目录之后,这个判断收窄了不少。它的架构选择有硬理由,但它的开放程度和 README 给人的印象是两件事。

截至 2026 年 10 月 8 日,这个仓库 9,514 Star、2,065 Fork、47 位贡献者,最近一次代码推送就在昨天。这篇文章想弄明白三件事:它为什么非要站在调用路径中间,自己搭一套要付出什么代价,以及它真正开放的是哪一层。

为什么它非要站在调用路径中间

先看它要解决的那个死结。每一家 coding agent 厂商都用自己的私有单位计量,也没有任何一家愿意接收别家格式的用量上报。你最后拿到的是一堆互不相通的账单,不存在任何对账手段能把它们合成一个数字。README 对这点说得很直白:这件事没法从外部做,你必须待在调用真正发生的地方。

这话听着像宣传,其实是个架构约束。所以 Nasiko 是单进程设计,没有独立的网关组件。每一次 agent 之间的调用都被代理回服务器,服务器成了唯一的收窄点,限流、访问控制、链路追踪全部在这一个位置生效,而不是只在第一跳生效。承诺一个预算上限很容易,让上限真的拦得住请求,位置就得选对。

把它的模块摊开,三层结构很清楚:上面是客户端,中间是一个进程里塞进去的十来个子系统,下面是 Postgres、Redis、RustFS 和可观测性栈,再往下是真正跑 agent 的容器。

Nasiko:9500 星的 Agent 控制面,写它的地方不在这份仓库里

图里最该盯的是那些从 agent 容器往回指的箭头。agent 拿到的是一个 OPENAI_BASE_URL 加一枚短期身份令牌,它不认识任何真实的 provider key,也不清楚自己的密钥存在哪。LLM 路由器和 MCP 网关是两个独立出口,一个管模型调用,一个管工具调用,凭据都由服务器统一持有。

路由这件事的具体形态比宣传语有意思。你注册一次 provider 和 key,再把某个 harness 指向 Nasiko,入站协议和出站 provider 就被解耦了。Anthropic 格式的请求可以由你的 OpenAI key 来服务,反过来也成立。

Nasiko:9500 星的 Agent 控制面,写它的地方不在这份仓库里

图里的关键不是转发,是凭证从哪来。claude 的接入方式是在 Claude Code 的 settings.json 里配 apiKeyHelper 加 ANTHROPIC_BASE_URL,凭据来自 POST /api/agents/{id}/llm-token 签发的一小时 JWT;Claude Code 把它塞在 x-api-key 头而不是 Authorization 头,路由器两个都收。Codex 走的是 config.toml 里加一条 model_providers.nasiko,凭据按定时器刷新,不是每次请求都签一次。这些细节决定了它是不是真的无侵入。

第三个亮点在工具权限上。MCP 网关把 Composio 的工具包和你自己的 MCP server 合成一个目录,按 agent 过滤后再给出。规则分 allow、ask、block 三档,而且执行两次:一次在列出工具时,一次在调用落地时。被 block 的工具不是遭到拒绝,是根本没出现在工具列表里。配套的还有 Redis 撑起来的级联限制,深度、扇出、token 预算、超时、环检测,专治两个 agent 互相调用把自己绕晕。

架构这一层它对得起身价,把凭据、权限、预算三件事都收到了同一个收窄点上。不过架构正确和你能用得顺手是两码事,值得看看真开始装的时候会遇到什么。

装上跑起来,先备好七个容器和三个密钥

最快的路径只需要 Docker,不需要 Rust 工具链,服务端会在容器里自己编译。装法就是下面四行:

git clone https://github.com/Nasiko-Labs/nasiko.git
cd nasiko
cp .env.example .env
docker compose up -d

.env 里有几个值必须在启动前填好。SECRETS_ENCRYPTION_KEY 用 openssl rand -base64 32 生成,正好 32 个解码字节;JWT_SECRET 和 AGENT_JWT_SECRET 各自用 openssl rand -base64 48 单独生成,两者不能互相顶替。AGENT_JWT_SECRET 缺失的后果很硬,/api/agents/{id}/llm-token 会直接返回 503,网关认证按失败关闭处理,本地 coding agent 的路由整条不可用。另外三个是 ADMIN_PASSWORD、ADMIN_USERNAME 和一个真实的 OPENAI_API_KEY。

从 clone 到能在面板里跟 agent 说上话,整条链路是五步,每一步都有自己的失败方式。

Nasiko:9500 星的 Agent 控制面,写它的地方不在这份仓库里

这一步的代价在资源上。除了 nasiko-server 自己,compose 还会拉起 Postgres、Redis、RustFS、OTel Collector、Tempo、Loki 六个常驻服务,一套最小可用的存储与可观测性栈全都要跑在你的机器上。第一次构建要在 Docker 里编译整个 Rust 工作区,几分钟是正常的;打开 localhost:8080 用 admin 和 changeme 登录之后,第一件事应该就是把默认密码换掉。

想自己部署一个 agent,还得再装一遍 CLI,因为它是一个单独的 Rust crate,命令链在 README 里给得很完整:

cargo install --path cli/ --force
nasiko connect http://localhost:8080
nasiko auth login
nasiko new openai my-agent && cd my-agent
nasiko deploy .
nasiko chat "Hello there"

还有几个已经写进 README 的坑值得在上手前先知道。它们都不难修,但每一个都能让第一次启动白白多花半小时:

  • Windows 上 .env 的 CRLF 换行会让 bash 的 source 报 command not found,先 sed 掉行尾的 \r
  • 9000、4317、4318 端口被占用,多半是 Docker Desktop 和 WSL 原生 Docker 同时开着,wsl –shutdown 之后重来
  • Linux 上原生 Docker 不提供 host.docker.internal,agent 会报 Name or service not known,得手动补 host 映射

真正的上手体验还有一个藏得比较深的地方:它不是那种装上就能安静运行的东西,你得先接受它要占据七个容器,再开始谈它替你省了什么。

什么时候值得折腾,什么时候直接换路子

分界线其实很清楚,看你手上有多少个需要归属的 agent,以及是谁在问这笔账。

场景 典型用户 优势 局限
多个 coding agent 并行,账单对不上 工程效能与平台团队 本机发现加统一 schema 得自建一套控制面
给 agent 收口外部工具权限 安全与合规 未授权工具不进列表 要维护 MCP 连接器
混用框架的多 agent 流程 平台团队 A2A v1.0 加内嵌 registry 旧版 A2A agent 直接被拒
一个人写代码,一个 agent 独立开发者 装了就是多七个容器 收益低于维护成本

有几种情况直接换别的路子更省事:你只想管住一两个 agent 的账单,厂商自带的用量面板加一个本地统计脚本就够了;你要的只是模型路由和成本观测,LiteLLM、Langfuse 这类专门工具更轻。做决定之前,先把同类项目按“能不能拦请求”这条线分一遍,能拦和只能看是两种东西。

把竞品摆到同一张桌上会更清楚。LLM 网关那一类只解决路由;可观测性那一类只解决事后的账;coding agent 自己的用量面板只看得见自己。Nasiko 的差异化在于它同时占住了这三件事,代价是它也同时引入了三个系统的复杂度。

同类项目里还有一个常被忽略的替代方案:什么都不装。在两三个人的团队里,把 provider 的账单导出来人工对一次,一小时的活,比维护七个容器便宜得多。工具的价值取决于你要归属的对象有多少,而不是它看起来多完整。

场景说清楚了,剩下的疑问就集中在一处:一个正在加速的项目,它的 issue 区为什么静得吓人?

增长是真的,热闹的地方不对劲

指标 数据(2026-10-08) 说明
Stars 9,514 2026-08-17 时约 4.8k,七周翻倍
Forks 2,065 与 Star 之比约 1:4.6
贡献者 47 前十名多数账号带 nasiko- 前缀
Open PR 170 全部合并过的 PR 只有 29 个
Open Issues 19 关闭过的 issue 只有 2 个
协议 LICENSE 为 Apache-2.0 全文 GitHub 识别结果为 Other

增长曲线不掺水。提交活跃度从 2、3 月份每周个位数到二十几次,一路爬到最近四周合计 552 次提交,最高的单周 231 次,代码推送就在昨天。这不是一个停更的仓库,是一个正在加速的仓库。

但热闹的地方不对。19 个 open issue、2 个 closed issue,issue 区基本是空的;170 个开放 PR 对 29 个合并过的 PR,消化率不到两成。47 位贡献者的前十名里,nasiko-neeraj 提交 319 次、Satya 234 次、Akhil 181 次、nasiko-aditi 106 次,一眼能看出是公司团队在推。仓库还挂着 hacktoberfest 标签,外部的顺手 PR 和内部开发混在同一条队列里排队。协议那栏也留了个小尾巴:README 徽章和 LICENSE 正文都是 Apache-2.0,但 GitHub 的识别结果是 Other,企业内网的合规扫描器可能会报一条需要人工确认的条目。

社区声音能拿到的只有两条,而且都指向同一个地方。2026 年 10 月 5 日开的两个 issue,题目是 Codex: cached input tokens are counted twice, inflating tokens and cost 和 Codex: the first turn of every session is reported with zero token usage,两条都没有人回复。它们说的是同一件事:TokenOps 在 Codex 上的 token 统计还不准。一个用来给账单定性的工具,自己的账单还没算对。

第三方推荐语也点了边界:默认配置需要一个 OpenAI key,A2A 版本低于 1.0 的 agent 会被拒绝,生产部署前应重新设置管理员密码、TLS、ACL 和密钥,不能把示例里的 admin 和 changeme 直接带到公网。健康度的问题不是没人干活,是干活的全是自己人,那它到底算不算一个社区项目,这就值得单独聊一聊了。

值不值得跟,取决于你站在哪个位置

第一个判断,它解决的问题是真的。跨厂商 agent 用量的归属这件事,今天基本没有别的东西能做。最接近的是 LiteLLM、OpenRouter 这类 LLM 网关,它们管住了模型调用,但不管 coding agent 的会话上报、不管 MCP 工具权限、也不管部署;可观测性那一侧的 Langfuse、Helicone 擅长事后记录,不负责在调用落地时拦截。Nasiko 的位置在两者中间,它既汇总也拦截,这是它真正值钱的地方。

第二个判断,它的成本结构不支持先用起来再说。你的替代方案是自己攒,一个 LLM proxy 加一个 OTel Collector 加 Grafana,再补一张表格,这条路丑但可控,而且不需要三个必须自己生成、又不能随手轮换的密钥。Nasiko 的收益要等到你有七八个 agent、三四个 provider、真的有人在问“这个月谁花得多”的时候才兑现。没到这个规模,它就是一个负担。你愿意为一个还没兑现的收益先维护七个容器吗?

第三个判断是我改过方向的那个。一开始我把 170 个开放 PR 当成社区不健康的信号,后来发现要反过来看:不是社区排队等它回复,而是它的开发根本不发生在这份仓库里。公开仓是产物,私有仓是车间,外部 PR 被 dispatch 回车间处理。这套做法在商业开源里很常见,但它决定了一件事,你作为外部贡献者几乎不可能成为核心维护者。

第四个判断是 README 自己在漂移。开头讲的是发现并管住已经在跑的 coding agent,Features 和 Architecture 章节讲的是 A2A 多 agent 控制面、内嵌 OCI registry、三阶段智能路由,官网现在讲的是 TokenOps、Multi-Agent Harness、Runtime Controls 三根支柱。这三个故事不冲突,但它们不是同一个产品。对一个版本号还停在 0.1.0 的仓库来说,定位漂移比技术债更值得盯。往哪走看两个数:提交曲线在涨,Star 七周翻倍,热度是真的;外部 PR 消化率不到两成,issue 区几乎没人,治理是弱的。

说到这儿,判断本身已经完整了,剩下的事情很简单:量一下它和你的实际距离,再决定要不要动手。

读得到代码,读不到路线

如果你已经在跑三个以上 coding agent,账单开始对不上,值得先花十分钟做那件只读的事:装好 CLI,跑一次 nasiko agents discover。它会列出本机有哪些 harness、版本多少、配置文件在哪、有没有在向 Nasiko 上报,不改动任何 harness 设置、不需要账号、也不往机器外面发数据。这一步零成本,做完再决定要不要起那七个容器。

如果你还在观望,盯两个数就行。一是 Codex 那两个计费 issue 多久被修掉,二是开放 PR 的消化率有没有从 15% 往上走。这两点决定了它是停在一个公司自用的发布窗口,还是真的长成一个可以让外部人参与的基础设施。

最后一句提醒听起来有点别扭:一个 9,514 星、47 位贡献者、每天都在提交的项目,它的代码你可以全部读到,它的路线你读不到。把这一点想清楚再用它,剩下的部分它做得确实不错。

资源地址

资源 地址
GitHub https://github.com/Nasiko-Labs/nasiko
官方文档 https://docs.nasiko.com
官网 https://www.nasiko.com
A2A 协议规范 https://github.com/a2aproject/a2a-spec
Docker 安装 https://docs.docker.com/get-docker/
Rust 工具链 https://rustup.rs

 

skills资源开源项目

yeet :一句命令跑完提交到开 PR,OpenAI 是怎么收口的

2026-10-10 10:17:20

行业动态

时隔两年多,OpenAI发布GPT-5,从高中生跃升为博士?

2025-8-9 11:36:32

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧