跳到主要内容

聊天界面 ABI

ctxchat 是参考终端界面。它与运行时是分开的:它 读取记录的/ctx文件并与...交换以换行符分隔的JSON /ctx/agent/<agent>.sock。UI 设置和主题应存放在普通文件中或 环境变量;运行时不需要 UI 数据库。

/ctx/agent/<agent>.sock 可能是所有者授权的运行时符号链接或直接链接 根据部署情况的套接字节点。在假设有一个之前探测挂载的树 实现形式;使用 readlink -f/nc -U 作为运行时敏感探针。

耐用的历史存在于下方 /ctx/home/<uid>/agent/<agent>/session/<session>/: messages.jsonl 包含 消息,events.jsonl 包含事件,latest.md 是一个便捷视图, 并且state是终止状态。

最小化 Bash 客户端:

printf '%s\n' '{"op":"send","id":"ui-1","session":"default","input":"hello"}' |
socat - UNIX-CONNECT:/ctx/agent/coder.sock
printf '%s\n' '{"op":"tsh","id":"ui-tool-1","session":"default","args":["load","bash"]}' |
socat - UNIX-CONNECT:/ctx/agent/coder.sock

最小化 Python 客户端:

import json, socket
s = socket.socket(socket.AF_UNIX)
s.connect("/ctx/agent/coder.sock")
s.sendall((json.dumps({"op": "send", "id": "py-1", "session": "default",
"input": "hello"}) + "\n").encode())
s.shutdown(socket.SHUT_WR)
for line in s.makefile():
frame = json.loads(line)
print(frame)
if frame.get("type") == "done":
break

ctxchat 增加了自动完成、多行粘贴、:tsh 命令、有限的 @path 以及@history:N引用和剪贴板适配器。引用是提示 仅限上下文,绝不授予文件系统或 工具权限。