ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Sim CLI 实战指南:用终端驱动 Sim 平台的工作流、日志与知识库

Sim CLI 实战指南:用终端驱动 Sim 平台的工作流、日志与知识库 Sim CLI 实战指南用终端驱动 Sim 平台的工作流、日志与知识库【免费下载链接】simSim is the collaborative workspace to build, deploy, and monitor AI agents and workflows. Used by 100,000 builders.项目地址: https://gitcode.com/GitHub_Trending/sim16/simSim CLIsim是 Sim 协作平台的官方命令行客户端面向构建、部署和管理 AI Agent 与工作流的开发者让你无需打开浏览器就能在终端中运行工作流、查看运行日志、查询数据表、上传下载文件、检索知识库并管理工作区资源。读完本文你将掌握sim的完整安装、登录与多 Profile 配置、常用命令矩阵、JSON/脚本化输出以及 CI 环境下的无交互自动化方案并理解其设备授权流与配置解析的底层实现。环境要求与安装Sim CLI 以 npm 包形式发布package.json中声明了engines: { node: 20 }因此需要 Node.js 20 或更新版本包内bin入口指向dist/index.js安装后即获得sim命令。全局安装并验证版本npm install --global sim sim --version也可以不全局安装直接用npx运行任意命令npx sim --help需要说明的是Sim CLI 本身不负责安装或运行 Sim 平台——它是一个客户端用于连接已有的 Sim 云账号或自托管部署如需搭建服务端请参考项目文档中的自托管Docker指南。快速上手登录、校验与运行第一个工作流登录设备授权流登录默认 profilesim loginCLI 会打开浏览器并打印一个配对码pairing code。你需要在浏览器页面中核对终端与浏览器显示的配对码一致然后确认登录并选择一个工作区被选中的工作区会成为该 profile 的默认工作区。从源码看这一流程实现为 OAuth 设备授权授权device authorization grant的变体见 auth/device-flow.tsCLI 本地生成 32 字节随机熵的request与pollSecret只把BASE64URL(SHA256(pollSecret))作为challenge放进浏览器审批 URL——浏览器链路中不携带任何可兑换的凭据配对码从无相似字符字母表ABCDEFGHJKLMNPQRSTUVWXYZ23456789中抽取格式为XXXX-XXXX方便跨屏比对device-flow.ts登录成功后 CLI 以 2 秒间隔轮询/api/cli/auth/poll最长等待 15 分钟409/429/5xx 等瞬态状态会继续等待而 400/401/403/404 等明确拒绝则立即报错登录不启动本地回调服务器因此同样的流程在 SSH 会话和容器中也能正常工作。当浏览器在另一台机器上时使用sim login --no-browserCLI 只会打印审批 URL 供你手动复制。登录成功会把个人 API key 保存在本地。sim login --scope copilot与默认的--scope platform分别对应两类密钥空间若服务器签发的 key 与请求的 scope 不一致CLI 会明确拒绝存储。校验当前配置sim whoamiwhoami会同时验证 endpoint、API key 与工作区三者是否协同工作并报告当前 key 是个人 key 还是工作区级 key。部分管理类与部署类操作要求个人 key。注意退出码语义见 commands/auth.ts校验通过为0凭据本身有误401/403/404为1而网络不可达、缺少工作区等无法完成校验的情形为2——脚本可以根据退出码区分重新登录与检查网络/配置两类修复动作。列出、部署与运行工作流sim workflows list sim workflows run workflowId --input {ticketId:T-4821}工作流在运行前必须先部署sim workflows deploy workflowId遵循--follow可以跟随某次运行的实时输出sim workflows run workflowId --followID 前缀规则工作流、知识库和工作区 ID 均为 UUID表 ID 以tbl_开头文件 ID 以wf_开头。尽管带wf_前缀wf_标识的是文件而非工作流这一点在 program.ts 的帮助尾注中也有明确提醒。另外审计日志或自定义工具 ID 可能以连字符开头、会被解析成 flag此时需在 ID 前加--分隔符例如sim audit-logs get -- -HlDcD1z76nK6R4crsUp0。Profile 机制多环境配置的核心Profile 是一份命名的 CLI 配置决定四件事连接哪个 Sim 部署endpoint用哪个 API key 认证默认面向哪个工作区命令输出以何种格式呈现不指定 profile 时使用default。选择 profile 有三种等价方式--profile、短形式-P以及环境变量SIM_PROFILEsim workflows list --profile production sim -P production logs list SIM_PROFILEproduction sim tables list输入未知的 profile 名会报错并列出已配置的 profile 列表当存在编辑距离不超过 2 的近似名称时还会给出 Did you mean 建议实现见 config/profile.ts。login与configure是例外因为这两个命令本身可以创建新 profile。方式一一次登录、多个工作区先sim login再创建共享当前登录 API key、但拥有各自默认工作区的 profilesim workspaces list sim profile add acme --workspace workspaceId sim --profile acme whoami在交互式终端中省略--workspace时CLI 会列出可用工作区让你选择超过 1000 个时要求显式传入--workspace id。新 profile 只保存一个auth_profile引用指向现有登录不会复制 API key见 commands/auth.ts。auth_profile引用是刻意设计为不可递归的手工编辑出的循环引用或悬空引用会立即报错而不是等到请求时才表现为无 key。方式二独立账号或独立部署用新 profile 名直接执行login当 profile 应指向自托管或本地部署时追加--endpointsim login --profile work sim login --profile local --endpoint http://localhost:3000每个 profile 各自保存自己的 API key登录时选择的 endpoint 也会一并写入 profile。查看与修改 profilesim profiles sim configure --profile work sim configure --profile work --set-workspace workspaceId sim configure --profile work --set-output json sim configure --profile local --set-endpoint http://localhost:3000 sim whoami --profile worksim profiles用*标记当前激活的 profile不带任何--set-*参数运行sim configure会打印该 profile 已保存的设置。configure还支持--unset endpoint|workspace|output来删除某个设置注意设置项与根级 flag 是孪生的直接使用--endpoint等根 flag 会被拒绝并提示改用--set-endpoint持久化避免看起来成功但实际没生效的陷阱见 commands/configure.ts。配置文件与凭据存储非敏感设置存放在~/.sim/configAPI key单独存放在~/.sim/credentials写入权限为0600且创建后也会显式chmod 0600防止手工touch出来的文件残留宽权限见 config/profile.ts通过SIM_CONFIG_DIR可整体更换基础目录SIM_CONFIG_FILE与SIM_CREDENTIALS_FILE可分别覆盖两个文件见 config/paths.ts。配置文件采用 INI 格式非默认 profile 的段头写作[profile name]凭据文件则使用裸[name]——这是刻意复刻 AWS CLI 的不对称约定让既有肌肉记忆和工具链直接迁移config/profile.ts。新 profile 名称必须匹配^[A-Za-z0-9][A-Za-z0-9._-]*$因为名称会进入无转义语法的 INI 段头非法字符会伪造出另一个 profile 的段。配置解析优先级每个设置按以下顺序取第一个可用值命令行 flag环境变量选中的 profile配置文件内置默认值sim whoami会同时显示解析后的值与每一项的来源flag/env/config/credentials/default/unset。完整的解析链路在 config/profile.ts 的resolveProfile中实现其中endpoint 的默认值是https://www.sim.ai而非裸域sim.ai——sim.ai会对/api/**返回 301 到www.sim.ai而 CLI 拒绝跟随重定向因为 301 会把 POST 改写为无 body 的 GET导致写操作静默失效并可能把 API key 交给重定向目标--workspace 这类显式空白 flag 会被拒绝--output由 commander 的choices()提前拦截空字符串环境变量按未设置处理但用户显式输入的空白 flag 不在此列endpoint 与 workspace id 都会经过规范化校验拒绝换行/控制字符剔除尾随斜杠仅接受http:/https:协议。常用命令速查任何层级都可以用--help查看子命令与 flagsim --help sim workflows --help sim tables rows query --help最常用的命令任务命令向 Sim 询问工作区情况sim chat Which workflows failed today?列出或查看工作流sim workflows list、sim workflows get workflowId部署或运行工作流sim workflows deploy workflowId、sim workflows run workflowId跟随工作流运行sim workflows run workflowId --follow查看工作流运行记录sim workflows runs list --workflow workflowId排查错误sim logs list --level error、sim logs follow查看运行追踪sim logs get runId --trace操作数据表sim tables list、sim tables rows query tableId导入 CSVsim tables import ./data.csv上传或下载文件sim files upload ./report.pdf、sim files get fileId检索知识库sim knowledge search --query refund policy --kb knowledgeBaseId上传知识文档sim knowledge documents upload knowledgeBaseId ./handbook.pdf管理集成凭据sim credentials --help管理工作区密钥sim secrets list、sim secrets set name命令结构约定命令遵循统一形态sim resource [sub-resource] verb [arguments] [options]多数复数形式的顶层资源名也接受单数拼写因此sim workflow get workflowId与sim workflows get workflowId等价但并非每个命令组都有单数别名以sim --help显示的实际别名alias为准。knowledge另有kb别名。对于工作流、表、文件与知识库list只返回资源本身ls [path]则返回该路径下的资源与直接子文件夹sim workflows ls /Support sim files ls /Reports输出格式与 JSON 输入输出默认输出为易读的表格。当结果要被其他程序消费时使用 JSON 或 YAMLtext则面向 shell 循环制表符分隔、无表头、无颜色可直接交给cut/awk/while readsim workflows list --output json sim logs list --output json | jq -r .[].runId SIM_OUTPUTyaml sim tables get tableId sim configure --set-output json支持的四类输出格式table/json/yaml/text在 config/profile.ts 中定义--output、SIM_OUTPUT与configure --set-output三处共享同一份校验逻辑任何一处给了非法值都会得到一致的报错。JSON 值选项的三种传法JSON 值选项接受内联 JSON、以前缀引用文件、或以-从 stdin 读取sim workflows run workflowId --input {customerId:cus_123} sim workflows run workflowId --input input.json printf %s {customerId:cus_123} | sim workflows run workflowId --input -列表值选项同样支持file与-形式每行一个值。破坏性命令要求显式选择器并追加--yes缺省选择器时不会默认删除全部资源。密钥的安全写入对于密钥类值优先使用提示输入、文件或 stdin避免值出现在 shell 历史与进程列表中sim secrets set API_KEY --scope workspace sim secrets set API_KEY --scope workspace --value secret.txt printf %s $API_KEY | sim secrets set API_KEY --scope workspace --value -从 commands/secrets.ts 看前缀读取的是逐字节原样内容含尾部换行因此写文件时请用printf而非echo若值本身以开头则用转义只去掉第一个。密钥值上限为 65536 字符--scope必选且仅支持workspace/personal--description与--unredacted仅适用于 workspace 级密钥--unredacted与--no-unredacted同时出现会被拒绝。仅修改元数据如--description而省略--value时CLI 不会弹提示输入便于无人值守执行。CI 与自动化无需登录的密钥直连在 CI 中应使用 API key 而非sim loginexport SIM_API_KEYsim_... export SIM_WORKSPACEworkspaceId sim workflows run workflowId --input input.json --output jsonAPI key 在 Sim 的Settings → API keys中创建与吊销并应存放在 CI 提供商的密钥仓库中。注意sim logout只移除本机存储的 key不会吊销该 key——key 在服务端依然有效需要到 Settings 中显式吊销。logout --all则会连设置一起删除整个 profile但当有别的 profile 通过auth_profile共享该登录时会先拒绝删除。环境变量一览变量用途SIM_PROFILE使用的 profileSIM_ENDPOINTSim 部署 URLSIM_API_KEYAPI key通常用于 CISIM_WORKSPACE目标工作区SIM_OUTPUT输出格式table、json、yaml或textSIM_CONFIG_DIRCLI 配置、凭据与更新缓存的基础目录SIM_TIMEOUT_SECONDS单请求超时0表示无限等待SIM_DEBUG向 stderr 打印请求诊断信息SIM_NO_UPDATE_CHECK关闭版本更新提示值得强调的是defaultprofile 在完全没有配置文件时依然有效——这正是 CI 场景仅设置SIM_API_KEY/SIM_WORKSPACE、从不执行sim login被文档化的原因见 config/profile.ts。每日更新检查机制在符合条件的交互式调用中sim会先使用每日缓存再向registry.npmjs.org查询latest标签存在新版本时向 stderr 打印一行提示。机制要点预发布版本安装会被完全跳过缓存默认位于~/.sim跟随SIM_CONFIG_DIR无写入权限时会退化为每次检查并发调用可能产生重复检查注册表请求有1 秒截止时间到期会终止短暂存活的请求进程除配置的注册表 URL 外请求只发送 CLI 自身版本号绝不发送你的 Sim API key若npm_config_registry指向私有镜像会保留其查询字符串包括查询串中的凭据包含用户名/密码 userinfo 的注册表 URL 会被拒绝设置SIM_NO_UPDATE_CHECK1可完全关闭空白注册表值回退到公共默认值非法的非 HTTP(S) 值则 fail-closed。源码级安全设计要点在深入阅读 config/profile.ts 与 auth/device-flow.ts 后可以看到几个值得借鉴的安全设计拒绝跟随重定向无论是 HTTP 客户端还是登录轮询一律redirect: manual。重定向会把 POST 改写为无 body 的 GET并可能把pollSecret或 API key 交给Location指向的任意源对登录轮询的重定向CLI 还会建议修正后的--endpoint可存储性校验前置服务端下发的 key 若含换行或首尾空白会被拒绝存储而非修剪——修剪会存储一个服务器从未签发过的值把响亮的报错变成后续每个命令的 401先写配置再写凭据登录时先写入 endpoint 再写入 key避免key 已落盘、endpoint 缺失导致自托管 key 被发送到默认主机commands/auth.ts错误消息统一消毒所有会进入终端输出的不可信文本都经过redact()防止换行与控制字符把错误信息伪装成 CLI 自身的输出config/profile.ts。许可证Sim CLI 以Apache-2.0协议开源源码位于仓库的 packages/sim-cli 目录package.json与THIRD_PARTY_LICENSES一并随发布产物分发根目录的 README.md 与 AGENTS.md 提供了整个 Sim 仓库的导航入口。【免费下载链接】simSim is the collaborative workspace to build, deploy, and monitor AI agents and workflows. Used by 100,000 builders.项目地址: https://gitcode.com/GitHub_Trending/sim16/sim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表