feat: 添加时区设置功能,默认时区改为 CST-8
- 新增 set_timezone LLM 工具,支持通过对话设置时区 - 新增 set_timezone / timezone_show CLI 命令 - 默认时区从 PST 改为 CST-8(中国标准时间 UTC+8) - 支持 POSIX 格式和 18 个城市名映射(Asia/Shanghai 等) - 时区通过 NVS 持久化存储(system_config namespace) - config_show 中显示当前时区配置 - 更新 changelog.md 和 taolun.md 文档
This commit is contained in:
@@ -14,8 +14,12 @@ static size_t append_file(char *buf, size_t size, size_t offset, const char *pat
|
||||
FILE *f = fopen(path, "r");
|
||||
if (!f) return offset;
|
||||
|
||||
if (header && offset < size - 1) {
|
||||
offset += snprintf(buf + offset, size - offset, "\n## %s\n\n", header);
|
||||
if (offset >= size) return offset;
|
||||
|
||||
if (header) {
|
||||
int ret = snprintf(buf + offset, size - offset, "\n## %s\n\n", header);
|
||||
if (ret > 0) offset += (size_t)ret;
|
||||
if (offset >= size) { offset = size - 1; buf[offset] = '\0'; fclose(f); return offset; }
|
||||
}
|
||||
|
||||
size_t n = fread(buf + offset, 1, size - offset - 1, f);
|
||||
@@ -79,23 +83,35 @@ esp_err_t context_build_system_prompt(char *buf, size_t size)
|
||||
/* Long-term memory */
|
||||
char mem_buf[4096];
|
||||
if (memory_read_long_term(mem_buf, sizeof(mem_buf)) == ESP_OK && mem_buf[0]) {
|
||||
off += snprintf(buf + off, size - off, "\n## Long-term Memory\n\n%s\n", mem_buf);
|
||||
if (off < size) {
|
||||
int ret = snprintf(buf + off, size - off, "\n## Long-term Memory\n\n%s\n", mem_buf);
|
||||
if (ret > 0) off += (size_t)ret;
|
||||
if (off >= size) off = size - 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Recent daily notes (last 3 days) */
|
||||
char recent_buf[4096];
|
||||
if (memory_read_recent(recent_buf, sizeof(recent_buf), 3) == ESP_OK && recent_buf[0]) {
|
||||
off += snprintf(buf + off, size - off, "\n## Recent Notes\n\n%s\n", recent_buf);
|
||||
if (off < size) {
|
||||
int ret = snprintf(buf + off, size - off, "\n## Recent Notes\n\n%s\n", recent_buf);
|
||||
if (ret > 0) off += (size_t)ret;
|
||||
if (off >= size) off = size - 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Skills */
|
||||
char skills_buf[2048];
|
||||
size_t skills_len = skill_loader_build_summary(skills_buf, sizeof(skills_buf));
|
||||
if (skills_len > 0) {
|
||||
off += snprintf(buf + off, size - off,
|
||||
"\n## Available Skills\n\n"
|
||||
"Available skills (use read_file to load full instructions):\n%s\n",
|
||||
skills_buf);
|
||||
if (off < size) {
|
||||
int ret = snprintf(buf + off, size - off,
|
||||
"\n## Available Skills\n\n"
|
||||
"Available skills (use read_file to load full instructions):\n%s\n",
|
||||
skills_buf);
|
||||
if (ret > 0) off += (size_t)ret;
|
||||
if (off >= size) off = size - 1;
|
||||
}
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "System prompt built: %d bytes", (int)off);
|
||||
|
||||
Reference in New Issue
Block a user