外观
沉思波应用开放平台
让青年创业者用 AI 开发应用,由平台提供运行所需的基础服务。
第一版提供应用空间、逻辑数据表与增删改查、小额度私有文件、静态产物发布和应用展示审核。数据空间不是独立数据库实例;目前不运行开发者上传的任意后端代码。
登录后创建应用。内测到 2026-11-14:每人 20 个应用,每应用 20 张表、5000 条记录、5MB 私有文件。之后回到 3 个应用、10 张表、1000 条记录。访客在自己的应用里注册登录。商品、帖子、订单这些完整记录,都写进平台的数据表。
我的应用
应用广场
暂无审核通过的应用,欢迎提交第一个真实作品。
管理员展示审核
需网站管理员身份;普通CLI权限不包含审核。
开放平台技能包(opc-skill)
🤖 AI 技能包已开放(开源 MIT)
仓库:cnb.cool/chensibo/opc-skill。 装好技能,你的 AI 助手就会:建应用 → 发布静态站 → 拿你自选的子域(你的前缀.apps.chensibo.cn)→ 用平台数据后端存数据 → 提交审核公开。
新手引导(复制这段话,发给任意 AI 助手——Claude / CodeBuddy / Cursor 都行):
text
请帮我安装并启用「沉思波开放平台」技能:
1. 运行:npx skills add https://cnb.cool/chensibo/opc-skill.git -g -y
2. 装好后告诉我你能帮我做什么(上线网站 / 自选子域 / 数据后端)
以后我只要说「用沉思波把 XX 上线」,你就按技能流程代办。装这一次以后,带上「沉思波」名号就能快速使唤:「用沉思波把我的报名工具上线」「沉思波给我的页面换个苹果风格」——AI 按技能规范代办到底。
老手(一条命令 + 直调 API):
bash
npx skills add https://cnb.cool/chensibo/opc-skill.git -g -y装完技能即含全端点详表(含配额与红线),配合下方 CLI 或 curl 直接干,不用看长文档。
新手(对 AI 说一句话):
「帮我把这个 demo 上线沉思波,子域前缀用 mydemo。」
AI 会按技能流程代办:登录授权 → 建应用 → 发布 → 回你一个可访问的子域;做出来的界面没「人味儿」,让它调 opc-styles 选个风格(143 种,每种带 AI 实现规则)重做一遍。
触发速查:
| 你是谁 | 怎么触发 |
|---|---|
| 老手 | npx skills add … -g -y 安装后,技能常驻 AI 助手;或 CLI:csb app create/list/rows… |
| 新手 | 装技能后对 AI 说一句话;或打开控制台开发者后台(#/apps)网页点着走 |
| 没装技能 | 也可以直接照本页下方「开发者上手」的 CLI / API 步骤手动走 |
开发者上手
CLI 0.8.6 已包含 app 命令,旧版先更新。可安装随包的 chensibo-app Skill,由助手按开发说明操作。
bash
csb login --no-browser --scope apps:read,apps:manage,apps:data,apps:files,apps:deploy
csb login complete
csb app create ./app.json
csb app listapp.json:
json
{"name":"我的报名应用","description":"最小活动报名示例"}创建逻辑表,table.json 为 {"name":"entries","policy":"user"}:
bash
csb app table-create 应用ID ./table.json
csb app rows 应用ID entries
csb app row-add 应用ID entries ./record.json
csb app row-update 应用ID entries 记录ID ./record.json
csb app row-delete 应用ID entries 记录ID confirm
csb app rows-export 应用ID entries ./backup.json
csb app rows-import 应用ID entries ./backup.json
csb app file-put 应用ID ./guide.pdf
csb app files 应用ID
csb app file-get 应用ID 文件ID ./guide.pdf
csb app file-delete 应用ID 文件ID confirm记录文件是普通JSON对象。所有数据访问都由服务端核对身份、应用、表策略及记录归属。所有者管理全表;user策略下普通登录用户只能读写自己的记录;private仅所有者可访问。公开表经应用审核通过后才启用匿名读取。
数据读取支持 limit/offset 分页(每页最多100条,返回含 total),并支持过滤与排序:?done=eq.false&views=gte.100&title=like.周&order=created_at.desc。操作符有 eq / neq / gt / gte / lt / lte / like / in / is;字段名只能是字母、数字、下划线,值一律参数化,不会被拼进 SQL。rows-export 自动翻页导出全表,rows-import 批量写回(受写限频约20条/分钟,CLI 自动等待重试)。整库备份/恢复推荐文件通道:file-put 上传 JSON 备份(支持 txt/png/jpg/pdf/json,单文件256KB),file-get 读回。
命令与权限对照
--scope 按需申请;缺少权限时命令会提示「缺少权限」,补申请即可,令牌本身不用换。
| 命令 | 所需 scope |
|---|---|
app list、tables、files、domains | apps:read |
app create、table-create、domain-add、domain-verify、domain-delete、submit、withdraw | apps:manage |
app rows、row-add、row-update、row-delete、rows-export、rows-import、session、session-revoke | apps:data |
app file-put、file-get、file-delete | apps:files |
app deploy、rollback | apps:deploy |
app gallery | 无需登录 |
apps:submit 不是有效 scope,submit/withdraw 走 apps:manage。运行 csb --help 可查看每个 app 子命令标注的权限;权限不足重新申请用 csb login --no-browser --scope <所需权限>。
应用数据接口
GET/POST /api/platform/apps/:id/tables/:name/rowsPATCH/DELETE /api/platform/apps/:id/tables/:name/rows/:rowIdGET /api/platform/public/apps/:id/tables/:name/rows:仅已审核应用的公开表,最多100条。POST /api/platform/apps/:id/session:用可信登录身份生成1小时的本应用数据令牌;POST .../session/revoke撤销本人的应用会话。
不要把公司登录JWT、CLI管理令牌或数据库口令放进前端代码。应用会话令牌只作用于对应应用数据接口,不用于创建应用、发布或管理文件。前端登录授权组件与SDK仍需集成,不声称已一键打通;外部域名的CORS也需要逐应用验证和配置,不能直接开放所有来源。
前端构建、发布与回滚
bash
# 用你的前端框架先构建静态产物
csb app deploy 应用ID ./dist
csb app rollback 应用ID 版本号
csb app submit 应用ID
csb app gallery支持HTML/CSS/JS及约定静态资源,根目录需有index.html;最大5MB、200文件、单文件512KB。发布复用OPC的版本目录与回滚,不上传.env、node_modules或服务端源码。
发布成功后可提交展示审核,审核通过并存在有效产物时,广场提供受限沙箱预览。预览响应禁止同源身份访问;应用需使用相对静态资源路径(例如Vite的base设为./)。
发布接口成功仍不代表自定义域名已可用。 返回的 /sites/<slug>/ 路径需要现有托管反代配置;正式开放前应使用独立应用域名隔离官网身份和Cookie。首期不自动改DNS、不自动绑定自定义域名或申请证书,不能将客户应用放在官网可信域后就视为完成安全隔离。
文件与额度
文件暂存数据库,支持私有读取、删除,单文件256KB、每应用总5MB。下载接口 GET /api/platform/apps/:id/files/:fileId 需要所有者的相应权限,按附件下载,不公开执行;不是外部存储桶服务。
明确未提供的能力
独立数据库实例、无限额度、开发者云函数、SSR、支付业务逻辑、自定义域名自动化、计费系统和生产可用性承诺尚未提供。活动和应用比赛可以先使用审核后的展示与测试流程,正式公开运行前仍需完善安全、内容、用户数据与运维安排。
开发Skill源码在 chensibo-skill/skills/chensibo-app/。课程和Skill帮助开发,CLI执行操作,平台负责权限检查,不让用户直接拿到服务器或数据库管理员密码。
域名申请与管理
bash
csb app domain-add <应用ID> app.example.com
csb app domains <应用ID>
csb app domain-verify <应用ID> <域名申请ID>
csb app domain-delete <应用ID> <域名申请ID> confirm按照返回值在域名服务商添加 _csb-verify.你的域名 的 TXT 记录后验证。自有域名的解析目标以域名列表接口返回的 originIP / cnameTarget 为准(平台迁移过服务器,不要抄文档里的固定 IP);移除其他指向的AAAA记录并关闭DNS代理。域名验证通过且管理员批准后,平台自动申请证书并配置HTTPS;查询serving_state,online才代表开通完成。失败可由管理员重试或解绑,不会修改域名服务商的DNS记录。
公司管理员通过应用与记忆管理查看资源用量、审核广场、暂停或恢复应用、审批域名和撤销CLI授权。所有管理变更与记录在同一数据库事务中保存。暂停会关闭平台数据接口、发布及沙箱预览,并清除应用会话;平台自动生成的域名路由也在每次访问时检查应用状态,暂停或解绑立即阻断内容。其他历史托管入口仍需单独处理。
平台默认地址
每个应用自动获得 app-<应用UUID去掉连字符>.apps.chensibo.cn 地址,创建响应中的 defaultHostname 可直接交给AI助手。用户不需要添加TXT或购买域名。发布静态文件并提交应用审核,通过后自动申请证书、配置路由;在域名列表查看开通状态。服务器端任务会检查DNS、站点冲突和HTTPS连接,失败时保留原有配置。证书由现有续期服务维护。
浏览器直接接入(csb.js,零依赖)
不用装任何东西,一行 script 就能读写自己的数据:
html
<script src="https://chensibo.cn/apps/csb.js"></script>
<script>
csb.init('你的应用ID')
const { rows, total } = await csb.from('notes').select({
where: { done: 'eq.false' },
order: 'created_at.desc',
limit: 20
})
await csb.from('notes').insert({ title: '周会', done: false })
</script>方法一览
| 方法 | 作用 |
|---|---|
csb.from(表名).select({ where, order, limit, offset }) | 查列表,返回 { rows, total, limit, offset } |
.find(id) | 按 id 取一条 |
.insert(对象) | 写一条,返回新记录 |
.update(id, 对象) | 改一条(整对象覆盖,局部更新请先 find 再合并) |
.remove(id) | 删一条 |
.count(where) | 只取总数 |
csb.files.upload(File) / .list() / .blobUrl(id) / .remove(id) | 文件读写(txt/png/jpg/pdf/json,单文件 ≤256KB) |
csb.session() | 换一个 1 小时的应用会话令牌(已登录时才有意义) |
查询条件怎么写
| 想做的事 | 写法 |
|---|---|
| 等于 | { done: 'eq.false' } 或 { done: false } |
| 不等于 | { status: 'neq.draft' } |
| 数值比较 | { views: 'gte.100' }、{ price: 'lt.9.9' } |
| 包含文字 | { title: 'like.周' } |
| 多值之一 | { tag: ['a', 'b', 'c'] } → in.(a,b,c) |
| 空值 / 非空 | { cover: 'is.null' }、{ cover: 'is.notnull' } |
| 排序 | order: 'views.desc',可多级 'done.asc,created_at.desc' |
字段名只能是字母、数字、下划线;值一律参数化进 SQL,不会被注入。
身份怎么来的
| 场景 | 身份来源 | 读取走哪个口 |
|---|---|---|
| 我们的控制台 / 预览地址(同源) | 自动带站点登录态 csb_token | 应用口,受表策略约束 |
| 未登录访客 | 无 | 公开只读口(表策略必须是 public) |
| 自定义域名部署 | csb.configure({ apiBase: 'https://chensibo.cn', token: '…' }) | 应用口 |
上线路径
浏览器里能跑 ≠ 公网能访问。顺序是:csb app deploy 发布静态产物 → 控制台提交审核 → 通过后用平台默认地址访问 → 需要自有域名再加域名申请。发布接口成功不代表域名已可用。
让 AI 直接写出能跑的代码(提示词底座)
把下面这一整段复制给任意 AI(Cursor / Claude / ChatGPT / 豆包都行),后面接一句需求即可,例如「做一个留言板」「做一个活动报名表」。开新对话又要重贴很烦?见下一节把它装进你的 AI。
text
# 为沉思波应用后端写代码
你是一位擅长原生 JavaScript 与 Web 标准的前端工程师。请生成能在沉思波应用后端直接跑起来的代码,遵守下列约定。
## 硬性约定
1. 不要引入构建工具或框架。只用原生 HTML / CSS / JavaScript(可选用 CDN 的 <script>)。用户复制粘贴就要能用,不是要跑 npm install。
2. 不要自己实现登录。身份来自页面已有的登录态;需要令牌时读 localStorage.getItem('csb_token'),不要发明新的登录流程。
3. 所有数据读写都走 csb.js SDK,不要直连数据库、不要写 SQL。
引入方式:<script src="https://chensibo.cn/apps/csb.js"></script>
4. 初始化固定写法:csb.init('APP_ID'),其中 APP_ID 用常量定义在文件顶部并标注「请替换成你的应用ID」。
5. 读取:await csb.from('表名').select({ where: {...}, order: 'created_at.desc', limit: 20 })
写入:await csb.from('表名').insert({...})
修改:await csb.from('表名').update(id, {...})
删除:await csb.from('表名').remove(id)
6. 表名规则:2–32 位,小写字母开头,只能含小写字母、数字、下划线、连字符。
7. 查询条件是「操作符.值」字符串:eq / neq / gt / gte / lt / lte / like / in / is。不写操作符时默认 eq。
8. 错误处理:所有请求必须 try/catch,非 2xx 时把 error.message 展示给用户,不要吞掉、不要只 console.log。
9. 列表必须分页(默认 20,上限 100),不要一次拉全量。
10. 文件上传只用 csb.files.upload(file),支持 txt / png / jpg / pdf / json,单文件 ≤256KB;不要自己拼 base64 请求。
11. 只做纯前端:允许 html/css/js/json/svg/png/jpg/webp/woff2/txt/xml/ico,不要写服务端代码、不要假设有环境变量。
12. 界面用中文;不用 emoji 当信息载体;空态必须有标题和下一步动作;删除等破坏性操作要二次确认。
13. 代码两空格缩进,函数保持小;能一次讲清就别拆文件。
## 交付格式
- 先给文件清单(路径 + 一句话作用)
- 再逐个文件给完整代码(不要省略号、不要「其余同上」)
- 最后给「怎么验证它跑通了」的三步操作可以直接点单的模板
| 需求 | 涉及的表与字段(建议) |
|---|---|
| 留言板 | messages:name、content、created_at |
| 活动报名 | signups:name、phone、note、created_at |
| 作品展示站 | works:title、cover、desc、link、order |
| 班级通讯录 | contacts:name、role、phone、note |
| 记账本 | entries:amount、category、date、note |
| 需求收集箱 | requests:title、detail、priority、done |
在线编辑:改一行字不用回本地
「静态托管」页有草稿区。点文件名就能在浏览器里改,保存写进草稿,点发布草稿才生成新版本上线——改坏了不点发布就等于没改,想推翻就点放弃改动。
草稿区第一次打开时会从当前线上版本复制一份,所以你看到的就是真实在跑的代码,不是空模板。发布历史照旧可回滚。
同一套文件接口也对 AI 开放,认证走网页端授权:
① AI 申请设备码 POST /api/cli-auth/device {scopes:["apps:read","apps:deploy"]}
② 你打开网页确认 https://chensibo.cn/cli-authorize.html?code=<user_code>
③ AI 换令牌 POST /api/cli-auth/token {device_code}
④ 之后 AI 就能 GET …/site/tree · GET …/site/file?path= · PUT …/site/file · POST …/site/publish也就是说,你可以直接说「把首页标题改成八月账本」,让 AI 自己读文件、精确改那一行、发布新版本——不用下载、改完再上传。令牌 30 天有效,随时能在授权页撤销;我们只授予你确认过的范围。
装进你的 AI(技能文件)
上面那段提示词是「一次性」的:每次开新对话都要重贴。如果你的 AI 支持技能/规则,装一次就长期有效:
- 下载:沉思波应用-技能.md(约 9 千字,含完整接口契约与一个能跑的样例)
- Claude Code / Codex 一类的技能目录:把文件存成
~/.claude/skills/chensibo-app/SKILL.md,之后说「用 chensibo-app 做一个报名表」即可。 - Cursor:把内容放进项目的
.cursor/rules/chensibo-app.mdc。 - 豆包 / ChatGPT / 任意对话:整份贴进去,末尾接一句需求。
零基础用户不用自己填应用 ID:控制台 #/apps → 概览 → 「连应用 ID 复制给 AI」,复制走的就是这份文件,__APP_ID__ 已被替换成你当前的应用。粘给 AI 说一句「做一个留言板」,它写出来的代码直接能传。
技能文件里写死了一条边界:不许用「把密钥写进前端」绕过没有服务端的限制。遇到支付、发信、调第三方密钥这类需求,它会老实告诉你需要人工评估,而不是给你一段跑不通的代码。
托管与售后
数据、文件、静态产物、发布历史都在我们这边,版本可回滚。遇到自己解决不了的问题,去控制台的我的工单提交——从「我的应用 → 概览」页点「遇到问题?提工单」也可以,会自动带上当前应用。
提单时请写清三件事:你在做什么、看到什么、期望是什么。因为应用托管在我们这边,我们能看到服务端日志、发布记录和版本快照,不需要你提供服务器信息或截图环境。答复会出现在「我的工单」里,同时发一条站内消息,不会让你干等。需要代为迭代、定时维护或做版本部署时,也在工单里写明范围。

本页讨论
0 条评论还没有评论,来说第一句。